在我的路由器(ubuntu/NFTables)上,我配置了两个 WAN,每个 ISP 一个。
在当前配置下,我可以确保子网中的任何机器都可以根据 NFTables 中的规则使用第一个或第二个链接进行导航。
注意不是特定的LAN接口(任何LAN接口上的任何机器都可以根据NFTables中的规则浏览任意两个具有公网IP的链接)
一切正常,好的。
我现在面临的问题是子网上的机器应该互相看到,但它们甚至无法互相 ping 通。
有人知道我该如何修复它,以便除了保持这样的互联网浏览之外,我还可以让连接到 LAN1、LAN2、LAN3 和 LAN4 的机器能够相互通信?
以下是 netplan 配置:
network:
ethernets:
wan1:
addresses:
- 111.31.111.2/28
- 111.31.111.3/28
- 111.31.111.4/28
- 111.31.111.5/28
- 111.31.111.6/28
- 111.31.111.7/28
- 111.31.111.8/28
- 111.31.111.9/28
- 111.31.111.10/28
- 111.31.111.11/28
- 111.31.111.12/28
- 111.31.111.13/28
- 111.31.111.14/28
nameservers:
addresses:
- 8.8.8.8
- 8.8.4.4
search: []
routes:
- to: default
via: 111.31.111.1
metric: 100
- to: default
via: 111.31.111.1
metric: 100
table: 100
routing-policy:
- from: 192.168.10.0/24
table: 100
- from: 192.168.20.0/24
table: 100
- from: 192.168.30.0/24
table: 100
- from: 192.168.40.0/24
table: 100
wan2:
addresses:
- 222.63.222.10/29
- 222.63.222.11/29
- 222.63.222.12/29
- 222.63.222.13/29
- 222.63.222.14/29
nameservers:
addresses:
- 8.8.8.8
- 8.8.4.4
search: []
routes:
- to: default
via: 222.63.222.9
metric: 200
- to: default
via: 222.63.222.9
metric: 200
table: 200
routing-policy:
- from: 192.168.10.0/24
table: 200
- from: 192.168.20.0/24
table: 200
- from: 192.168.30.0/24
table: 200
- from: 192.168.40.0/24
table: 200
lan1:
addresses:
- 192.168.10.1/24
lan2:
addresses:
- 192.168.20.1/24
lan3:
addresses:
- 192.168.30.1/24
lan4:
addresses:
- 192.168.40.1/24
version: 2
下表和规则:
userrouter1@router1:~$ ip route
default via 111.31.111.1 dev wan1 proto static metric 100
default via 222.63.222.9 dev wan2 proto static metric 200
192.168.10.0/24 dev lan1 proto kernel scope link src 192.168.10.1
192.168.40.0/24 dev lan4 proto kernel scope link src 192.168.40.1
111.31.111.0/28 dev wan1 proto kernel scope link src 111.31.111.2
222.63.222.8/29 dev wan2 proto kernel scope link src 222.63.222.10
userrouter1@router1:~$ ip rule
0: from all lookup local
32756: from 192.168.30.0/24 lookup 200 proto static
32757: from 192.168.40.0/24 lookup 200 proto static
32758: from 192.168.20.0/24 lookup 200 proto static
32759: from 192.168.10.0/24 lookup 200 proto static
32760: from 192.168.30.0/24 lookup 100 proto static
32761: from 192.168.10.0/24 lookup 100 proto static
32762: from 192.168.40.0/24 lookup 100 proto static
32763: from 192.168.20.0/24 lookup 100 proto static
32766: from all lookup main
32767: from all lookup default
userrouter1@router1:~$ ip route show table 100
default via 111.31.111.1 dev wan1 proto static metric 100
userrouter1@router1:~$ ip route show table 200
default via 222.63.222.9 dev wan2 proto static metric 200
userrouter1@router1:~$ ip rule show table 100
32760: from 192.168.30.0/24 lookup 100 proto static
32761: from 192.168.10.0/24 lookup 100 proto static
32762: from 192.168.40.0/24 lookup 100 proto static
32763: from 192.168.20.0/24 lookup 100 proto static
userrouter1@router1:~$ ip rule show table 200
32756: from 192.168.30.0/24 lookup 200 proto static
32757: from 192.168.40.0/24 lookup 200 proto static
32758: from 192.168.20.0/24 lookup 200 proto static
32759: from 192.168.10.0/24 lookup 200 proto static
就目前情况而言,如果我在机器 192.168.10.10 上,我无法 PING 192.168.20.10,反之亦然...我需要解决这个问题,像这样维持到外部 IP 的导航。
有人能帮助我吗?
您的自定义策略规则会导致表不包含主表所具有的任何“本地子网”路由。只有与所有内容匹配的默认路由,因此所有内容都会转到您的 ISP。
您需要
throw
在每个表中添加(“进入下一个策略规则”)路由,或者使用附加策略规则,在自定义表之前而不是之后在“主”中进行第二次查找(使用特殊选项以忽略默认路由)。