Страница 1 из 2

Трудности с Hairpin NAT

Добавлено: 16 мар 2019, 11:09
Sir_Prikol
Добрый день, имеем следующий конфиг:

Головной рутер - RB3011 - 192.168.4.0/22
В него воткнута WiFi точка 5Ghz
Так-же в него воткнут switch CRS326, он получает адрес из этой-же подсети (без IP эффект тот-же, о котором пишу)
Всё в бридже, proxy-arp включён

Теперь получаем проблему:
С клиентов точки 5Ghz - я могу попасть на сайт внутри сети с nginx по внешнему доменному имени, даже если у сайта настроена через nginx прокси переадресация на другую машину (пример, сайт крутится на 192.168.7.178 через proxy_pass nginx сделана переадресация на 192.168.7.254, с WiFi точки, воткнутой напрямую в RB3011 - всё отрабатывает, зайти могу, с любой точки, воткнутой в свитч, и прямое подключение воткнутое в свитч - соединение на сайт, по домену, виснет, как только я перетыкаю точку из свитча в RB3011 - всё открывается)

В следствии вопрос, что не так:

В логах вижу, что пакеты вылетают с клиента на внешний адрес и замирают (это со свитча)
С RB3011 - пакеты летят на внешний адрес и нормально попадают в NAT

UPD:

Правила маскардинга сделано с исключением локального бриджа, если включаю общее правило - то всё работает

Это не работает

Код: Выделить всё

chain=srcnat action=masquerade out-interface=!WiFi+LAN log=no
Это работает

Код: Выделить всё

chain=srcnat action=masquerade log=no
Но, если я оставлю второе правило, то все мои соединения внутри сети, будут проходить от имени RB3011,а надо чтоб светился каждый IP

Ну и второй трабл, так как у меня PCC на 5 аплинков и 6-ой резервный, то второе правило наглухо вырубает проброс портов

Re: Трудности с Hairpin NAT

Добавлено: 16 мар 2019, 18:57
Chupaka
Добрый. Вот зачем всё в кучу мешать-то? :)

> proxy-arp включён
Зачем?

> С клиентов точки 5Ghz - я могу попасть на сайт внутри сети с nginx по внешнему доменному имени
А внешнее доменное имя ведёт на внешний IP-адрес или на внутренний?

> даже если у сайта настроена через nginx прокси переадресация на другую машину
Это не переадресация, клиент всё ещё обращается исключительно к nginx'у, он не знает, какие там у него внутри настройки

> если я оставлю второе правило, то все мои соединения внутри сети, будут проходить от имени RB3011,а надо чтоб светился каждый IP
Так одно из решений проблемы Hairpin NAT - это и есть тотальный маскарадинг. Если оно не подходит вам - используйте другое. Второе решение - прописать в DNS внутренний адрес сайта (ну и заставить клиентов использовать этот DNS). Третье - вынести машину с сервером на другой интерфейс (который будет не коммутироваться в рамках этого же бриджа, а маршрутизироваться).

> так как у меня PCC на 5 аплинков и 6-ой резервный, то второе правило наглухо вырубает проброс портов
Не совсем понимаю пока, как это связано :)

Re: Трудности с Hairpin NAT

Добавлено: 16 мар 2019, 19:15
Sir_Prikol
Chupaka писал(а): 16 мар 2019, 18:57 Зачем?
Надо было в какой-то из конфигурации, не работало без этого параметра, пришли к выводу его включить - заработало (вспоминать тяжко, но оно точно нужно)
Chupaka писал(а): 16 мар 2019, 18:57 А внешнее доменное имя ведёт на внешний IP-адрес или на внутренний?
Ведёт на внешний, по внешнему DNS
Chupaka писал(а): 16 мар 2019, 18:57 Это не переадресация, клиент всё ещё обращается исключительно к nginx'у, он не знает, какие там у него внутри настройки
Да я в nginx в портах запутался, слишком много правил было, уже поправил, не актуально
Chupaka писал(а): 16 мар 2019, 18:57 Так одно из решений проблемы Hairpin NAT - это и есть тотальный маскарадинг. Если оно не подходит вам - используйте другое. Второе решение - прописать в DNS внутренний адрес сайта (ну и заставить клиентов использовать этот DNS). Третье - вынести машину с сервером на другой интерфейс (который будет не коммутироваться в рамках этого же бриджа, а маршрутизироваться).
Chupaka писал(а): 16 мар 2019, 18:57 Скорее вынесу в маршрутизацию, но, как показал сегодняшний эксперимент, пока не актуально (но сделать надо), так как отовсюду, кроме телефонов и дитячих компов, попасть на вебсервер можно
Chupaka писал(а): 16 мар 2019, 18:57 Не совсем понимаю пока, как это связано :)
А это были глюки уже сервера мониторинга, он не хотел видеть сайт при другом маскараде, что с ним не так - не знаю, к счастью не актуально :)

