Указание IP-адреса для исходящих подключений на нескольких IP-хостах

15

один из моих серверов (Debian 5.0.6) имеет два открытых ip-адреса на одном интерфейсе. Раньше это работало хорошо в течение нескольких месяцев, но внезапно он использует «неправильные» IP-адреса для исходящих соединений. Это проблема, потому что обратный поиск не будет совпадать, и письма получат спам.

eth0      Link encap:Ethernet  Hardware Adresse 00:1b:21:14:8e:9c  
          inet Adresse:81.169.180.51  Bcast:81.169.180.51  Maske:255.255.255.255
          inet6-Adresse: fe80::21b:21ff:fe14:8e9c/64 Gültigkeitsbereich:Verbindung

eth0:0    Link encap:Ethernet  Hardware Adresse 00:1b:21:14:8e:9c  
          inet Adresse:85.214.157.120  Bcast:85.214.157.120  Maske:255.255.255.255


Kernel-IP-Routentabelle
Destination     Router          Genmask         Flags Metric Ref    Use Iface
81.169.180.1    0.0.0.0         255.255.255.255 UH    0      0        0 eth0
0.0.0.0         81.169.180.1    0.0.0.0         UG    0      0        0 eth0

В настоящее время он использует 85.214.157.120 для исходящих соединений. Как мне заставить его использовать 81.169.180.51?

Изменить : Маска сети 255.255.255.255 согласуется как с документацией, так и с ответом DHCP хостинговой компании. Вызов /etc/init.d/networking перезапускается несколько раз, и в итоге получится правильный IP-адрес для исходящих соединений. Но это, очевидно, не стабильное решение. /Редактировать

Изменить 2 : Чтобы убедиться, что маршрут хоста не связан с моей проблемой, я настраиваю локальную тестовую сеть:

eth0      inet Adresse:192.168.0.2  Bcast:192.168.0.255  Maske:255.255.255.0
eth0:0    inet Adresse:192.168.0.3  Bcast:192.168.0.255  Maske:255.255.255.0

192.168.0.0    0.0.0.0         255.255.255.0   U     0      0        0 eth0
0.0.0.0        192.168.0.1     0.0.0.0         UG    0      0        0 eth0

Если у кого-то есть идея, как убедиться, что исходящий IP-адрес 192.168.0.2 используется для исходящих соединений tcp, я был бы благодарен. / Изменить 2

Хендрик Браммерманн
источник

Ответы:

24

Обновить по умолчанию:

ip route change default via 81.169.180.1 src 81.169.180.51

Проверьте конфигурацию:

ip route list
bindbn
источник
1
Как сделать этот постоянный после перезагрузки?
дежи
3

Ответ от bindbn хорош, но я обнаружил некоторые сложности.

1) Вы должны проверить «список маршрутов ip», как говорит bindbn. Некоторые другие правила в списке могут иметь приоритет над маршрутом по умолчанию. Возможно, вам придется удалить это правило или создать немного другое правило.

2) Все изменения, сделанные с помощью команды ip, работают только до следующей перезагрузки. Этот ответ Постоянное добавление правил маршрутизации политики источника объясняет, как сделать его постоянным.

Таким образом, вы можете добавить команду ip route, которую вам нужно запустить как строку «вверх» или «после» в файл / etc / network / interfaces. Вы можете добавить соответствующую строку «вниз», чтобы удалить маршрут.

AdamS
источник
1

Попробуйте изменить

 allow-hotplug eth0

в

 auto eth0

Это должно заставить ваш физический интерфейс появиться первым. Вам также может понадобиться изменить запись allow-hotplug для eth0: 0.

Билл Б
источник
1

Из любопытства, почему ваши IP-адреса имеют сетевую маску 255.255.255.255? Это действительно невозможно, поскольку это будет означать, что весь адрес является сетью. Нет места для хозяев. Тот факт, что ваш широковещательный адрес совпадает с IP-адресом вашего хоста, также вызывает беспокойство, но, вероятно, из-за проблемы с маской сети. Скорее всего, ваша сетевая маска должна быть 255.255.255.0.

Это было сделано, чтобы дать вам два хоста в одной подсети? Может быть предпочтительнее просто внести изменения, чтобы каждый интерфейс находился в отдельной подсети. 255.255.255.128 поместит eth0 и ваш шлюз (из 81.169.180.1) в одну подсеть, с eth0: 0 в отдельную подсеть. Однако это будет означать, что eth0 может общаться только с 81.169.180.1-81.169.180.127. И eth0: 0 идет от 129-254. Но, как говорится, я не могу понять, почему ваша текущая настройка работает вообще.

Теперь, это вызовет проблемы, которые вы видите выше? Я не вижу прямой ссылки, но это возможно.
Это конечно то, что я бы подправил. Если это не поможет, возможно, вы сможете объяснить, почему у вас все настроено таким образом.


