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

Перенаправить вход с 25 порта на машину с другим default gw

Добавлено: 2009-12-01 23:42:12
Platinum
Добрый вечер! Имеется 2 сервера на FreeBSD 7.2, в качестве файрволла в обоих случаях используется pf. У обоих серверов провайдеры разные, куплены статические IP, первый получает интернет от провайдера по VPN, второй напрямую. Оба сервера соединены между собой и видят друг друга через "локалку серверов".При этом у первого сервера из интернета 25 порт открыт на вход/выход, у второго только на выход (вход злобным провайдером зарезан, и открывать он его не хочет(((). Проблема заключается в том, что на втором сервере поднят полноценный веб сервер, и необходима также отправка/получение почты. Отправка работает гладко, письма доходят до адресатов, а вот с приемом проблема - для входящих соединений 25 порт закрыт. При этом нужно как то заставить почту доходить до сервера.

Сервер 1: интерфейсы em0 (локалка до провайдера), em1 (локалка серверов), ng0 (интернет)
Сервер 2: интерфейсы em0 (интернет), em1 (локалка серверов)

Переносить почтовый сервер со 2го на 1й нельзя. Я думал настроить перенаправление 25 порта в файрволе 1го сервера на локальный адрес 2го, но не работает. Видимо запрос из внешки попадает на интерфейс 1го сервера ng0 проходит перенаправление, доходит до сервера через интерфейс em1, а ответ 2й сервер уже направляет через интерфейс em0 на основании заданного default gateway, при этом комп ессно на ответ с "левого" адреса не реагирует. Т.е. судя по всему надо как то задать так, чтобы ответ шел туда, откуда пришел, т.е.:

пришел по цепочке: адресат -> srv1 ng0 -> srv1 em1 ->srv2 em1
и уйти должен: srv2 em1 -> srv1 em1 -> srv1 ng0 -> адресат
а сейчас уходит: srv2 em0 -> адресат

Из инструментов - только извращенная фантазия и полный доступ к обоим серверам. :smile:
Помогите пожалуйста реализовать обратный путь, или если так сделать невозможно, как еще можно попробовать обойти зарезанный порт?
Заранее спасибо :smile:

Re: Перенаправить вход с 25 порта на машину с другим default gw

Добавлено: 2009-12-02 13:40:24
schizoid
а если так:
на первом сервере настроить релей для второго
второму серверу, сказать что б слал почту не в мир, а на первый.

ну и наверна ж MX записи в ДНС правильные должны быть

Re: Перенаправить вход с 25 порта на машину с другим default gw

Добавлено: 2009-12-02 14:46:13
terminus
или перейдите на ipfw и тогда вот вам решение http://www.lissyara.su/?id=1967#example_3
или делайте то же самое на pf

Re: Перенаправить вход с 25 порта на машину с другим default gw

Добавлено: 2009-12-02 20:58:28
Platinum
terminus, спасибо, посмотрел, там получается вроде как двойной нат, т.е. вся почта будет как бы слаться от шлюза, и если начнут спамить, возникнет вопрос, как банить спамящие ипы, ведь формально почта будет идти с локального адреса :unknown:

schizoid,
второму серверу, сказать что б слал почту не в мир, а на первый.
да с отправкой проблем нет, с получением входящей почты траблы.. (

А можно на 1м сервере, который с открытыми портами поднять почтовый, чтобы он принимал всю почту, идущую на сервер MX записи в ДНС, а и сразу же сбрасывал по внутренней сетке 2му серверу, на котором она и должна быть? Или почту отправлять и получать со 2го через релей 1го. Просто все ограничения из за того, что аккаунты почтовые акки и акки пользователей привязаны к тому серверу, рулится все автоматом, и вынести их на отдельный, вызовет наверняка не меньший гемор :-D

Re: Перенаправить вход с 25 порта на машину с другим default gw

Добавлено: 2009-12-03 11:24:25
schizoid
может картинку намалевать? чета я запутался. мне почему-то кажется, что можно решить на уровне самого почтового сервера и ДНСа, а не городить с натама и форвардами....хотя могу ошибаться :)

Re: Перенаправить вход с 25 порта на машину с другим default gw

Добавлено: 2009-12-03 11:28:37
Gamerman
Я так понимаю, что письма ломятся на реал-ИП второго сервака на 25 порт, который закрыт.
Если МХ переписать на Реал-ИП первого сервака и пробросить порт на второй, то должно сработать.

Re: Перенаправить вход с 25 порта на машину с другим default gw

Добавлено: 2009-12-03 15:53:24
Platinum
schizoid,
может картинку намалевать?
готово :)
map2.png
схемка
server 1 - просто шлюз. Порт открыт в обе стороны, можно отправлять/получать почту.
server 2 -web, mail сервер. Почту с него отправить можно, она уйдет, но получить почту невозможно, на вход порт закрыт провайдером.
Gamerman, прописывал в ДНС "mx.domain.ru 99.66.99.66", настраивал проброс, ничего не дало - получаем запросный пакет с em1 - а ответ сервер отправляет через default gw через em0.. :unknown: Должно же соединение установится, а получается клиент (другой почтовый сервер) кидает пакет на 99.66.99.66, а ответ приходит ему с 77.88.77.88 .. он его отбрасывает ессно, а соединение отваливается по таймауту, т.к. с 99.66.99.66 не получен ответ. :st:

Re: Перенаправить вход с 25 порта на машину с другим default gw

Добавлено: 2009-12-03 18:52:47
schizoid
на сервере 2 стоит МТА?
на сервере 1 стоит МТА?
доменом вы рулите?
покажите еще где какая запись МХ и А

Re: Перенаправить вход с 25 порта на машину с другим default gw

Добавлено: 2009-12-03 21:36:07
Gamerman
а получается клиент (другой почтовый сервер) кидает пакет на 99.66.99.66, а ответ приходит ему с 77.88.77.88 .. он его отбрасывает ессно,
Да, действительно, так и будет. Нужно научить второй сервер отправлять пакеты на 25 порт через первый. Например используя nat i ipfw.

Re: Перенаправить вход с 25 порта на машину с другим default gw

Добавлено: 2009-12-04 8:53:13
Platinum
на сервере 2 стоит sendmail+tls+sasl2-8.14.3_1
на сервере 1 ничего не стоит, но можно поставить
доменом ессно рулю я, сервер 2 работает еще и как днс :smile:

Сейчас mx прописан на сервер 1.
domain.ru. 3600 IN A 77.88.77.88
domain.ru. 3600 IN MX 10 mx.domain.ru.
mx.domain.ru. 3600 IN A 99.66.99.66

Re: Перенаправить вход с 25 порта на машину с другим default gw

Добавлено: 2009-12-04 11:16:35
schizoid
Platinum писал(а):на сервере 2 стоит sendmail+tls+sasl2-8.14.3_1
на сервере 1 ничего не стоит, но можно поставить
доменом ессно рулю я, сервер 2 работает еще и как днс :smile:

Сейчас mx прописан на сервер 1.
domain.ru. 3600 IN A 77.88.77.88
domain.ru. 3600 IN MX 10 mx.domain.ru.
mx.domain.ru. 3600 IN A 99.66.99.66
вариант1.
поставить на сервер 1 MTA как релей. им же принимать и отправлять почту.
MX для домена тоже натравить на первый сервер
на втором в качестве релея указывать почтовик на сервере 1.

вариант2.
на сервере 2 форвардить все запросы OUT 25 порт на 1-й сервер типа:
fwd 172.16.16.17 ip from me to any 25
MX для домена натравить на первый сервер
на первом сервере настроить проброс 25-го порта на 2-й сервер.

это мое видение...

Re: Перенаправить вход с 25 порта на машину с другим default gw

Добавлено: 2009-12-04 21:02:31
Platinum
почему то только сейчас додумался посмотреть на то, на что надо было глянуть раньше... :-o
видно каким образом отвечаем яндексу....

all tcp 172.16.16.16:25 -> 77.88.77.88:60185 -> 95.108.130.92:36477 SYN_SENT:CLOSED

ответ уходит вообще с совершенно других портов, каждый раз разных, причем отнюдь не 25..
так что походу в моем случае только 1 вариант.... :(
А что посоветуете в качестве релея? так же sendmail поставить или exim? :smile:

Re: Перенаправить вход с 25 порта на машину с другим default gw

Добавлено: 2009-12-04 21:06:30
Gamerman
all tcp 172.16.16.16:25 -> 77.88.77.88:60185
Странно, а чего он уходит с локального ІР?

Re: Перенаправить вход с 25 порта на машину с другим default gw

Добавлено: 2009-12-04 21:09:56
Platinum
не, это с правила проброса портов, получаем на внутренний интерфейс от 1го сервера, а отсылаем ответ со своего внешнего (т.к. 25 порта нету в исходящем соединении, все идет через дефолт, минуя свеженаписаное правило), и кидаем серверу яндекса тоже на отнюдь не 25 порт... вообще странно, я думал почтовые сервера исключительно по 25 му общаются между собой... :unknown:

Re: Перенаправить вход с 25 порта на машину с другим default gw

Добавлено: 2009-12-04 21:19:48
Gamerman
Если я правильно читаю картинку, то 172.16.16.16 и 77.88.77.88 - это сервер2. Почему идет внутри проброс между интерфейсами? Может у вас настройки, что слушать только второй интерфейс?

Re: Перенаправить вход с 25 порта на машину с другим default gw

Добавлено: 2009-12-04 21:36:33
Platinum
Все верно, это сервер2. PF показывает путь идущего соединения, приняли запрос на соединение пробросом от 1го:25 на локальный адрес:25 - отправляем ответ серверу, запросившему соединение назад, как и весь остальной трафик, через внешний интерфейс дефолтом. А сервер нас шлет с нашим ответом куда подальше :smile:

А настройки сейчас стоят слушать все с 25 портом :) Есть еще компы с динамикой, которые через один и тот же инетовский свитч вместе с сервером2 подключены, они нормально с ним "разговаривают"

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

220 server2.domain.ru ESMTP Sendmail 8.14.3/8.14.3; Fri, 4 Dec 2009 21:44:54 +0300 (MSK)
А дальше все идет отдельным вланом до провайдера, и там он собственно мне почту, идущую к серверу и режет :(

Re: Перенаправить вход с 25 порта на машину с другим default gw

Добавлено: 2009-12-04 21:54:28
Gamerman
Так это он при пробросе так работает. Теперь уже понятно. :)
Тогда форвардить

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

fwd 172.16.16.17 ip from me to any 25
тоже не получиться, так как другие смтп-сервера отправляют запрос с другого порта.
Но можно форвардить от имени сервиса смтп.
типа

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

fwd 172.16.16.17 ip from me to any uid mail 
mail замени на свой правильный

PS. За синтаксис не ручаюсь, потому что не работал с PF.

Re: Перенаправить вход с 25 порта на машину с другим default gw

Добавлено: 2009-12-05 1:49:45
Platinum
После прописывания определенных шаманских строк, типа 1 и 3 все таки пакеты стали уходить куда нужно, но теперь по 77.88.77.88, с тех компов, которые в инетовском свитче, раньше можно было зайти на 77.88.77.88:25 порт, а теперь нет.. только 172.16.16.16:25 и 99.66.99.66:25 с редиректом. Помоему косяк :smile:

server1:
nat pass on $srv_if from any to 172.16.16.16 port 25 -> ($srv_if)
rdr pass on $vpn_if proto tcp from any to any port 25 -> 172.16.16.16 port 25

server2:
pass out route-to ($int_if 172.16.16.17) proto tcp from 172.16.16.16 port 25 to any