В общем, пока экспериментировал, я так и не понял, почему через свитч не работает, а напрямую воткнутое в RB работает, такое ощущение что всё, что проходит через свитч, который в том-же бридже, почему-то не бежит именно по 80, 443 портам, а вот это для меня тёмный лес, так как по ssh и ftp отрабатывает

Re: Трудности с Hairpin NAT

Добавлено: 16 мар 2019, 19:18
Sir_Prikol
Вспомнил, без proxy-arp сетевой принтер не работал от всех точек, только после включения этого параметра, все устройства увидели принтер

Re: Трудности с Hairpin NAT

Добавлено: 16 мар 2019, 19:20
Chupaka
Sir_Prikol писал(а): 16 мар 2019, 19:15 Ведёт на внешний, по внешнему DNS
Тогда надо разобраться, почему с вайфая оно работает =) Возможно, потому, что трафик с точки на сервер идёт через роутер (а там какой Use IP Firewall на бридже включен, может), а с CRS на сервер - напрямую, в обход роутера.

Re: Трудности с Hairpin NAT

Добавлено: 16 мар 2019, 19:26
Sir_Prikol
Опа, точно, вот что у меня свербило, сервак воткнут в тот-же свитч, вот и получается, что пакет, в ответе от сервера, отправляется напрямую на внт=утренний адрес, а не на внешний, вот и идёт обрыв соединения, если я перенесу быллинг на рутер, то заработает, или, если я воткну ещё один свитч через рутер, то оно то-же заработает :)

Re: Трудности с Hairpin NAT

Добавлено: 16 мар 2019, 19:28
Sir_Prikol
Но этот глюк именно при использовании proxy_pass в nginx при переадресации на ещё один сервер :) Проще в nginx подменять ip при переадресации :)

Re: Трудности с Hairpin NAT

Добавлено: 16 мар 2019, 22:51
Chupaka
Ещё раз: proxy_pass делает запросы от имени nginx'а, оно никак не влияет на работу запроса от клиента к nginx'у.

Re: Трудности с Hairpin NAT

Добавлено: 16 мар 2019, 23:10
Sir_Prikol
Знаю, но не работает именно когда выставлен proxy_pass :) Вот из принципа, видео могу снять и показать :)

10 мин

Re: Трудности с Hairpin NAT

Добавлено: 16 мар 2019, 23:17
Sir_Prikol
Вот видео, с переключением по WiFi с RB на свитч и обратно

С RB доступ есть
С switch только на сайт, на proxy nginx доступа нет


https://monosnap.com/file/OUzePihkkpqly ... E6aflLJi7P

Могу снять с конфигами

Re: Трудности с Hairpin NAT

Добавлено: 16 мар 2019, 23:31
Chupaka
Ping на оба домена показывает один и тот же IP? WebProxy не используется? Сложно гадать, не зная конфигурации роутера

Re: Трудности с Hairpin NAT

Добавлено: 16 мар 2019, 23:39
Sir_Prikol
После последних настроек (Вы, молодой человека, сами у меня в винбоксе ковырялись) - никаких изменений, кроме добавления пары аплинков, не произошло. Пинги на оба домена покажут то-же самое, по 4 IP на каждый домен, WebProxy вообще не использую, хотя уже была мысль, но до последнего момента разруливал nginx и не задумывался что может возникнуть такой трабл в одном бридже и именно со свитча, с EoIP туннелей в том-же бридже - такой проблемы нет
Могу заного пустить на RB и через RoMON на свитч, чтобы просто глянуть что и как :)

