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 -- To UNSUBSCRIBE, email to debian-russian-requ...@lists.debian.org with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org Archive: http://lists.debian.org/20130529144024.gh3...@sie.protva.ru