我正在努力解决当前的问题:
背景资料:
戴尔 R710 服务器上的 Ubuntu 20.04 我有 2 个不同的互联网连接,其中有 2 个 ISP 提供的路由器。我已将 eno2 连接到 isp1 路由器,并通过永久 dhcp 租约获取 192.168.2.100 IP。我已将 eno3 连接到 isp2 路由器,并通过永久 dhcp 租约获取 192.168.88.254 ip。
ip 一个
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eno1: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc mq state DOWN group default qlen 1000
link/ether d4:be:d9:ee:7b:75 brd ff:ff:ff:ff:ff:ff
3: eno2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
link/ether d4:be:d9:ee:7b:77 brd ff:ff:ff:ff:ff:ff
inet 192.168.2.102/24 brd 192.168.2.255 scope global dynamic noprefixroute eno2
valid_lft 41588sec preferred_lft 41588sec
inet6 fe80::d6be:d9ff:feee:7b77/64 scope link
valid_lft forever preferred_lft forever
4: eno3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
link/ether d4:be:d9:ee:7b:79 brd ff:ff:ff:ff:ff:ff
inet 192.168.88.254/24 brd 192.168.88.255 scope global dynamic noprefixroute eno3
valid_lft 486sec preferred_lft 486sec
inet6 fe80::d6be:d9ff:feee:7b79/64 scope link
valid_lft forever preferred_lft forever
5: eno4: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc mq state DOWN group default qlen 1000
link/ether d4:be:d9:ee:7b:7b brd ff:ff:ff:ff:ff:ff
...
网络统计-rn
Kernel IP routing table
Destination Gateway Genmask Flags MSS Window irtt Iface
0.0.0.0 192.168.88.1 0.0.0.0 UG 0 0 0 eno3
0.0.0.0 192.168.2.1 0.0.0.0 UG 0 0 0 eno2
172.17.0.0 0.0.0.0 255.255.0.0 U 0 0 0 docker0
192.168.2.0 0.0.0.0 255.255.255.0 U 0 0 0 eno2
192.168.88.0 0.0.0.0 255.255.255.0 U 0 0 0 eno3
问题是如果在 LAN 之外,我一次只能通过 1 个(随机)公共 IP 访问服务器。如果可以访问 77.xx.xx.158 (isp 2),则无法访问 5.xx.xx.55 (isp 1),反之亦然,每次启动后随机。
我需要能够在任何给定时间访问任何公共 ip 上的服务器。
预先感谢您提供任何可能的解决方案。
答案1
我不确定你能做到这一点。
您会遇到这样的问题:数据包进入一个接口,而返回的数据包想要在另一个接口上离开。事实上,这可能就是你现在看到的。当第一个路由器响应 DHCP 请求时,您将设置一条经过该请求的默认路由,当第二个路由器响应时(它们响应的顺序可能会给出您看到的随机性),您还设置一条默认路由通过那。我不记得在这种情况下 linux 将使用哪条路由,但这并不重要,所以假设第二条路由获胜。 (如果是相反,只需在下面切换第一个/第二个。)在这种情况下,您将收到通过路由器 1 传入的流量,转发到您的服务器,并通过路由器 2 发回回复。这很可能检查它的连接表,断定没有(正在建立)到该流量的目的地的连接(它是通过另一个路由器进入的,所以那个路由器知道这一点),然后丢弃数据包。如果您设法说服两台路由器不执行此类检查,则可能会在另一项检查或(其中一个)ISP 的路由器上失败。