Re: Трудности с Hairpin NAT

Добавлено: 17 мар 2019, 00:26
Sir_Prikol
Думаю попробовать отказаться от маскарада совсем и всё разруливать dst-nat, через adress листы и листы интерфейсов

Re: Трудности с Hairpin NAT

Добавлено: 17 мар 2019, 01:50
Sir_Prikol
В общем выкрутился стандартно, не даром у меня это правило было, которое мы с ВАми благополучно потушили 3 месяца назад :)

Код: Выделить всё

/ip firewall filter
chain=srcnat action=masquerade protocol=tcp dst-address=192.168.7.178 dst-port=80,443 log=no log-prefix="web"
Я тогда уже не помнил почему я его втыкал, дошло только сейчас, когда начал вспоминать поэтапно, что и когда отвалилось.
Умом я понимаю, что этого правила быть не должно, всё в одном L2 сегменте, но без него нихрена proxy_pass в nginx не работает, вернее я не могу достучаться через proxy_pass nginx'а, хотя снаружи всё пашет

Re: Трудности с Hairpin NAT

Добавлено: 17 мар 2019, 15:33
Chupaka
Так всё же, включен или выключен Use IP Firewall в бриджах?

Re: Трудности с Hairpin NAT

Добавлено: 17 мар 2019, 15:37
Sir_Prikol
Включён

Re: Трудности с Hairpin NAT

Добавлено: 17 мар 2019, 15:41
Chupaka
Тогда в целом всё, видимо, как я и объяснил выше. Но вообще схема костыльная донельзя, без ста грамм не разберёшься :)

Re: Трудности с Hairpin NAT

Добавлено: 17 мар 2019, 15:49
Sir_Prikol
Это точно, я, помнится, говорил, что оно поломалось после какого-то обновления, вот до сих пор огребаем. Ещё года полтора назад - работало на ура, почему мысль и возникает, убрать маскарад и построить на src/dst :)

Re: Трудности с Hairpin NAT

Добавлено: 17 мар 2019, 15:55
Chupaka
Sir_Prikol писал(а): 17 мар 2019, 15:49 почему мысль и возникает, убрать маскарад и построить на src/dst :)
Шило на мыло?.. Без Hairpin NAT реализовать - не вариант? :)

Re: Трудности с Hairpin NAT

Добавлено: 17 мар 2019, 16:15
Sir_Prikol
К сожалению - не вариант,, вернее вариант, но он потребует гигантской переделки всего, а на 3011 я не буду это дело, возьму себе или 4011 (когда его допилят) или CCR1016, на крайняк 1100 ;но он без SFP), вот тогда и займусб глобальным переделыванием

Re: Трудности с Hairpin NAT

Добавлено: 17 мар 2019, 18:10
Chupaka
Добавление записей в DNS — не очень гигантская переделка :)

Re: Трудности с Hairpin NAT

Добавлено: 17 мар 2019, 18:15
Sir_Prikol
Я маршрутами делать буду :) DNS - не желательно :) Когда dpi внедрять начну, тогда точно DNS-ами разрулю :)

Re: Трудности с Hairpin NAT

Добавлено: 17 мар 2019, 18:15
Sir_Prikol
У меня тут OSPF не корректно работает, вот где загвоздка, но скоро решу её, перестала отдаваться в одну подсеть :)

Re: Трудности с Hairpin NAT

Добавлено: 17 мар 2019, 18:35
Chupaka
Маршрутами - в смысле, выделением сервера в отдельную подсеть?.. И что с ДНС не так?

Re: Трудности с Hairpin NAT

Добавлено: 17 мар 2019, 18:48
Sir_Prikol
У меня сейчас DNS отдаётся 3-х видов, для детей, для взрослых и для халявщиков, использовать внутренние - не комильфо, хотя можно поставить TTL в минуту жизни, но всё равно, оно должно как-то работать без подмены записи :)