原文链接:​​https://www.cnblogs.com/CooperXia-847550730/p/11728542.html​

软路由tcpdump抓包详解:多网卡同时抓包_tcpdump抓包

我的软路由有四张千兆网卡。其中Eth3是WAN口,Eth012是三个LAN口,Eth0接网线连接一台PC,Eth1连接一台无线路由器,Eth2未使用。

进入软路由系统中用ifconfig 命令查看(回环地址省略):

软路由tcpdump抓包详解:多网卡同时抓包_tcpdump抓包_02

(这边dropped是路由器丢弃的包,overruns的是内存不够丢弃的包)

可以看到有eth0、eth1、eth2、eth3三张网卡

Br-lan是网卡桥接,把eth0、eth1、eth2三张网卡桥接成一个网口,可以看到地址是192.168.100.1 也是网关的入口。

Brctl show 可以显示具体的桥接信息

软路由tcpdump抓包详解:多网卡同时抓包_tcpdump抓包_03


Eth3 是连接外网的wan口,地址也是公网IP:121.124.52.135


软路由抓包

软路由上可以直接使用tcpdump命令抓包,可以对于每一张网卡单独抓包,

示例:tcpdump -i br-lan -w ./test.pcap,即为抓取通过eth012三张网卡的包。



现在同时抓eth0和eth3的方法是:

tcpdump -i eth3 -w ./test5en3wlan.pcap& tcpdump -i eth0 -w ./test6en0lan.pcap&

(这边抓包的时候打错了是wan不是wlan)

软路由tcpdump抓包详解:多网卡同时抓包_tcpdump抓包_04

记住不用使用;&& ||等方法,直接后跟&表示后台运行,然后空格就可以并行执行了,两个命令会一起后台执行。

结束抓包的方法不够优雅,需要kill掉两个进程,可以通过pid或者用jobs查看工作序号,然后用kill %num的方式结束抓包。

软路由tcpdump抓包详解:多网卡同时抓包_tcpdump抓包_05



数据包分析

同时对wan和lan1口抓包,lan1口连接我的PC,访问了youtube几分钟。

可以看到以太网上,wan口抓到的数据有非常多的设备,lan口只有我PC一台设备

软路由tcpdump抓包详解:多网卡同时抓包_tcpdump抓包_06


过滤掉其他流量,看下从wan口走到lan1的数据:

软路由tcpdump抓包详解:多网卡同时抓包_tcpdump抓包_07

发现wlan口的数据是youtube服务器和wan口ip的连接,

而抓取lan口的数据看到TCP连接是我的代理服务器和我主机的ip的连接。



有兴趣的小伙伴可以拿到6次测试的数据,github不让传大文件,所以百度云了:

链接:https://pan.baidu.com/s/1s1VRG0hLwEXadNBs1Z77Fg 

提取码:y0ly


六次抓包测试注释:

test1brlan.pcap 用上图中连接无线路由器的手机测试在br-lan网口抓的数据包

test2brlan.pcap 用上图中连接无线路由器的PC测试在br-lan网口抓的数据包

test3brlan.pcap 用上图中连接软路由的PC测试在br-lan网口抓的数据包

test4en3wlan.pcap 用上图中连接软路由的PC测试在wan网口抓的数据包

test5en3wlan.pcap 用上图中连接软路由的PC测试在wan网口抓的数据包

test6en0lan.pcap 用上图中连接软路由的PC测试在eth0(LAN1接口)网口抓的数据包


注:1. 其中test1-4是图片网页,5-6是youtube视频

2. wlan全都是当时写错了,应该是wan