单臂路由实现三层路由数据包转发及数据包格式分析

2024-02-12 04:18

本文主要是介绍单臂路由实现三层路由数据包转发及数据包格式分析,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!


在7242+8328的板子上面,WAN口:port3,LAN口:port2,port4。其端口连接可参见我以前的文章。
eth0上面的ip地址动态获取,用作外部WAN上网的接口,与此通信的数据包不加VLAN头。
eth0.2 :用作内部LAN接口.IP地址固定,数据包经过LAN口时自动添加或者去掉VLAN头。
WAN和LAN之间是不通的。
说明:192.168.100.244为WAN口所接PC IP,192.168.1.20为LAN口所接PC IP。
---------------------------R8327 switch-配置命令如下-----------------------------------------------------
ifconfig eth0 up
ssdk_sh  vlan entry create 2 
ssdk_sh portVlan ingress set 0 fallback
ssdk_sh portVlan ingress set 2 fallback
ssdk_sh portVlan ingress set 4 fallback
ssdk_sh vlan entry append 2 2 0,2,4 0,2,4 default default default default
ssdk_sh portvlan defaultCVid set 2 2
ssdk_sh portvlan defaultCVid set 4 2
ssdk_sh portvlan egress set 0 untagged
ssdk_sh portvlan egress set 2 untagged
ssdk_sh portvlan egress set 4 untagged
上面的命令是对AR8327 switch进行的有关VLAN方面的配置。即port0,port2,port4由于同一个VLAN,其VLAN
ID=2。数据包出端口时不带VLAN ID。

---------------------------主CPU AR7242-配置命令如下-----------------------------------------------------
vconfig add eth0 2
ifconfig eth0.2 hw ether 00:03:7F:FF:FF:F2 up

ifconfig eth0.2 192.168.1.2
udhcpc -i eth0 -p /var/run/udhcpc_wan.pid -s /etc/udhcpc.script 
iptables -t nat -A POSTROUTING  -o eth0 -j MASQUERADE 
echo 1 > /proc/sys/net/ipv4/ip_forward 

主要是通过vconfig添加VLAN及配置dhcpc及三层数据包经过时的NAT规则。

------------------------------------测试1: dhcp上网-------------------------------------------
/ # ifconfig 
eth0      Link encap:Ethernet  HWaddr 00:03:7F:FF:FF:FF  
          inet addr:192.168.100.3  Bcast:192.168.100.255  Mask:255.255.255.0
          inet6 addr: fe80::203:7fff:feff:ffff/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:9 errors:0 dropped:0 overruns:0 frame:0
          TX packets:12 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:2382 (2.3 KiB)  TX bytes:2012 (1.9 KiB)


eth0.2    Link encap:Ethernet  HWaddr 00:03:7F:FF:FF:F2  
          inet addr:192.168.1.2  Bcast:192.168.1.255  Mask:255.255.255.0
          inet6 addr: fe80::203:7fff:feff:fff2/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:2 errors:0 dropped:0 overruns:0 frame:0
          TX packets:6 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:734 (734.0 B)  TX bytes:492 (492.0 B)


lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)
WAN接PC1,PC1的ip地址为:192.168.100.244,在PC1上面ping 192.168.100.3 ,在7242+8328的板子eth0上面抓包如下:
00:02:25.389238 IP (tos 0x0, ttl 128, id 61845, offset 0, flags [none], proto ICMP (1), length 60)
    192.168.100.244 > 192.168.100.3: ICMP echo request, id 1280, seq 256, length 40
        0x0000:  0003 7fff ffff e839 3538 9e4a 0800 4500
        0x0010:  003c f195 0000 8001 fee2 c0a8 64f4 c0a8
        0x0020:  6403 0800 475c 0500 0100 6162 6364 6566
        0x0030:  6768 696a 6b6c 6d6e 6f70 7172 7374 7576
        0x0040:  7761 6263
00:02:25.389421 IP (tos 0x0, ttl 64, id 15814, offset 0, flags [none], proto ICMP (1), length 60)
    192.168.100.3 > 192.168.100.244: ICMP echo reply, id 1280, seq 256, length 40
        0x0000:  e839 3538 9e4a 0003 7fff ffff 0800 4500
        0x0010:  003c 3dc6 0000 4001 f2b2 c0a8 6403 c0a8
        0x0020:  64f4 0000 4f5c 0500 0100 6162 6364 6566
        0x0030:  6768 696a 6b6c 6d6e 6f70 7172 7374 7576
        0x0040:  7761 6263
有上面的数据可知,与pc1(主机或者服务器)通信时没有VLAN头。
---------------------------------------------------------------------------------------------
LAN口接PC2,PC2的ip地址为:192.168.1.20,在PC2上面ping 192.168.1.2 ,在7242+8328的板子eth0上面抓包如下:
00:08:03.487572 IP (tos 0x0, ttl 128, id 253, offset 0, flags [none], proto ICMP (1), length 60)
    192.168.1.20 > 192.168.1.2: ICMP echo request, id 512, seq 9728, length 40
        0x0000:  0003 7fff fff2 001a 4b8d 0305 8100 0002
        0x0010:  0800 4500 003c 00fd 0000 8001 b65d c0a8
        0x0020:  0114 c0a8 0102 0800 255c 0200 2600 6162
        0x0030:  6364 6566 6768 696a 6b6c 6d6e 6f70 7172
        0x0040:  7374 7576
00:08:03.487725 IP (tos 0x0, ttl 64, id 50979, offset 0, flags [none], proto ICMP (1), length 60)
    192.168.1.2 > 192.168.1.20: ICMP echo reply, id 512, seq 9728, length 40
        0x0000:  001a 4b8d 0305 0003 7fff fff2 8100 0002
        0x0010:  0800 4500 003c c723 0000 4001 3037 c0a8
        0x0020:  0102 c0a8 0114 0000 2d5c 0200 2600 6162
        0x0030:  6364 6566 6768 696a 6b6c 6d6e 6f70 7172
        0x0040:  7374 7576
有上面的数据可知,与pc1(主机或者服务器)通信时有VLAN头其VLAN ID=2。        
---------------------------------------------------------------------------------------------        
同时在PC2上面ping 192.168.100.244,在eth0抓包如下:

00:15:34.482979 IP (tos 0x0, ttl 128, id 951, offset 0, flags [none], proto ICMP (1), length 60)
    192.168.1.20 > 192.168.100.244: ICMP echo request, id 512, seq 42497, length 40
        0x0000:  0003 7fff fff2 001a 4b8d 0305 8100 0002
        0x0010:  0800 4500 003c 03b7 0000 8001 4fb1 c0a8
        0x0020:  0114 c0a8 64f4 0800 a55a 0200 a601 6162
        0x0030:  6364 6566 6768 696a 6b6c 6d6e 6f70 7172
        0x0040:  7374 7576
00:15:34.483077 IP (tos 0x0, ttl 127, id 951, offset 0, flags [none], proto ICMP (1), length 60)
    192.168.100.3 > 192.168.100.244: ICMP echo request, id 512, seq 42497, length 40
        0x0000:  e839 3538 9e4a 0003 7fff ffff 0800 4500
        0x0010:  003c 03b7 0000 7f01 edc1 c0a8 6403 c0a8
        0x0020:  64f4 0800 a55a 0200 a601 6162 6364 6566
        0x0030:  6768 696a 6b6c 6d6e 6f70 7172 7374 7576
        0x0040:  7761 6263
00:15:34.483393 IP (tos 0x0, ttl 128, id 64339, offset 0, flags [none], proto ICMP (1), length 60)
    192.168.100.244 > 192.168.100.3: ICMP echo reply, id 512, seq 42497, length 40
        0x0000:  0003 7fff ffff e839 3538 9e4a 0800 4500
        0x0010:  003c fb53 0000 8001 f524 c0a8 64f4 c0a8
        0x0020:  6403 0000 ad5a 0200 a601 6162 6364 6566
        0x0030:  6768 696a 6b6c 6d6e 6f70 7172 7374 7576
        0x0040:  7761 6263
00:15:34.483458 IP (tos 0x0, ttl 127, id 64339, offset 0, flags [none], proto ICMP (1), length 60)
    192.168.100.244 > 192.168.1.20: ICMP echo reply,id 512, seq 42497, length 40
        0x0000:  001a 4b8d 0305 0003 7fff fff2 8100 0002
        0x0010:  0800 4500 003c fb53 0000 7f01 5914 c0a8
        0x0020:  64f4 c0a8 0114 0000 ad5a 0200 a601 6162
        0x0030:  6364 6566 6768 696a 6b6c 6d6e 6f70 7172
        0x0040:  7374 7576

上面的数据包可以知道,一个内网的数据包经过NAT之后,一个ping包有“俩个去和俩个回”数据包。

