я получилодинвеб-сервер сдва никав отдельных подсетях192.168.188.xи192.168.198.xЭтот веб-сервер подключен к 2 разным маршрутизаторам (192.168.188.1 и 192.168.198.1) и через переадресацию порта 80 напрямую к Интернету (каждый маршрутизатор также имеет собственный публичный IP-адрес).
(external ip) Portforwarding:80 (external ip)
---[ROUTER]---- ---[ROUTER]----
192.168.188.1 Router internal IP 192.168.198.1
| |
| |
| |
| |
+------- 192.168.188.11:80 [WEBSERVER] 192.168.198.11:80 -------+
Мне нравится реагировать на сервер на порту 80 дляобаподсети. К сожалению, в конфигурации по умолчанию он отвечает только маршрутизатору, который установлен как шлюз по умолчанию, что вполне логично. Но мне нужно заставить его отправлять пакеты обратно на интерфейс, откуда они пришли. Как этого добиться? Нет никаких дополнительных возможностей настройки, кроме переадресации портов на маршрутизаторах, например, для nat и т. д., все нужно делать на веб-сервере, которым является Debian Stretch.
Пожалуйста, имейте в виду, что я сталкиваюсь с проблемами сети примерно раз в 10 лет, поэтому, пожалуйста, упростите задачу. :)
решение1
Если ваш веб-сервер правильно настроен на прослушивание 0.0.0.0:80, что вы можете проверить через , ss -l
то ваша проблема не в конфигурации веб-сервера, а в проблеме маршрутизации. Только один маршрут может быть обнаружен одновременно, даже если у вас их два. Единственный способ добиться желаемого — добавить второй маршрут по умолчанию и использовать маршрутизацию политики источника. Если сервер — Linux, это можно сделать через iptables. Попробуйтеэтотилиэтот.
решение2
Решение требует сложной настройки маршрутизации.
Веб-сервер должен прослушивать оба (
192.168.188.11
и192.168.198.11
) адреса или0.0.0.0
адрес, что означаетall addresses
. Проверьте это с помощьюss -tlnp sport == :80
команды.Создайте отдельную таблицу маршрутизации для каждогоноги:
ip route add 192.168.188.0/24 dev <iface1> table 1
ip route add 0/0 via 192.168.118.1 dev <iface1> table 1
ip route add 192.168.198.0/24 dev <iface2> table 2
ip route add 0/0 via 192.168.198.1 dev <iface2> table 2
- Настройте правила маршрутизации для маршрутизации ответов через тот же интерфейс, через который был получен запрос:
ip rule add from 192.168.188.11 lookup 1 pref 1000
ip rule add from 192.168.198.11 lookup 2 pref 2000
- Поиск неисправностей:
- Используйте
tcpdump -ni <iface> 'tcp port 80'
для прослушивания трафика. По крайней мере, вы должны увидеть http-запросы извне. - Проверьте маршрут наЗапросыс
ip route get <dst> from <src> iif <iface>
. Он должен показатьlocal
маршрут. Если он показывает что-то другое, проверьте командуrp_filter
сip netconf show dev <iface>
. Он должен бытьoff
или вloose
режиме. - Проверьте фактический маршрут дляответыс
ip route get <dst> from <src-address>
, где адрес назначения является исходным адресомЗапросывы видели вtcpdump
выводе. - Проверьте правила брандмауэра с помощью команды
iptables-save -c
. Конфигурацияне требуетлюбые дополнительныенатправила!