Re: nat не натит сеть, которая недоступна напрямую
On Wed, May 29, 2013 at 03:19:46PM +0400, Mikhail A Antonov wrote:
> 29.05.2013 14:27, Eugene Berdnikov пишет:
...
> > лишнего. Не пишите "! -d 172.16.2.44/32" в правиле SNAT, оно там излишне
> > потому что пакет с локальным dst_ip в POSTROUTING не попадёт. Но эта
> > мелочь режет глаз, а с чайниками в netdev никто разговаривать не хочет.
> Замечено следующее - если на сервере запущен какой-то сервис (пусть
> будет почтовый сервер) и пользователь из локальной сети захочет
> подключиться к этому серверу используя внешний адрес - у него ничего не
> выйдет. Если в правиле указать что если dst свой - не натить - то всё
> работает.
Это странно, потому что, повторю, пакет с локальным dst_ip не должен
попадать в POSTROUTING. И если указание локального адреса в правиле
что-то меняет, это уже повод задуматься... Я подозреваю, что в Вашей
конфигурации где-то дважды отрабатывает conntrack, потому что пакет
проходит "транзитом" через сетевую подсистему HN два раза, заныривая
по пути в виртуалку GW. И это обстоятельство может привести к каким-то
ошибкам (багам) в районе nat'a, потому что для nat'a существеннен факт
принадлежности пакета уже установленной коннекции.
Для диагностики этого дела можно дополнить tcpdump и трассировку цепочек
мониторингом коннекций. Запускайте conntrack -E (-n, -g, -j), кроме того,
можно нашинковать цепочки iptables логгированием (-j LOG) состояний
контрака, чтобы выяснить, в какой момент коннекция регистрируется ядром,
где она переходит из NEW в ESTABLISHED и т.д. Возможно, тогда станет
ясно, почему в POSTROUTING она неправильно обрабатывается.
> пользователь с ноутом, на котором настроен почтовый клиент, который
> подключается к серверу по имени mail.company.com.
> Он всегда будет получать внешний адрес mail.company.com и пытаться к
> нему подключиться.
> Из внешней сети он нормально будет работать. Из внутренней - нет.
Вообще говоря, в случае стандартной конфигурации шлюза подключение
через внутренний интерфейс по внешнему адресу должно работать.
> Можно нагородить костылей в виде заворачивания всех dns-запросов к себе
> и отдавать локальные адреса локальным пользователям, используя view в
> bind, но чем оно лучше?
Для вьюшек не нужно заворачивать запросы на шлюзе, достаточно просто
иметь собственный dns. :) Вьюшки это настолько полезный и удобный
функционал, что я просто не представляю, как без них жить... Но это
отдельный вопрос, никак не связанный с багами nat'а, a чем вьюшки
лучше nat'а -- ну, наверное тем же, чем тёплое лучше мягкого. :)
--
Eugene Berdnikov
Reply to: