Вказання 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

1
Як зробити це постійним після перезавантаження?
дежи

3

Відповідь bindbn хороша, але я знайшов деякі ускладнення.

1) Ви повинні перевірити "ip route list", як говорить bindbn. Деякі інші правила у списку можуть мати перевагу над маршрутом за замовчуванням. Можливо, вам доведеться видалити це правило або створити дещо інше правило.

2) Усі зміни, виконані за допомогою команди ip, працюють лише до наступного перезавантаження. Ця відповідь Постійне додавання правил маршрутизації вихідної політики пояснює, як зробити її стійкою.

Підсумовуючи, ви можете додати команду ip route, яку потрібно запустити як "вгору" або "post-up" рядок до / etc / network / interfaces. Ви можете додати відповідний рядок "вниз" для видалення маршруту.


1

Спробуйте змінити

 allow-hotplug eth0

до

 auto eth0

Це повинно змусити ваш фізичний інтерфейс вийти першим. Можливо, вам не знадобиться також змінювати запис дозволеного підключення для 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. ( Вторинне посилання ) Це схоже на щось по лінії
Bringin вгору по інтерфейсу: 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 ядра
Шлюз призначення Генмаска Прапори Метричні посилання Використання 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, який знаходиться в тій самій підмережі, що і шлюз (доводиться, інакше трафік не може бути спрямований). Імовірно, ISP надає таку ж підмережу і для інших клієнтів.

Якщо ви перебуваєте на цьому сервері і виконайте пінг до свого шлюзу, вам слід отримати повідомлення "немає маршруту до хоста".

Поговоріть з Інтернет-провайдером і отримайте правильні налаштування, а потім оновіть конфігурацію інтерфейсу, перезапустіть мережу та перевіряйте її ще раз.


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 маска 255.255.255.0 / ifconfig eth0: 1 192.168.0.3 маска 255.255.255.0 / route add default gw 192.168.0.1
Hendrik Brummermann,
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.