URL: https://www.opennet.ru/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID1
Нить номер: 25579
[ Назад ]

Исходное сообщение
"помогите с iptables, пожалуйста"

Отправлено kmxb , 27-Янв-03 01:28 
Здравствуйте все.
Помогите решить одну задачу с перенаправлением почты.
Уж не знаю, насколько это возможно, но ответа в результате поиска и вопросов я пока не нашел. Извините, если плохо искал и приходится спрашивать заново. Линукс использовал раньше только как рабочую станцию, а как мост между www и localnet ни разу не настраивал. Чтение iptables tutorial и прочая не помогли...:(

Попробую объяснить:
1. Комп с линуксом (обзову его server1) подключается к интернету через модем, получает динамический IP. Кроме того, в локальной сети эта машина имеет реальный IP, например 192.168.8.1.
2. Поставил на этой машине сквид. Через него ходят в интернет с клиентских машин. С этим все нормально.
3. Хотелось бы, чтоб с клиентских машин почта забиралась оутлуком (откуда-нибудь с pop.mailru.com) ну и отправлялась, соответственно.

Пример: Раньше (под виндой) я запускал что-то вроде ProxyPlus или BrowseGate на такой машине (server1) и делал маппинг портов. Т.е. все, что поступало на порт, скажем - 625  компьютера server1 - отправлялось на smtp.mailru.com:25, а запрос на server1:6110 отправлялся на imap.mailru.com:110. Ну так далее... В общем были назначены порты для нескольких почтовых серверов.

А как сделать это сейчас - не понимаю. Как перенаправить запрос с порта на порт, в общем более-менее понятно, но вот чтоб именно на smtp.mailru.com:25, а не просто на 25(и т.д.) - не въезжаю...:)
Может есть другие способы, пока не знаю. Посоветуйте, пожалуйста, каким образом это сделать. Заранее спасибо.

На всякий случай: kernel v2.4.20, iptables v1.2.6a, ipchains v1.3.10


Содержание

Сообщения в этом обсуждении
"RE: помогите с iptables, пожалуйста"
Отправлено harlan , 27-Янв-03 09:43 
Если я правильно понял, то тебе необходимо, что бы пользователь из сети мог использовать твой канал в интернет?
В таком случае поднимаешь маскарадинг:
iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE
где ppp0 - твой интерфейс с провайдером.
В этом случае, каждый пользователь сможет выходить во-вне.

Если же тебе необходимо перенаправлять с порта на другой порт и подругому  IP-адресу, то используй DNAT

iptables -t nat -A PREROUTING -p TCP -d 192.168.8.1 --dport 6110 -j DNAT --to-destination 1.2.3.4:25
где 1.2.3.4 - IP-адрес smtp.mailru.com
В этом случае, пакеты отправленные на sever1:6110 будут автоматом перенаправляться на smtp.mailru.com:25, но опять же, в этом случае нужно будет включить маскарадинг, что бы тот сервер не путался с серыми адресами.
Обратное преобразование (при ответе сервера) будет происходить автоматически и дополнительных записей в iptables не требуется.


"RE: помогите с iptables, пожалуйста"
Отправлено teebot , 27-Янв-03 11:06 
1) дайлап - это динамический адрес, динамический адрес - это маскарадинг
если напишешь вот так
iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE
получишь полный маскарадинг, и если раб.станции настроены неодинково то может быть такое что половина клиентов будт [одить через маскарадинг, а половина через сквид. Если ты пользователей не контролируешь тогда все ОК.
Если же недопустимо пускать юзеров мимо сквида , нужно замаскарадить только почту:
iptables -t nat -A POSTROUTING -o ppp0 --dport 25 -j MASQUERADE
iptables -t nat -A POSTROUTING -o ppp0 --dport 110 -j MASQUERADE

Поправьте если я ошибаюсь, самому интересно.


"RE: помогите с iptables, пожалуйста"
Отправлено harlan , 27-Янв-03 11:35 
ИМХО, --dport с MASQUERADE не работает (во всяком случае у меня не пролезло).
Если это так, то можно наложить маскарадинг, а потом разрешить выход только на порт 25.
А вообще, почитай https://www.opennet.ru/docs/RUS/iptables/
Написано по-русски, очень доступно и с картинками. :-)
Удачи.

"RE: помогите с iptables, пожалуйста"
Отправлено teebot , 27-Янв-03 13:35 
>ИМХО, --dport с MASQUERADE не работает (во всяком случае у меня не
>пролезло).
>Если это так, то можно наложить маскарадинг, а потом разрешить выход только
>на порт 25.
>А вообще, почитай https://www.opennet.ru/docs/RUS/iptables/
>Написано по-русски, очень доступно и с картинками. :-)
>Удачи.

я тоже думал что нельзя использовать --dport.
но у меня так работает маскарадинг ФТП.
Смотри топик "Трафик идет мимо сквид, как замаскаридть только ФТП".


"спасибо всем, сейчас буду пробовать"
Отправлено kmxb , 27-Янв-03 12:30 
Да, нужно сделать именно так:
маскарадить только почту, все остальное через сквид,
причем допускать к почте только определенные локальные машины.
Сегодня поэкпериментирую о результатах сообщу.
Спасибо.

"ура! спасибо :) заработало! но еще есть вопрос."
Отправлено kmxb , 27-Янв-03 18:08 
Спасибо всем, более-менее заработало.
Просто хотелось кое-что уточнить.

>Обратное преобразование (при ответе сервера) будет происходить автоматически и дополнительных записей в
>iptables не требуется.

вот это непонятно :(

у меня заработало так:
пусть IP smtp.mailru.com будет x.x.x.x, а imap.mailru.com - y.y.y.y
тогда запускаем:

iptables -t nat -A PREROUTING -p TCP -d 192.168.8.1 --dport 1325 -j DNAT --to-destination x.x.x.x:25
iptables -t nat -A PREROUTING -p TCP -d 192.168.8.1 --dport 13110 -j DNAT --to-destination y.y.y.y:110
iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE

в аутлуках ставлю smtp = 192.168.8.1:1325 и pop3 = 192.168.8.1:13110
почта с mailru.com принимается и отсылается! ок.

НО! Есть одно но... Я так понял, что перед этим нужно загрузить модули ядра, ответственные за поддержку nat, masquarade и т.п., которые по умолчанию у меня не грузятся. Ну и еще сделать что-то вроде:
iptables -A INPUT .......
iptables -A OUTPUT ......

Днем я так и сделал.
Машину приходилось на некоторое время выключать. Вечером, совершенно забыв про модули и т.п. - включаю комп, коннектюсь и отсылаю-принимаю почту. И опять все работает! Странно как-то...
Мне кажется, что такого быть не должно. Ладно, почитаю мануалы на ночь, может пойму в каком месте я тупой:)

Спасибо за ответы и внимание.
Пока.


"RE: ура! спасибо :) заработало! но еще есть вопрос."
Отправлено teebot , 27-Янв-03 18:55 
Мне просто интересно, неужелди ни у кого не работатет в цепочке POSTROUTING --dport?
Если да, то почему тогда работает у меня?

Может опять все те же модули?

Хотелось бы понять.

Я сам недавно занимался этой темой, и выкрутился именно таким способом.