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

Маршрутизация + ipfw + два канал = почта не приходит

Добавлено: 2007-05-16 16:09:44
alex3
система такая (я немного упрощу): есть роутер с 3 ифейсами - 1 внешний с реальным айпи, 2- подключен к прову через приватный айпи, 3- локалка.
на 2-х внешних поднят нат (на 1-м с редиректом 25 порта внутрь сети на почтовик). шлюх по дефолту стоит на 1 ифейс. Возникла задача, балансировать между двумя каналами (1-м и 2-м). допустим меняем шлюз по дефолту на шлюз 2 (прова). Но запись МХ в домене указывает на адрес 1-го ифейса... Ситуация - на 1-й ифейс приходят пакеты от почтовиков (типа установить соединение), роутер их честно пробрасывает внутрь локалки, локальный почтовик честно отвечает и.... и ответные пакеты пруться через второй канал. ессно - соединения нет... у кого какие идеи как реализовать, чтоб инет шел через 2-канал, но почта с первого принималась

Добавлено: 2007-05-16 16:17:11
Alex Keda
релей на гейте

Добавлено: 2007-05-16 16:19:36
alex3
поподробнее...
то, что exim на рутере подымать - это я понял... но основной почтовик на рутер пихать не хочу.

Добавлено: 2007-05-17 8:01:52
alex3
млин. неужели никто с маршрутизацией не сталкивался? хорошо, переформулируем вопрос - как во фре сделать так чтобы входящий запрос на соединение снаружи добавлял в таблицу маршрутов, что ответ надо слать туда-то?

Добавлено: 2007-05-18 11:31:55
alex3
с релеем тоже, думаю, не получится. он тоже ответы будет слать по маршруту по умолчанию... похоже тут надо маршрутизацию копать очень глубоко.

Добавлено: 2007-05-18 11:45:49
dikens3
У тебя экспериментировать нельзя, а это плохо. Всегда что-то сразу не работает. Особенно фаер и, тем более, если первый раз решаешь такую задачу.

Для начала нужно понять как работает маршрутизация, я попробую объяcнить в силу моих знаний.

Исходящий траф:
1. Пакет приходит на лок. интерфейс. Должно сработать правило allow
2. Далее определяется исходящий интерфейс для этого пакета, тут сложнее.
2.а Сначала просматриваются статические маршруты (если найдены, то согласно им будет определён исходящий интерфейс)
2.б. Если нет в статических маршрутах адреса назначения, то устанавливается интерфейс default (если задан, иначе unroutable)
3. Далее ты определяешь,что же тебе нужно с этим делать - в твоём случае у тебя есть определённый внутренний IP-Адрес и порт почтового сервера.
Т.е. лучше сделать skipto 50000 на обработку таких пакетов.
4. В 50000 натишь всё и fwd через нужный тебе интерфейс.

На этом всё. Пакет уходит куда надо.
Входящий траф:
1. Пакет приходит на внешний интерфейс.
2. Попадает в nat в котором redirect на почтовик.
3. allow разNATченный пакет
4. allow с внутреннего интерфейса.

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

хорошо, переформулируем вопрос - как во фре сделать так чтобы входящий запрос на соединение снаружи добавлял в таблицу маршрутов, что ответ надо слать туда-то?
Я такого не встречал.

Добавлено: 2007-05-18 11:46:12
Alex Keda
exim позволяет задать используемый интерфейс

Добавлено: 2007-05-18 11:48:51
dikens3
lissyara писал(а):exim позволяет задать используемый интерфейс
У него внутри стоит сервак. И он у него один. :-)

Добавлено: 2007-05-18 11:50:28
Alex Keda
не. я предлагаю на гейте exim поставить и конфигом разрулить куда слать

Добавлено: 2007-05-18 12:00:23
dikens3
lissyara писал(а):не. я предлагаю на гейте exim поставить и конфигом разрулить куда слать
А что exim фаер научился обходить? Как напишешь фаер, так и будет. :-)
Напишешь фаер неправильно, и не туда пакет уйдёт, независимо от настроек exim'а.

Добавлено: 2007-05-18 12:11:16
Alex Keda

Добавлено: 2007-05-18 12:34:26
dikens3
lissyara писал(а):http://www.lissyara.su/?id=1230#interface
копать сюда
Я так понимаю это наезд? Не сможет exim обойти неправильно настроенный фаер, не сможет.

У него там фаер голову сломаешь(в смысле сложный и большой достаточно). Он реально просто написал, чтобы можно было понять.

Рекомендую почтовый траф пускать через один канал. Всегда один и тот же.
Как вариант нужно делать 2-е записи MX с одинаковым приоритетом, но разными IP-Адресами. (разных провов)
Ну и разруливать это дело.
На одном нате делать редирект, к примеру: 192.168.1.1
На другом на 192.168.1.2
И повесить exim слушать 2-а интерфейса.

И ещё что-нибудь думать. Может не работать. Т.к. я всё не продумывал, просто идея.

Добавлено: 2007-05-18 12:47:24
Alex Keda
вопрос про отправку вроде, а не приём.
отправлять он удет с указанного интерфейса.
но - не пробовал - надо пробовать.
в конце концов - никто не мешает на гейте поставить почтарь и поколупатсья - как он будет отправлять

Добавлено: 2007-05-18 13:11:08
alex3
вопрос именно про прием (входящая почта). не устанавливается соединение и соответственно smtp сессия.
пробовал так.

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

 divert nat_prov1 tcp from ip_post_local 25 to any
fwd gateway_prov1 from ipprov1 25 to any
что-то в этом духе. не заработало. нат видимо меняет порт.... не выходят пакетики с 25-го порта рутера....

Добавлено: 2007-05-18 13:25:19
dikens3
Приём тут не причём вовсе.

Скорее всего у тебя дело обстоит так:

1. Попытка удалённым серваком отправить почту на твой домен
2. Ищем MX запись и IP-Адрес
3. Подключаемся к IP-Адресу
4. Пакет (SYN) попадает на рутер (Канал1)
5. NAT на локальный и 25 порт
6. Приём входящего пакета и выход через внутр. интерфейс
7. Попадает на exim (на 25 порт)
8. Exim отвечает с 25 порта на рутер
9. Рутер выпускает ответ на SYN пакет через канал2. (Другой канал!!! )

Вывод? Соединений нет. :-) (Это совсем не значит что к тебе не коннектятся, а в том, что не получаю ответы от ТЕБЯ!!)
tcpdump на рутере, на cерваке с exim и смотреть что же не так.

P.S. FORWARD_EXTENDED собран на шлюзе? (тот самый что отвечает за fwd)

Добавлено: 2007-05-18 13:37:39
alex3
tcpdump на рутере, на cерваке с exim и смотреть что же не так.
сделано
P.S. FORWARD_EXTENDED собран на шлюзе? (тот самый что отвечает за fwd)
А как же он до разборок с маршрутизацией работал? там шлюз по дефолту вообще в локальную горсеть стоял... так что форвардинг работает.
но все равно - попробую еще раз
[/code]

Добавлено: 2007-05-18 13:38:44
dikens3
Не путай форвардинг с маршрутизацией.

Если сделано, то что видно на компе с exim? Есть вообще входящие соединения?

Добавлено: 2007-05-18 13:55:12
alex3
входящие есть... работает именно по той схеме, что ты набросал выше - ответный пакет уходит по другому каналу... ща экспериментирую с ipfw fwd & divert