无法使用辅助 IP 进行传出流量

无法使用辅助 IP 进行传出流量

我有一台服务器(Ubuntu 18.04),在同一个网络设备中有多个 IP 地址。

这是ip a回报:

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: ens3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 06:9b:1c:00:00:2a brd ff:ff:ff:ff:ff:ff
    inet 191.XXX.XXX.51/23 brd 191.XXX.XXX.255 scope global dynamic ens3
       valid_lft 80087sec preferred_lft 80087sec
    inet 179.XXX.XXX.0/32 scope global ens3
       valid_lft forever preferred_lft forever
    inet 179.XXX.XXX.1/32 scope global ens3
       valid_lft forever preferred_lft forever
    inet 179.XXX.XXX.2/32 scope global ens3
       valid_lft forever preferred_lft forever
    inet 179.XXX.XXX.3/32 scope global ens3
       valid_lft forever preferred_lft forever
    inet6 fe80::XXX:XXX:XXX:2a/64 scope link
       valid_lft forever preferred_lft forever

这是我的route -n回报:

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         191.XXX.XXX.1   0.0.0.0         UG    100    0        0 ens3
191.XXX.XXX.0   0.0.0.0         255.255.254.0   U     0      0        0 ens3
191.XXX.XXX.1   0.0.0.0         255.255.255.255 UH    100    0        0 ens3

所以我有一个主公共 IP:191.XXX.XXX.51 和另外 4 个辅助公共 IP:179.XXX.XXX.0-3

我的最终目标是使用我的辅助 IP 进行传出连接,我想我可以使用路由表或 iptables 来实现这一点,但我不知道如何做。

例如:如果我 ping google.com:

user@server:# ping google.com

PING google.com (216.58.202.142) 56(84) bytes of data.
64 bytes from gru06s29-in-f142.1e100.net (216.58.202.142): icmp_seq=1 ttl=57 time=1.01 ms
64 bytes from gru06s29-in-f142.1e100.net (216.58.202.142): icmp_seq=2 ttl=57 time=1.05 ms
64 bytes from gru06s29-in-f142.1e100.net (216.58.202.142): icmp_seq=3 ttl=57 time=0.965 ms
64 bytes from gru06s29-in-f142.1e100.net (216.58.202.142): icmp_seq=4 ttl=57 time=0.993 ms
^C
--- google.com ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3004ms
rtt min/avg/max/mdev = 0.965/1.005/1.055/0.050 ms

一切正常,但如果我选择另一个 IP 作为 ping 源:

ping -I 179.XXX.XXX.1 google.com

ping 数据包丢失率为 100%。

tinyproxy 也发生了同样的事情,如果我配置使用辅助 IP 作为传出 IP,连接就会失败。

PS. 如果我从服务器外部 ping 它们,辅助 IP 就可以正常工作。

那么,如何才能让辅助 IP 能够连接到互联网呢?

答案1

这很简单。您只需用 src 属性覆盖默认路由即可。此值将用作传出连接的源地址。

ip route replace 0/0 via <gw-ip> src <sec-ip-addr>

相关内容