如何在两个不同的公网ip上访问ubuntu服务器

如何在两个不同的公网ip上访问ubuntu服务器

我正在努力解决当前的问题:

背景资料:

戴尔 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 的路由器上失败。

相关内容