Задать вопрос
@nsnoob

Port Forwarding с рабочей локалкой. Как правильно настроить Hairpin NAT?

Добрый день.
Что имеется:
есть локально прописанные днс имена(пример: service1.lan.local, service2.lan.local). также есть внешние днс имена (service3.example.com, service4.example.com). Все адреса идут на один сервер в локальной сети. Локальная сеть 172.16.0.0/24.

firewall/nat:
chain=srcnat action=masquerade out-interface-list=wan
chain=dstnat action=dst-nat to-addresses=172.16.0.150 protocol=tcp dst-address=8.8.8.8 in-interface-list=all dst-port=80,443
chain=srcnat action=masquerade protocol=tcp dst-address=172.16.0.150 dst-port=80,443


Все сервисы лежат на указанном в таблице сервере(150).

Суть проблемы:
При выключенном правиле для hairpin, локальная сеть имеет доступ к миру, локальные днс имена работают, но не работают сервисы, которые имеют внешние днс имена.
При включении правила для hairpin начинают работать внешние днс, а локальные перестают и в дополнение - у локалки перестает работать доступ в мир.
В чем я могу ошибаться при настройке и как настраивается правильный NAT, чтобы в локалке были доступны и интернет и локальные ДНС, и внешние ДНС?

ПС С микротом на "вы", пока что имею лишь базовые знания. Потому буду рад ссылкам на правильные туториалы по данной проблеме.
  • Вопрос задан
  • 292 просмотра
Подписаться 1 Простой 2 комментария
Решения вопроса 1
@nsnoob Автор вопроса
Помог совет LionG с темы


Задался этим же вопросом и нашел решение на правилах без скриптов и тп...

add action=masquerade chain=srcnat out-interface=wan
add action=masquerade chain=srcnat dst-address=192.168.10.0/24 out-interface=local-bridge src-address=192.168.10.0/24

Проброс порта:
add action=dst-nat chain=dstnat dst-address=!192.168.10.1 dst-address-type=local dst-port=80 protocol=tcp to-addresses=192.168.10.10 to-ports=80

wan - внешний интерфейс
local-bridge - мост локалки
192.168.10.0/24 - локалка
192.168.10.10 - локальный адрес сервера
192.168.10.1 - default gateway
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
jamakasi666
@jamakasi666
Просто IT'шник.
Лучше не nat'ом баловаться а сделать все на уровне dns.
Пусть внешний dns отдает всему миру
s1.example.com A 1.2.3.4 (внешний ip роутера)
service3.example.com CNAME s1.example.com
service4.example.com CNAME s1.example.com

А внутренний DNS на микротике имеет такие записи и как вышестоящий использует внешний ns
s1.example.com A 172.16.0.10 (локальный ip сервера в локалке)
service1.example.com CNAME s1.example.com
service2.example.com CNAME s1.example.com

Как итог, внешний мир видит только service2 и service 3, а клиенты внутри локалки видят service1, service2, service3 и service4. И никаких заворотов натами не нужно.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы