Назад | Перейти на главную страницу

Множественный IP-адрес интерфейса. Я хочу указать один из них для вывода

Я запустил curl на curlmyip.com и получил неправильный выходной IP-адрес. Мой служебный файл systemd:

[Unit]
Description=Wired Networking
Wants=network.target dibbler-client.service
Before=network.target dibbler-client.service

[Service]
Type=oneshot
RemainAfterExit=yes
EnvironmentFile=/etc/conf.d/network
ExecStart=/sbin/ip link set dev ${interface} up
ExecStart=/sbin/ip addr add ${address}/24 dev ${interface}
ExecStart=/sbin/ip addr add ${failover}/32 dev ${interface}
ExecStart=/sbin/ip route add default via ${gateway} src ${failover}
ExecStart=/sbin/ip -6 addr add ${addressv6}/64 dev ${interface}

ExecStop=/sbin/ip addr flush dev ${interface}
ExecStop=/sbin/ip -6 addr flush dev ${interface}
ExecStop=/sbin/ip link set dev ${interface} down

[Install]
WantedBy=multi-user.target

А переменные:

interface=eno1
address=88.190.15.135
address6=2001:bc8:300a:dead::b12d
failover=212.83.129.104
broadcast=88.190.15.255
gateway=88.190.15.1

Теперь ip addr дает мне:

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN
    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: <BROADCAST,MULTICAST,PROMISC,UP,LOWER_UP> mtu 1500 qdisc mq state UP qlen 1000
    link/ether b8:ac:6f:94:e2:4e brd ff:ff:ff:ff:ff:ff
    inet 88.190.15.135/24 scope global eno1
       valid_lft forever preferred_lft forever
    inet 212.83.129.104/32 scope global eno1
       valid_lft forever preferred_lft forever
    inet6 fe80::baac:6fff:fe94:e24e/64 scope link
       valid_lft forever preferred_lft forever

и IP-маршрут:

default via 88.190.15.1 dev eno1  src 212.83.129.104
88.190.15.0/24 dev eno1  proto kernel  scope link  src 88.190.15.135

curlmyip.com сообщает мне, что выходной IP-адрес 88.190.15.135. Как я могу изменить этот выходной адрес и сделать его 212.83.129.104?

РЕДАКТИРОВАТЬ: протестировано на изменение src маршрута к шлюзу ... Без изменений.

Спасибо!

Похоже, ваш провайдер играет грязные шутки с IP-маршрутизацией. Второй используемый вами IP-адрес находится в совершенно другой сети. Ваш дедибокс находится на AS12322, а другой ваш IP-адрес зарегистрирован в Tiscali на AS12876. Кажется, это работает, потому что вовлеченные поставщики услуг заставляют это работать.

В любом случае, большинство программ, которые могут устанавливать сетевые соединения, имеют параметр, позволяющий указать исходный IP-адрес. Для curl командная строка, эта опция --interface.

curl --interface 212.83.129.104 http://curlmyip.com/

Судя по опубликованной вами конфигурации, вы указываете 212.83.128.104 в качестве источника для маршрута по умолчанию:

default via 88.190.15.1 dev eno1  src 212.83.129.104

Вам, вероятно, следует это изменить или удалить.

РЕДАКТИРОВАТЬ: По-видимому, я неправильно понял вопрос и подумал, что 212.83.128.104 использовался в качестве исходного IP-адреса. Если я правильно перечитал, 88.190.15.135 фактически используется в качестве исходного IP-адреса, а желаемое поведение - использовать вместо него 212.83.129.104. Для диагностики нам понадобится дополнительная информация, но я предполагаю, что вы столкнулись с этой ошибкой: https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1093999 где ip route ... src сломан в ядре.

Как сказал мне мой специализированный провайдер, https://twitter.com/online_fr/status/384662183751450624.

Я добавил это: -t nat -A POSTROUTING -o eno1 \! -d 10.8.0.0/24 -j SNAT --to-source 212.83.129.104 и теперь все нормально :)

Если вы находитесь на хостинге Online.net, это единственный способ.