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

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

Я пытаюсь запустить серверную программу на локальной машине. У нее есть 2 пути в Интернет:

  • 10.0.0.1/24on eth0— это шлюз и подсеть на интерфейсе с самым быстрым соединением; однако брандмауэр не позволяет мне получить доступ к любым серверам, привязанным к портам TCP.
  • 10.8.0.1/24on 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

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

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

Кто-нибудь еще пытался сделать что-то подобное и может подсказать, как это настроить?

Связанный контент