![两个 ISP,两个路由器,一个 Linux 机箱](https://linux22.com/image/1488693/%E4%B8%A4%E4%B8%AA%20ISP%EF%BC%8C%E4%B8%A4%E4%B8%AA%E8%B7%AF%E7%94%B1%E5%99%A8%EF%BC%8C%E4%B8%80%E4%B8%AA%20Linux%20%E6%9C%BA%E7%AE%B1.png)
我是 IP 路由新手,在设置两个链接时遇到了困难。我有一个 Linux 机器,它连接到 192.168.1.1 eth0
,IP 地址为 192.168.1.135。这是我的机器主要使用的 Internet 连接。它还连接到 192.168.8.1 eth1
,IP 地址为 192.168.8.100。此 Internet 连接是备用的,仅用于 ssh 接入(或用于轻量级任务)。我已经能够通过两个链接建立出站连接。
我希望能够从两个公共 IP 地址 ssh 进入该框。目前,我无法在 上 ssh 进入该框eth1
。我推测问题是因为 上的 ssh 连接的响应eth1
是从 发送的eth0
。
在 中/etc/iproute2/rt_tables
,我添加了:
10 isp
13 gsm
在 shell 中,我运行
ip route add default via 192.168.1.1 dev eth0 table isp
ip route add default via 192.168.8.1 dev eth1 table gsm
ip route add default via 192.168.1.1 dev eth0 # default table
我错过了什么?
非常感谢您的帮助!
答案1
除默认路由表之外的路由表不会自动使用。您需要为此设置策略路由规则:
ip rule add from 192.168.1.135 lookup isp
ip rule add from 192.168.8.100 lookup gsm
(尽管您可能不需要“isp”规则,因为您的默认表已经涵盖了该规则,并且没有理由重复所有内容。)
答案2
您需要确保 SSH 可以接受来自两个接口/IP 子网的连接。
答案3
我能够解决这个问题。我认为我走在正确的轨道上。最重要的是,我忘记刷新缓存了。我通过以下方法解决了这个问题:
$ sudo ip route add default via 192.168.1.1 dev eth0 tab 1
$ sudo ip route add default via 192.168.8.1 dev eth1 tab 2
$ sudo ip rule add from 192.168.1.135/32 tab 1 priority 500
$ sudo ip rule add from 192.168.8.100/32 tab 2 priority 600
$ sudo ip route flush cache
我还无法利用我已有的内容来获得该解决方案/etc/iproute2/rt_tables
,但由于路由非常简单,因此我不太在意名称。
一如往常,感谢大家的反馈。