Изменить: Это работало нормально на этом хосте, или это была другая машина / ОС? Есть идеи, что могло измениться? Причина, по которой я спрашиваю, состоит в том, что Linux действительно не любит иметь два интерфейса в одной подсети. Это сводило меня с ума, пытаясь заставить это работать в моей собственной сети. Вполне возможно, что вы работали с правильным IP, до тех пор, пока вы не перезагрузили / не перезапустили сетевые службы. Тогда это пришло, используя неправильный интерфейс. Ссылка: http://anders.com/cms/258

Вы также можете примерить ifdowneth0: 0, затем добавить маршрут ifupи вернуться обратно. Это может гарантировать, что правильный IP будет использован.

Добавление вручную dev eth0 может помочь, но кажется, что маршрут был сделан правильно.


Далее Edit: Вы можете попробовать использовать новейшие средства управления IP в Debian, iproute 2. ( Вторичная ссылка ) Похоже, что-то вроде того, чтобы
привести интерфейс вверх: ip link set eth0 up

ip addr add 192.168.0.2/24 dev ethe0
ip addr add 192.168.0.3/24 dev eth0

Затем
ip route add 10.0.0.0/16 via 192.168.0.2


настройте таблицу маршрутизации с помощью --Christopher Karel

Кристофер Карел
источник
Маска сети 255.255.255.255 согласуется как с документацией хостинговой компании, так и с ответом DHCP. Согласно Google это нормально иметь 255.255.255.255 в двухточечных сетях. Насколько я могу судить, было бы глупо, если бы хостинговая компания использовала сеть без двухточечного соединения, учитывая риск безопасности при наличии ненадежных хостов в одном и том же широковещательном домене уровня 2.
Хендрик Браммерманн
Как говорил Вольфгангз выше, a / 32 не является стандартом для двухточечной связи. Я знаю, что / 31 можно сделать, но, очевидно, убивает широковещательные и сетевые идентификаторы. Упомянутый вами «маршрут хоста» относится к его использованию в таблицах маршрутизации. Например: это маршрут к определенному хосту, а не к сети. Следовательно, это происходит в RFC, который вы связали с OSPF, протоколом маршрутизации. При этом, если вы уверены, что ваш интернет-провайдер поручит вам сделать это с вашей ОС, то вы могли бы также продолжать в том же духе.
Кристофер Карел
Хорошо, сделано несколько правок, которые могут помочь в вашей первоначальной проблеме.
Кристофер Карел
-1

Ваши текущие настройки не должны работать вообще. Поскольку маска маски для обоих интерфейсов 255.255.255.255, нет места для шлюза. Однако для доставки значимого трафика вашему серверу нужен шлюз. Интернет-провайдер, предоставляющий два общедоступных IP-адреса, также должен предоставить вам настройки сетевой маски и шлюза для обоих IP-адресов.

Пример (это мой частный сервер и IP-адреса действительны):

Таблица маршрутизации IP ядра
Шлюз назначения Genmask Флаги Метрика Ссылка Использовать Iface
217.10.144.208 0.0.0.0 255.255.255.248 U 0 0 0 eth0
0.0.0.0 217.10.144.209 0.0.0.0 UG 0 0 0 eth0

Сам сервер находится на 217.10.144.210, который находится в той же подсети, что и шлюз (должен, иначе трафик не может быть маршрутизирован). Предположительно, провайдер предоставляет такую ​​же подсеть для некоторых других клиентов.

Если вы находитесь на этом сервере и выполняете эхо-запрос на свой шлюз, вы должны получить сообщение «Нет маршрута к хосту».

Поговорите с интернет-провайдером и получите правильные настройки, затем обновите конфигурацию интерфейса, перезапустите сеть и проверьте снова.

wolfgangsz
источник
2
Маска сети 255.255.255.255 согласуется как с документацией хостинговой компании, так и с ответом DHCP. Согласно Google это нормально иметь 255.255.255.255 в двухточечных сетях. Насколько я могу судить, хостинговой компании было бы довольно глупо использовать сеть без двухточечного соединения, учитывая риск безопасности, связанный с наличием ненадежных хостов в одном широковещательном домене 2-го уровня.
Хендрик Браммерманн
Если у вас есть сеть точка-точка, тогда ваша маска будет 255.255.255.252. Это позволило бы двум хостам, которые составляют две конечные точки, сетевой адрес и широковещательный адрес. Это нормальный сценарий для таких соединений. В вашем случае другой хост будет вашим шлюзом для остального мира. Мне все равно, что вы найдете в Google, но именно так работает сеть TCP / IP. И совершенно ясно, что это не работает для вас. Я оставляю вам выводы.
wolfgangsz
Спасибо, но эта часть работает отлично для меня. Кстати, в официальном интернет-стандарте он называется «маршрут хоста»: rfc-editor.org/rfc/rfc2328.txt
Хендрик Бруммерман
Моя проблема также воспроизводима в локальной сети: ifconfig eth0 192.168.0.2 mask 255.255.255.0 / ifconfig eth0: 1 192.168.0.3 mask 255.255.255.0 / route add default gw 192.168.0.1
Hendrik Brummermann