ARP 请求本身

ARP 请求本身

我有两个 IP 分配给同一个接口(主机 A):

3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
link/ether a4:bf:01:24:f8:7c brd ff:ff:ff:ff:ff:ff
inet 10.10.200.22/24 brd 10.10.100.255 scope global eth1
   valid_lft forever preferred_lft forever
inet 10.10.200.155/32 scope global eth1
   valid_lft forever preferred_lft forever

并且有些服务正在监听10.10.200.155:80。当我尝试 telnet 端口 80 时,连接挂起(源地址10.10.201.2,主机 B)。tcpdump主机 A 上显示了类似以下内容的内容(重复):

# tcpdump -n -i any dst 10.10.200.155
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on any, link-type LINUX_SLL (Linux cooked), capture size 262144 bytes
21:52:16.894558 IP 10.10.201.2.60262 > 10.10.200.155.80: Flags [S], seq 1239565567, win 29200, options [mss 1460,sackOK,TS val 1965969834 ecr 0,nop,wscale 7], length 0
21:52:17.893363 ARP, Request who-has 10.10.200.155 tell 10.10.200.155, length 28
21:52:17.893732 IP 10.10.201.2.60262 > 10.10.200.155.80: Flags [S], seq 1239565567, win 29200, options [mss 1460,sackOK,TS val 1965970084 ecr 0,nop,wscale 7], length 0
21:52:18.893319 ARP, Request who-has 10.10.200.155 tell 10.10.200.155, length 28
21:52:19.893374 IP 10.10.200.155 > 10.10.200.155: ICMP host 10.10.201.2 unreachable, length 68
21:52:19.893385 IP 10.10.200.155 > 10.10.200.155: ICMP host 10.10.201.2 unreachable, length 68
21:52:19.893393 IP 10.10.200.155 > 10.10.200.155: ICMP host 10.10.201.2 unreachable, length 68
21:52:19.893400 IP 10.10.200.155 > 10.10.200.155: ICMP host 10.10.201.2 unreachable, length 68
21:52:19.897746 IP 10.10.201.2.60262 > 10.10.200.155.80: Flags [S], seq 1239565567, win 29200, options [mss 1460,sackOK,TS val 1965970585 ecr 0,nop,wscale 7], length 0

一些通信已到达10.10.200.155,但有奇怪的(?)ARP 请求来自10.10.200.155自身,这正常吗?后台没有其他流量,因此所有这些数据包都是在 telnet 上生成的。主机 A 上tcpdump没有显示任何内容tcpdump -n -i any dst 10.10.201.2。这些地址的路由:

10.10.200.0/24 dev eth1  proto kernel  scope link  src 10.10.200.22 
10.10.201.2 via 10.10.200.155 dev eth1

您知道为什么流量无法传回吗10.10.201.2

答案1

您的第二个 IP 似乎有误。您正在分配另一个具有不同子网掩码 (/32) 的 IP。

分配具有相同子网掩码的辅助 IP。评论中提供了示例:使用“ip”命令在 CentOS/RHEL 6 中重启后保留 IP 地址别名

答案2

看来我找到了一些临时解决方法。在将新 IP 添加到接口后,我必须重新flush关联路由并再次添加它。然后通信就可以完美地工作了。有人知道为什么会这样吗?

答案3

我遇到过这种情况,只不过方式略有不同,根本原因是我的“ip route add”命令有误,我没有执行“ip route add via<远程网关 IP 地址>dev <本地接口>'我做了'ip route add via<本地接口 IP 地址>dev <local interface>'。我不是说这是你的问题,只是检查一下。

相关内容