我有两个通过 Wireguard 连接的路由器。通过 wg 访问互联网很方便,但我想访问连接到 routerS 的 PI。
从路由器,我可以顺利地 ping 本地连接的 PI(输出信息行)。从 RouterT 执行相同的 ping 命令(转发信息下面的行)被路由器接收,似乎准备转发到正确的OUT=br-lan接口,但 routerT 回复 ICMP TYPE=3 CODE=3 (下面的 FailInfo 行)
routerS kernel: [95228.293520] OutputInfo IN= OUT=br-lan SRC=192.168.0.1 DST=192.168.0.80 LEN=978 TOS=0x00 PREC=0x00 TTL=64 ID=28681 DF PROTO=ICMP TYPE=8 CODE=0 ID=29579 SEQ=0 okPingFromRouterS
routerS kernel: [37413.743406] FwdInfo IN=wg0 OUT=br-lan MAC= SRC=192.168.219.246 DST=192.168.0.80 LEN=978 TOS=0x00 PREC=0x00 TTL=63 ID=5115 DF PROTO=ICMP TYPE=8 CODE=0 ID=14595 SEQ=0 failedPingFromRouterT
routerS kernel: [37413.758681] FailInfo IN= OUT=wg0 SRC=192.168.219.247 DST=192.168.219.246 LEN=576 TOS=0x00 PREC=0xC0 TTL=64 ID=21316 PROTO=ICMP TYPE=3 CODE=3 [SRC=192.168.219.246 DST=192.168.0.80 LEN=978 TOS=0x00 PREC=0x00 TTL=63 ID=5115 DF PROTO=ICMP TYPE=8 CODE=0 ID=14595 SEQ=0 ] FailureResponseMessage
# packet logging from iptables
路由似乎很简单,但显然我遗漏了一些东西。对于来自 br-lan 的数据包,有一个单独的路由表 (200),但我认为这在这里无关紧要。
root@routerS:~# ip route
default via 192.168.8.1 dev eth0.2 proto static src 192.168.8.84
192.168.0.0/24 dev br-lan proto kernel scope link src 192.168.0.1
192.168.8.0/24 dev eth0.2 proto kernel scope link src 192.168.8.84
192.168.219.246/31 dev wg0 proto kernel scope link src 192.168.219.247
root@routerS:~# ip rule
0: from all lookup local
1: from all iif br-lan lookup 200
32766: from all lookup main
32767: from all lookup default
root@routerS:~# ip route show table 200
default dev wg0 proto static scope link
为什么转发的 ping 没有转发到 PI?