什么时候不会生成 ARP 回复?

WoJ*_*WoJ 4 networking arp linux-networking

问题总结:a pingfromclient不去rpi1,它的 ARP 呼叫不接听srv

在此处输入图片说明

  • host0tap0通过桥接br0
  • vpninlan0是两个独立的接口。
  • 允许接口之间的所有流量srv(启用 IP 转发,并且我在rpi1此处不可见的其他接口之间成功进行了流量,其中一个是 Internet 的网关)

详细信息client成功 ping 自身 ( 10.20.1.2) 10.20.1.110.20.1.25410.10.10.254。尝试 ping 时10.10.10.11

root@client:~# ping 10.10.10.11
PING 10.10.10.11 (10.10.10.11) 56(84) bytes of data.
From 10.20.1.1: icmp_seq=2 Redirect Host(New nexthop: 10.10.10.11)
From 10.20.1.1 icmp_seq=1 Destination Host Unreachable
From 10.20.1.2 icmp_seq=3 Destination Host Unreachable
From 10.20.1.2 icmp_seq=4 Destination Host Unreachable
From 10.20.1.2 icmp_seq=5 Destination Host Unreachable
Run Code Online (Sandbox Code Playgroud)

请注意From10.20.1.1和之间的翻盖10.20.1.2

运行tcpdumpsrv(ping 能力丢失的地方)我看到 ARP 请求,但没有回复:

root@srv ~# tcpdump -i vpnin -nn
17:10:54.463072 ARP, Request who-has 10.10.10.11 tell 10.20.1.1, length 28
17:10:55.459489 ARP, Request who-has 10.10.10.11 tell 10.20.1.1, length 28
17:10:56.459459 ARP, Request who-has 10.10.10.11 tell 10.20.1.1, length 28
17:10:56.473683 ARP, Request who-has 10.10.10.11 tell 10.20.1.2, length 28
17:10:57.469788 ARP, Request who-has 10.10.10.11 tell 10.20.1.2, length 28
17:10:58.469608 ARP, Request who-has 10.10.10.11 tell 10.20.1.2, length 28
Run Code Online (Sandbox Code Playgroud)

再次,两者10.20.1.110.20.1.2请求答案。

上的 ARP 表srv确实有答案

root@srv ~# arp -a
(...)
rpi1.10.in-addr.arpa (10.10.10.11) at f4:f2:6d:09:35:1b [ether] on lan0
Run Code Online (Sandbox Code Playgroud)

可能是什么原因

  • 因为没有回复?
  • 对于10.20.1.1和之间的这种奇怪的切换10.20.1.2

Ron*_*pin 5

ARP 只能在同一个局域网(二层广播域)上工作,因为 ARP 请求是广播。广播不跨越第 3 层边界。MAC地址是二层地址,它们只在同一个二层广播域中有意义,甚至可见。

希望将流量发送到不同的第 3 层网络的主机会将流量发送到其配置的网关的第 2 层地址,如有必要,使用 ARP 查找其配置的网关的第 2 层地址。然后,配置的网关负责将流量传输到通往目的地的路径上的下一跳。

如果应该将流量路由到不同的网络,则需要将主机上的网关配置为主机所在的第 3 层网络中的地址,即网络相遇的点 ( srv)。配置的网关client应该是10.20.1.254,配置的网关rp1应该是10.10.10.254