我看到了一些奇怪的行为,希望有人能向我解释为什么会发生这种情况:
我有一个带有两个物理接口的Linux机器:
arnout@arnout-VirtualBox〜$ ifconfig eth0 链路封装:以太网 HWaddr 08:00:27:46:ee:f0 inet 地址:10.0.20.58 Bcast:10.0.23.255 掩码:255.255.252.0 inet6 地址:fe80::a00:27ff:fe46:eef0/64 范围:链接 上行广播运行多播 MTU:1500 度量:1 RX 数据包:5942438 错误:0 丢弃:1 超限:0 帧:0 TX 数据包:2012142 错误:0 丢弃:0 超限:0 载波:0 碰撞:0 txqueuelen:1000 RX字节数:3291019944(3.2 GB)TX字节数:343769813(343.7 MB) eth1 链路封装:以太网 HWaddr 08:00:27:64:eb:76 inet 地址:1.1.1.1 Bcast:1.1.1.255 掩码:255.255.255.0 inet6 地址:fe80::a00:27ff:fe64:eb76/64 范围:链接 上行广播运行多播 MTU:1500 度量:1 RX 数据包:0 错误:0 丢弃:0 溢出:0 帧:0 TX 数据包:651 错误:0 丢弃:0 超限:0 载波:0 碰撞:0 txqueuelen:1000 RX 字节:0 (0.0 B) TX 字节:169802 (169.8 KB) lo 链路封装:本地环回 inet 地址:127.0.0.1 掩码:255.0.0.0 inet6 地址:::1/128 范围:主机 上行环回运行 MTU:16436 度量:1 RX 数据包:1107 错误:0 丢弃:0 超限:0 帧:0 TX 数据包:1107 错误:0 丢弃:0 超限:0 载波:0 碰撞:0 txqueuelen:0 RX 字节:92180 (92.1 KB) TX 字节:92180 (92.1 KB) arnout@arnout-VirtualBox〜$ uname-a Linux arnout-VirtualBox 3.5.0-17-generic #28-Ubuntu SMP 2012 年 10 月 9 日星期二 19:32:08 UTC i686 i686 i686 GNU/Linux
如果我 ping 1.1.1.2,而 ARP 缓存中没有这个地址(因为它不存在),我可以看到一个正常的 ARP 数据包:
“谁有 1.1.1.2,告诉 1.1.1.1”
但是,当我使用 eth0 的源地址 ping 时(ping 1.1.1.1 -I 10.0.20.58),该 IP 实际上被放入了 ARP 请求 IP 中!
“谁有 1.1.1.2,告诉10.0.20.58“
对我来说,这完全没有意义。此外,主机 1.1.1.2(如果存在)可能会知道 10.0.20.58 的 MAC 地址是 1.1.1.1,这是错误的。(可能不会发生太多糟糕的事情)
如果有人知道为什么 Linux 会这样做,请分享:)