WoJ*_*WoJ 4 networking arp linux-networking
问题总结:a pingfromclient不去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
Run Code Online (Sandbox Code Playgroud)
请注意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
Run Code Online (Sandbox Code Playgroud)
再次,两者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
Run Code Online (Sandbox Code Playgroud)
可能是什么原因
10.20.1.1和之间的这种奇怪的切换10.20.1.2?ARP 只能在同一个局域网(二层广播域)上工作,因为 ARP 请求是广播。广播不跨越第 3 层边界。MAC地址是二层地址,它们只在同一个二层广播域中有意义,甚至可见。
希望将流量发送到不同的第 3 层网络的主机会将流量发送到其配置的网关的第 2 层地址,如有必要,使用 ARP 查找其配置的网关的第 2 层地址。然后,配置的网关负责将流量传输到通往目的地的路径上的下一跳。
如果应该将流量路由到不同的网络,则需要将主机上的网关配置为主机所在的第 3 层网络中的地址,即网络相遇的点 ( srv)。配置的网关client应该是10.20.1.254,配置的网关rp1应该是10.10.10.254。