The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"PF + NAT + MPD 5.3 - странный баг"
Вариант для распечатки  
Пред. тема | След. тема 
Форумы OpenNET: Виртуальная конференция (Public)
Изначальное сообщение [ Отслеживать ]

"PF + NAT + MPD 5.3 - странный баг"  +/
Сообщение от Dorlas (??) on 08-Май-09, 12:14 
Сегодня столкнулся с очень странным багом:

Была у меня некогда задача: Есть два интернет-канала, оба 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 и ее подсистемами)...

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

Высказать мнение | Ответить | Правка | Cообщить модератору

 Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "PF + NAT + MPD 5.3 - странный баг"  +/
Сообщение от YuryD (??) on 08-Май-09, 12:58 
>Сегодня столкнулся с очень странным багом:
>
>Была у меня некогда задача: Есть два интернет-канала, оба IP статические, один
>канал - основной (defaultrouter), через второй должен работать почтовый SMTP-сервер Postfix
>(принимать и отправлять почту).

Нормальный почтовый демон и без pf может слушать и отправлять почту с указанных ip.

Про грабли self в pf и mpd - уже описано и решено. Хотя бы у разработчиков mpd почитайте
http://sourceforge.net/forum/forum.php?forum_id=44693

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

3. "PF + NAT + MPD 5.3 - странный баг"  +/
Сообщение от kam (ok) on 09-Май-09, 06:46 
> Нормальный почтовый демон и без pf может слушать и отправлять почту
>с указанных ip.

Я бы не был столь категоричен. Без специальных манипуляций исходящая почта не пойдёт во второй канал, а будет уходить по default route, какой бы ИП-адрес вы почтовому демону не указали. А чем вы будете заворачивать траффик во второй канал: pf или ipfw - не важно.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

2. "PF + NAT + MPD 5.3 - странный баг"  +/
Сообщение от kam (ok) on 09-Май-09, 06:39 
>[оверквотинг удален]
>помогает только reset).
>
>Причем зависает только тогда, когда в правило NAT попадает пакет - в
>моем случае зависание стабильно (проверял несколько раз) вызывает такая команда:
>echo "test mail" | mail -s "test mail" admin@xxxx
>
>В общем такая ситуация...думаю, дело связано с NetGrath и хуками/нодами (т.е. с
>MPD и ее подсистемами)...
>
>Буду раз любому совету!

Сначала нужно определиться и явно указать постфиксу, на каком интерфейсе слушать и с какого ИП-адреса выполнять исходящие соединения. Мне почему-то кажется что сейчас он у вас слушает на всех, а инициирует с какого ему ос скажет.
После этого будет понятно, нужно ли правило с НАТ вообще.
В конфигурации с двумя каналами применять self опрометчиво. Вы думаете pf угадает ваши намерения и подставит нужный адрес источника? Привыкайте явно указывать системе что вы от неё хотите.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

4. "PF + NAT + MPD 5.3 - странный баг"  +/
Сообщение от Dorlas (??) on 09-Май-09, 19:00 
>Сначала нужно определиться и явно указать постфиксу, на каком интерфейсе слушать и
>с какого ИП-адреса выполнять исходящие соединения. Мне почему-то кажется что сейчас
>он у вас слушает на всех, а инициирует с какого ему
>ос скажет.
>После этого будет понятно, нужно ли правило с НАТ вообще.
>В конфигурации с двумя каналами применять self опрометчиво. Вы думаете pf угадает
>ваши намерения и подставит нужный адрес источника? Привыкайте явно указывать системе
>что вы от неё хотите.

kam - спасибо за подсказку!

Почитал 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

Думаю, на этом задачу можно считать решенной :)

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Оцените тред (1=ужас, 5=супер)? [ 1 | 2 | 3 | 4 | 5 ] [Рекомендовать для помещения в FAQ]




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру