从不同接口 ping 时,Linux ARP 源地址错误

从不同接口 ping 时,Linux ARP 源地址错误

我看到了一些奇怪的行为,希望有人能向我解释为什么会发生这种情况:

我有一个带有两个物理接口的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 会这样做,请分享:)

相关内容