PF + NAT + MPD 5.3 - странный баг

Проблемы установки, настройки и работы Правильной Операционной Системы

Модератор: terminus

Правила форума
Убедительная просьба юзать теги [cоde] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Аватара пользователя
Dorlas
сержант
Сообщения: 257
Зарегистрирован: 2008-07-18 22:17:49

PF + NAT + MPD 5.3 - странный баг

Непрочитанное сообщение Dorlas » 2009-05-08 11:04:00

Сегодня столкнулся с очень странным багом:

Была у меня некогда задача: Есть два интернет-канала, оба IP статические, один канал - основной (defaultrouter), через второй должен работать почтовый SMTP-сервер Postfix (принимать и отправлять почту).

Именно в тот момент активно изучал PF - с его помощью и решил тогда задачу:

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

# Правило для входящей почты:
pass in on $if_ext_second reply-to ($if_ext_second $router_second) inet proto tcp to $if_ext_second port 25 keep state

# Правила для отправляемой почты:
# NAT:
nat on $if_ext_first inet proto tcp from self to any port 25 -> $if_ext_second
# Фильтрация:
pass out route-to ( $if_ext_second $router_second ) inet from $if_ext_second keep state
Реализовано это было на FreeBSD 7.1

Сегодня возникла точно такая же задача, система такая же (FreeBSD 7.1), разница лишь в том, что основной Интернет-канал - через PPTP (использовал VPN-клиент MPD v5.3).

Сделал такие же правила (с учетом интерфейсов в /etc/pf.conf), применил (pfctl -f /etc/pf.conf) и стал проверять.
Первое правила (для входящей почты) работает замечательно, но вот второе вызывает полное зависание системы (нет ничего на экране, не реагирует клавиатура, power - помогает только reset).

Причем зависает только тогда, когда в правило NAT попадает пакет - в моем случае зависание стабильно (проверял несколько раз) вызывает такая команда:

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

echo "test mail" | mail -s "test mail" admin@xxxx
В общем такая ситуация...думаю, дело связано с NetGrath и хуками/нодами (т.е. с MPD и ее подсистемами)...

Буду раз любому совету!

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

paradox
проходил мимо
Сообщения: 11620
Зарегистрирован: 2008-02-21 18:15:41

Re: PF + NAT + MPD 5.3 - странный баг

Непрочитанное сообщение paradox » 2009-05-08 11:19:34

mav@ фрии бсд орг
пишите письма

Аватара пользователя
Dorlas
сержант
Сообщения: 257
Зарегистрирован: 2008-07-18 22:17:49

Re: PF + NAT + MPD 5.3 - странный баг

Непрочитанное сообщение Dorlas » 2009-05-08 11:27:02

Александру я первым делом написал :)

Вот думаю, может попробовать MPD более старых версий или pptp-client ?

Жаль, что сервер далеко от меня находится (а народ там вовсю работает) :(

paradox
проходил мимо
Сообщения: 11620
Зарегистрирован: 2008-02-21 18:15:41

Re: PF + NAT + MPD 5.3 - странный баг

Непрочитанное сообщение paradox » 2009-05-08 11:42:33

ppp попробуй

mpd нет смысла пробовать
поскольку там основное все в ядре

Аватара пользователя
Dorlas
сержант
Сообщения: 257
Зарегистрирован: 2008-07-18 22:17:49

Re: PF + NAT + MPD 5.3 - странный баг

Непрочитанное сообщение Dorlas » 2009-05-08 12:14:08

To paradox:

Как думаешь, вот это моя ситуация: ???
http://sourceforge.net/forum/forum.php? ... m_id=44693

paradox
проходил мимо
Сообщения: 11620
Зарегистрирован: 2008-02-21 18:15:41

Re: PF + NAT + MPD 5.3 - странный баг

Непрочитанное сообщение paradox » 2009-05-08 12:17:03

собери ядро с дебагом
и сделай bt
а иначе не понять где у тебя падает

Аватара пользователя
Dorlas
сержант
Сообщения: 257
Зарегистрирован: 2008-07-18 22:17:49

Re: PF + NAT + MPD 5.3 - странный баг

Непрочитанное сообщение Dorlas » 2009-05-09 18:01:23

Почитал man 5 postconf, нашел вот такую штуку в описании inet_interfaces:

When inet_interfaces specifies just one IPv4 and/or IPv6 address that
is not a loopback address, the Postfix SMTP client will use this
address as the IP source address for outbound mail. Support for IPv6 is
available in Postfix version 2.2 and later.

Сменил параметр в main.cf, перестартовал postfix, закомментировал NAT-правило в PF, оставил только такое:

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

pass out route-to ( $if_ext_second $router_second ) inet from $if_ext_second keep state
Попробовал послать письмо - ушло с нужного адреса - ура! :)

Сама система почтарь видит (несмотря на отсутствие порта 25 на loopback), поэтому осталось только дать доступ локалке на SMTP:

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

rdr inet proto tcp from $if_lan/24 to $if_lan port 25 -> $if_ext_second port 25
Думаю, на этом задачу можно считать решенной :)

Аватара пользователя
iZEN
ст. лейтенант
Сообщения: 1089
Зарегистрирован: 2007-09-15 16:45:26
Контактная информация:

Re: PF + NAT + MPD 5.3 - странный баг

Непрочитанное сообщение iZEN » 2009-05-09 21:57:10

"keep state" можно не писать. Оно по умолчанию для протокола tcp выставляется.
GNU/Linux — это не Unix и даже никогда им не был, и, что самое смешное, никогда им не станет — GNU's Not Unix