我需要配置我的路由器(Ubuntu Server 24/NNFTables),以便连接到 lan1 和 lan2 接口的计算机可以使用 wan1 或 wan2 接口浏览互联网,具体取决于子网 IP。
我通过两个不同的提供商接入互联网。
ISP 1:Bloco ip:111.11.111.0/28
ISP 2:Bloco ip:222.22.222.8/29
配置 netplan yaml:
网络: 以太网: wan1: 地址: - 111.11.111.2/28 - 111.11.111.3/28 - 111.11.111.4/28 - 111.11.111.5/28 - 111.11.111.6/28 - 111.11.111.7/28 - 111.11.111.8/28 - 111.11.111.9/28 - 111.11.111.10/28 - 111.11.111.11/28 - 111.11.111.12/28 - 111.11.111.13/28 - 111.11.111.14/28 名称服务器: 地址: - 8.8.8.8 - 8.8.4.4 搜索: [] 路线: - 至:默认 通过:111.11.111.1 wan2: 地址: - 222.22.222.10/29 - 222.22.222.11/29 - 222.22.222.12/29 - 222.22.222.13/29 - 222.22.222.14/29 名称服务器: 地址: - 8.8.8.8 - 8.8.4.4 搜索: [] 路线: - 至:默认 通过:222.22.222.9 局域网1: 地址: - 192.168.10.1/24 名称服务器: 地址:[] 搜索: [] 局域网2: 地址: - 192.168.20.1/24 名称服务器: 地址:[] 搜索: [] 版本: 2`
用户测试@路由器1:~$ ip 路由 默认通过 111.11.111.1 dev wan1 proto static 192.168.10.0/24 dev enp4s0 proto 内核范围链接 src 192.168.10.1 192.168.20.0/24 dev enp5s0 proto 内核范围链接 src 192.168.20.1 111.11.111.0/28 dev enp1s5 proto 内核范围链接 src 111.11.111.2 222.22.222.8/29 dev enp8s0 proto 内核范围链接 src 222.22.222.9
我们想要浏览的子网站及其各自的公共IP:
192.168.10.101 ---> 111.11.111.11 192.168.10.102 ---> 111.11.111.12 192.168.10.201 ---> 222.22.222.11 192.168.10.202 ---> 222.22.222.12 192.168.20.10 ---> 222.22.222.10
我发现我需要使用 IP ROUTE 处理多个路由表,但我尝试的所有配置都失败了......
有人知道我该如何解决这个问题吗?
我已经尝试了一些 nftables/ip 路由配置......但我无法使其工作......我搞砸了很多,甚至不知道我尝试过的一切......现在配置如下所示:
$ ip 路由 默认通过 111.11.111.9 dev wan1 192.168.10.0/24 dev lan1 proto 内核范围链接 src 192.168.10.1 192.168.20.0/24 dev lan2 proto 内核范围链接 src 192.168.20.1 111.11.111.0/28 dev wan1 proto 内核范围链接 src 111.11.111.2 222.22.222.8/29 dev wan2 proto 内核范围链接 src 111.11.111.10 $ ip 路由显示表 100 默认通过 111.11.111.1 dev wan1 proto static $ ip 路由显示表 200 默认通过 222.22.222.9 dev wan2 proto static $ ip 规则显示 0:从所有查找本地 32764:从 222.22.222.8/29 查找 200 原始静态 32765:从 111.11.111.0/28 查找 100 个原始静态 32766:来自所有查找主 32767:来自所有查找默认
您在问题中展示的路由配置看起来是解决方案的重要组成部分。为了进行测试,我使用Kathara模拟了您的环境;您可以在此处找到我的完整测试环境。测试拓扑如下所示:
目标是我们可以
remotehost
从右侧的节点(node00
通过node11
)到达,并且每个节点将使用从 出发的适当出站路径router
。此图中的节点
router
对应于您尝试配置的系统。它具有以下接口配置:以下默认路由表:
以下策略路由规则:
表格如下
111
:表格如下
222
:为了实现您的 NAT 目标,路由器具有以下 nft 规则集:
这将应用您在问题中列出的静态 NAT 条目,并将常规伪装应用于任何有
lan1
或lan2
没有明确条目的内容。有了这个配置,如果我运行
tcpdump
,remotehost
如下所示:然后尝试
ping -c1 remotehost
从node00
,我们看到:node00
从到(a) 的路径remotehost
具有预期的源地址,并且 (b) 正在使用预期的路径。同样,如果我们从 尝试同样的事情node01
,我们会看到:再次,它使用预期的路径,我们看到我们的外部可见地址是
111.11.111.12
,正如我们的 NAT 映射所预期的那样。如果我们尝试从 上的节点进行类似的操作
lan2
,我们会看到node10
:来自
node11
:据我所知,这种行为满足了你的所有目标。