Прив'язка до певного мережевого інтерфейсу на сервері Linux з декількома шлюзами


1

Я намагаюся запустити серверну програму на локальному комп'ютері. Він має 2 маршрути до Інтернету:

  • 10.0.0.1/24 на eth0 є шлюзом і підмережею на інтерфейсі з найшвидшим з'єднанням; проте брандмауер заважає доступу до серверів, прив'язаних до портів TCP.
  • 10.8.0.1/24 на eth1 є шлюзом і підмережею на більш повільному інтерфейсі; однак я керую шлюзовим пристроєм і можу успішно переносити його вперед, і сервер видно в Інтернеті.

На моїй машині є такі маршрути:

default via 10.0.0.1 dev eth0 src 10.0.0.x metric 203 default via 10.8.0.1 dev eth1 metric 800 10.8.0.0/24 dev eth1 proto kernel scope link src 10.8.0.y 10.0.0.0/24 dev eth0 proto kernel scope link src 10.0.0.x metric 203

Ясно, що маршрут через eth0 буде мати пріоритет за звичайних обставин; однак для того, щоб мій сервер був переадресований порту, він повинен використовувати шлюз за замовчуванням на eth1 інтерфейс без перенаправлення всього іншого трафіку через той самий інтерфейс.

Що я спробував до сих пір, щоб прив'язати сервер до адреси 10.8.0.y це означає, що він буде приймати тільки з'єднання, призначення яких - це IP-адреса. Однак він не працював для маршрутизації трафіку в протилежному напрямку. Я перевірив, використовуючи tcpdump -i eth1 -p 25561 що приймаються вхідні з'єднання, але при моніторингу обох eth0 і eth1 Я не бачу вихідної відповіді. З'єднання потім вимкне на віддаленому клієнті, коли не буде отримано жодної відповіді.

Хто-небудь ще спробував зробити щось подібне і може дати деяке уявлення про те, як мені потрібно налаштувати його?


Зазвичай потрібно використовувати ip route table в поєднанні з ip rule щоб зв'язати IP-адресу джерела з відповідним маршрутом призначення. Подивись на lartc.org/howto/lartc.rpdb.multiple-links.html . Розглянемо вашу локальну машину - маршрутизатор linux, підключений до провайдера 1 і провайдера 2 для того, щоб слідувати поясненням. Потім ви можете навіть використовувати iptables для вибору потрібного постачальника (наприклад, вибравши правильний джерело ip).
A.B

Крім того, з використанням таблиць маршрутизації (як на сторінці lartc.org) я не думаю, що це потрібно взагалі, але інакше, можливо, ви можете змусити його працювати, просто відключивши rp_filter (фільтрація зворотного шляху). Подивись на kernel.org/doc/Documentation/networking/ip-sysctl.txt (запис rp_filter). Вимкніть його як для all і eth1.
A.B
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.