Невозможно использовать вторичный IP-адрес для исходящего трафика

У меня есть сервер (Ubuntu 18.04) с несколькими IP-адресами на одном сетевом устройстве.

Это ip a return:

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

А это мой маршрут -n return:

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, но я не Не знаю как.

Например: Если я пингую 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 -I 179.XXX.XXX.1 google.com

Пинг имеет 100% потерю пакетов.

То же самое происходит с tinyproxy, если я настроить использование вторичного IP-адреса в качестве исходящего IP-адреса, соединение просто не выполняется.

PS. Вторичный IP-адрес работает, если я пингую их извне сервера.

Итак, как мне сделать дополнительный IP-адрес полезным для выхода в Интернет?

-1
задан 27 April 2019 в 01:16
1 ответ

Это довольно просто. Вы просто перезаписываете маршрут по умолчанию атрибутом src. Это значение будет использоваться как исходный адрес для исходящих соединений.

ip route replace 0/0 via <gw-ip> src <sec-ip-addr>
0
ответ дан 5 December 2019 в 20:16

Теги

Похожие вопросы