Hairpin NAT с 2 провайдерами

Обсуждение ПО и его настройки
Ответить
Cyjil
Сообщения: 11
Зарегистрирован: 29 май 2023, 16:15

Добрый день. Есть роутер, локальная сеть - 192.168.1.0/24. Подключено два провайдера.
Через второго провайдера (2.2.2.2) настроен dst-nat на веб-сервер внутри сети (192.168.1.89):
add action=dst-nat chain=dstnat dst-address=2.2.2.2\
dst-port=80 protocol=tcp to-addresses=192.168.1.89

Для доступа к этому веб-серверу из локальной сети по внешнему адресу настраиваю hairpin nat:
add action=masquerade chain=srcnat comment=hairpin dst-address=192.168.1.89 \
dst-port=80 protocol=tcp src-address=192.168.1.0/24


В итоге - доступ снаружи есть, изнутри - нет.
Узлы сети распределяются по провайдерам посредством маркирования исходящего от узлов трафика.
В какую сторону копать?


gmx
Модератор
Сообщения: 3325
Зарегистрирован: 01 окт 2012, 14:48

Скорее всего дело в исходящей маркировке. Добавьте в исключение адрес сервера. С точки зрения роутера:
пакет от локального компа летит в интернет и его надо пометить. А помеченный пакет нужно отправить на шлюз соответствующего провайдера.
Возможно добиться результата можно меняя порядок ваших правил, но проще не маркировать пакет к серверу.

Это первое, что приходит в голову.

Попробуйте вообще отключить всю маркировку, временно. Пусть все идет тупо через основной шлюз. .


-13-
Сообщения: 125
Зарегистрирован: 18 мар 2021, 12:45

/ip firewall mangle
add action=mark-packet chain=prerouting comment="NAT Loopback detect" \
connection-state=new dst-address="ВАШ ВНЕШНИЙ АДРЕС" in-interface-list=LAN \
new-packet-mark=nat-loopback passthrough=yes
# in-interface-list можно заменить на адрес или адреса

/ip firewall nat
add action=src-nat chain=srcnat comment=\
"2.1.1 - NAT Loopback replace address" log-prefix="NAT 2.1.1" \
packet-mark=nat-loopback to-addresses="ВНУТРЕНИЙ АДРЕС РОУТЕРА"

# дальше все порты просто пробрасываем наружу как обычно


Ответить