Умножает 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-адрес дает мне:

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 маршрута к шлюзу... Без изменений.

Спасибо!

3 ответа

Решение

Как сказал мне мой выделенный провайдер, 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, это единственный способ.

Похоже, ваш провайдер разыгрывает грязные трюки с IP-маршрутизацией. Второй используемый вами IP-адрес находится в совершенно другой сети. Ваш dedibox находится на 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 сломан в ядре.

Другие вопросы по тегам