我们目前正在尝试通过wireguard 隧道将来自guest vlan (eth1.251) 子网的所有数据包路由到互联网。为了实现这一点,我们使用基于策略的路由,并在流量来自我们的访客子网时使用路由表 10 的规则:
32765: from 10.251.0.0/16 lookup 10
在路由表 10 中,我们创建了一条通向隧道接口的默认路由:
default dev wg1 scope link
我们访客网络中的所有客户端都能够通过预期的wireguard隧道访问互联网,但是客户端无法到达访客网络的网关(10.251.0.1)
。TCPDump 显示 ICMP 回显回复通过wg1
接口路由回我们的隧道端点,这显然不是故意的。一个快速的解决方案是将eth1.251
访客 vlan 接口的范围链接路由添加到路由table 10
:
default dev wg1 scope link
10.251.0.0/16 dev eth1.251 proto kernel scope link
现在客户端可以访问路由器接口并为其服务。
在这个路由器上有另一个接口 eth1 与子网192.168.0.1/16
。当我们现在删除新添加的10.251.0.0/16
路由时,table 10
我们无法再访问路由器接口10.251.0.1
,但是我们仍然能够192.168.0.1
从子网上的客户端访问接口10.251.0.0/16
。192.168.0.2
子网中路由器后面的客户端(例如)192.168.0.0/16
无法从10.251.0.0/16
.
主要问题:为什么我们可以在192.168.0.1
没有显式路由表条目的情况下访问路由器上的接口 ip,但不能10.251.0.1
访问来宾10.251.0.0/16
子网中客户端的接口 ip?
这是网络结构的概述。我认为这有助于理解我们的设置。