当前位置:首页 > 综合 > 搭建基础网络及抓包分析实验总结 正文

搭建基础网络及抓包分析实验总结

来源:烟消火灭网   作者:娱乐   时间:2026-10-17 05:52:53

实验环境搭在一台旧笔记本上,搭建装了Ubuntu 22.04,基础及抓结用VirtualBox开了三台虚拟机。网络一台当路由器,包分两台当终端。析实网卡模式全设成Internal Network,验总名字统一叫"labnet"。搭建这么做的基础及抓结好处是流量不会跑到宿主机外面去,抓包干净,网络没有杂七杂八的包分广播干扰。

路由器那台配了两块网卡,析实enp0s3接左边终端,验总enp0s8接右边。搭建IP规划很随意:左网段192.168.10.0/24,基础及抓结右网段192.168.20.0/24。网络终端A的地址是10.1,终端B是20.1。路由器两个接口分别是10.254和20.254。没配DHCP,全手工写死,省得排查地址租约的麻烦。

打开转发之前,先确认一件事:Linux默认是不转发IP包的。cat /proc/sys/net/ipv4/ip_forward 返回0。改成1之后,终端A ping 终端B,通了。这个瞬间其实没什么戏剧性,但如果你之前忘了开转发,看到的会是"Destination Host Unreachable",然后你会花二十分钟怀疑网线、怀疑VirtualBox、怀疑人生。

抓包用的是tcpdump,没上Wireshark图形界面。在路由器上跑:tcpdump -i enp0s3 -nn icmp。终端A那边ping 192.168.20.1。屏幕上立刻刷出echo request和echo reply。有意思的地方在于,request的源IP是192.168.10.1,目的IP是192.168.20.1,但它在enp0s3上被抓到时,目的MAC地址写的是路由器enp0s3的MAC。到了enp0s8再抓一次,源MAC变成了路由器enp0s8的MAC,源IP没变。这就是逐跳转发最直观的证据——IP层端到端不动,链路层每跳都换。

ARP也值得看一眼。在终端A上清掉ARP缓存,再ping。tcpdump里先出现ARP广播:who-has 192.168.10.254 tell 192.168.10.1。路由器回了自己的MAC。然后ICMP才出去。这个顺序说明了一个基本事实:没有二层地址解析,三层包连第一跳都迈不出去。

有个细节让我多停了几秒。终端A ping终端B的时候,如果在终端A上同时抓包,你会看到echo request和echo reply,看起来好像A和B在直接对话。但如果在路由器enp0s3上抓,你只看到request从A来,reply从路由器回去。enp0s8上则相反。每个接口只看到单向的ICMP消息。这个视角差异挺重要——同一个通信过程,站在不同位置看到的东西完全不一样。抓包位置选错了,分析结论就会偏。

后来我又加了一条静态路由做测试。在终端A上写:ip route add 192.168.30.0/24 via 192.168.10.254。路由器上并没有30网段,ping过去自然不通。但tcpdump显示ICMP request确实到了路由器,路由器回了一个ICMP redirect或者host unreachable。这说明路由表查不到条目时,包不会凭空消失,设备会给你反馈。反馈的形式取决于设备类型和配置,Linux默认发destination unreachable。

整个实验没用到什么高级工具,配置命令加起来不到二十行。但把转发、ARP、逐跳MAC改写、ICMP差错这几个点串起来之后,网络分层就不再是课本上的图了。你亲眼看到数据包在每层被拆开、改头、再封上。这种观察比背十遍OSI模型管用。

如果重做一次,我会在路由器上同时开三个tcpdump窗口,分别盯enp0s3、enp0s8和any接口。any接口抓到的包会带VLAN tag或者方向标记,对比着看更清楚。另外,把ICMP换成TCP握手再抓一轮,能观察到NAT和连接跟踪的行为,那是另一个话题了。

标签:

责任编辑:百科