问题概述:一个ping
来自 的地址client
没有到达rpi1
,它的 ARP 调用在 处没有得到答复srv
。
host0
并由tap0
桥接br0
。vpnin
和lan0
是两个独立的接口。- 允许接口之间的所有流量
srv
(IP 转发已启用,并且我已成功传输了rpi1
此处未显示的其他接口之间的流量,其中包括 Internet 网关)
细节:client
成功 ping 自身 ( 10.20.1.2
)、10.20.1.1
和10.20.1.254
。10.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
请注意和From
之间的中的翻转。10.20.1.1
10.20.1.2
当运行时tcpdump
(srv
失去 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
再次,两者10.20.1.1
并10.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
原因可能是什么
- 因为没有回复?
10.20.1.1
以及和之间这种奇怪的切换10.20.1.2
?
答案1
ARP 仅在同一个 LAN(第 2 层广播域)内有效,因为 ARP 请求是一种广播。广播不会跨越第 3 层边界。MAC 地址是第 2 层地址,并且它们仅在同一个第 2 层广播域内才有意义,甚至可见。
希望将流量发送到不同第 3 层网络的主机将流量发送到其配置网关的第 2 层地址,并在必要时使用 ARP 查找其配置网关的第 2 层地址。然后,配置网关负责将流量发送到通往目的地的路径上的下一跳。
如果要将流量路由到其他网络,则需要将主机上的网关配置为主机所在的三层网络中的地址,即网络交汇点 ( srv
)。 的配置网关client
应为10.20.1.254
, 的配置网关rp1
应为10.10.10.254
。