这篇关于单臂路由实现三层路由数据包转发及数据包格式分析的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/701651

相关文章

Flutter实现文字镂空效果的详细步骤

《Flutter实现文字镂空效果的详细步骤》:本文主要介绍如何使用Flutter实现文字镂空效果,包括创建基础应用结构、实现自定义绘制器、构建UI界面以及实现颜色选择按钮等步骤,并详细解析了混合模... 目录引言实现原理开始实现步骤1:创建基础应用结构步骤2:创建主屏幕步骤3:实现自定义绘制器步骤4:构建U

SpringBoot中四种AOP实战应用场景及代码实现

《SpringBoot中四种AOP实战应用场景及代码实现》面向切面编程(AOP)是Spring框架的核心功能之一,它通过预编译和运行期动态代理实现程序功能的统一维护,在SpringBoot应用中,AO... 目录引言场景一:日志记录与性能监控业务需求实现方案使用示例扩展:MDC实现请求跟踪场景二:权限控制与

Android实现定时任务的几种方式汇总(附源码)

《Android实现定时任务的几种方式汇总(附源码)》在Android应用中,定时任务(ScheduledTask)的需求几乎无处不在:从定时刷新数据、定时备份、定时推送通知,到夜间静默下载、循环执行... 目录一、项目介绍1. 背景与意义二、相关基础知识与系统约束三、方案一:Handler.postDel

慢sql提前分析预警和动态sql替换-Mybatis-SQL

《慢sql提前分析预警和动态sql替换-Mybatis-SQL》为防止慢SQL问题而开发的MyBatis组件,该组件能够在开发、测试阶段自动分析SQL语句,并在出现慢SQL问题时通过Ducc配置实现动... 目录背景解决思路开源方案调研设计方案详细设计使用方法1、引入依赖jar包2、配置组件XML3、核心配

Java NoClassDefFoundError运行时错误分析解决

《JavaNoClassDefFoundError运行时错误分析解决》在Java开发中,NoClassDefFoundError是一种常见的运行时错误,它通常表明Java虚拟机在尝试加载一个类时未能... 目录前言一、问题分析二、报错原因三、解决思路检查类路径配置检查依赖库检查类文件调试类加载器问题四、常见

Java注解之超越Javadoc的元数据利器详解

《Java注解之超越Javadoc的元数据利器详解》本文将深入探讨Java注解的定义、类型、内置注解、自定义注解、保留策略、实际应用场景及最佳实践,无论是初学者还是资深开发者,都能通过本文了解如何利用... 目录什么是注解?注解的类型内置注编程解自定义注解注解的保留策略实际用例最佳实践总结在 Java 编程

一文教你Python如何快速精准抓取网页数据

《一文教你Python如何快速精准抓取网页数据》这篇文章主要为大家详细介绍了如何利用Python实现快速精准抓取网页数据,文中的示例代码简洁易懂,具有一定的借鉴价值,有需要的小伙伴可以了解下... 目录1. 准备工作2. 基础爬虫实现3. 高级功能扩展3.1 抓取文章详情3.2 保存数据到文件4. 完整示例

使用Python实现IP地址和端口状态检测与监控

《使用Python实现IP地址和端口状态检测与监控》在网络运维和服务器管理中,IP地址和端口的可用性监控是保障业务连续性的基础需求,本文将带你用Python从零打造一个高可用IP监控系统,感兴趣的小伙... 目录概述:为什么需要IP监控系统使用步骤说明1. 环境准备2. 系统部署3. 核心功能配置系统效果展

Python实现微信自动锁定工具

《Python实现微信自动锁定工具》在数字化办公时代,微信已成为职场沟通的重要工具,但临时离开时忘记锁屏可能导致敏感信息泄露,下面我们就来看看如何使用Python打造一个微信自动锁定工具吧... 目录引言:当微信隐私遇到自动化守护效果展示核心功能全景图技术亮点深度解析1. 无操作检测引擎2. 微信路径智能获

使用Java将各种数据写入Excel表格的操作示例

《使用Java将各种数据写入Excel表格的操作示例》在数据处理与管理领域,Excel凭借其强大的功能和广泛的应用,成为了数据存储与展示的重要工具,在Java开发过程中,常常需要将不同类型的数据,本文... 目录前言安装免费Java库1. 写入文本、或数值到 Excel单元格2. 写入数组到 Excel表格