Здравствуйте все.
Помогите решить одну задачу с перенаправлением почты.
Уж не знаю, насколько это возможно, но ответа в результате поиска и вопросов я пока не нашел. Извините, если плохо искал и приходится спрашивать заново. Линукс использовал раньше только как рабочую станцию, а как мост между 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
Если я правильно понял, то тебе необходимо, что бы пользователь из сети мог использовать твой канал в интернет?
В таком случае поднимаешь маскарадинг:
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 не требуется.
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Поправьте если я ошибаюсь, самому интересно.
ИМХО, --dport с MASQUERADE не работает (во всяком случае у меня не пролезло).
Если это так, то можно наложить маскарадинг, а потом разрешить выход только на порт 25.
А вообще, почитай https://www.opennet.ru/docs/RUS/iptables/
Написано по-русски, очень доступно и с картинками. :-)
Удачи.
>ИМХО, --dport с MASQUERADE не работает (во всяком случае у меня не
>пролезло).
>Если это так, то можно наложить маскарадинг, а потом разрешить выход только
>на порт 25.
>А вообще, почитай https://www.opennet.ru/docs/RUS/iptables/
>Написано по-русски, очень доступно и с картинками. :-)
>Удачи.я тоже думал что нельзя использовать --dport.
но у меня так работает маскарадинг ФТП.
Смотри топик "Трафик идет мимо сквид, как замаскаридть только ФТП".
Да, нужно сделать именно так:
маскарадить только почту, все остальное через сквид,
причем допускать к почте только определенные локальные машины.
Сегодня поэкпериментирую о результатах сообщу.
Спасибо.
Спасибо всем, более-менее заработало.
Просто хотелось кое-что уточнить.>Обратное преобразование (при ответе сервера) будет происходить автоматически и дополнительных записей в
>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 ......Днем я так и сделал.
Машину приходилось на некоторое время выключать. Вечером, совершенно забыв про модули и т.п. - включаю комп, коннектюсь и отсылаю-принимаю почту. И опять все работает! Странно как-то...
Мне кажется, что такого быть не должно. Ладно, почитаю мануалы на ночь, может пойму в каком месте я тупой:)Спасибо за ответы и внимание.
Пока.
Мне просто интересно, неужелди ни у кого не работатет в цепочке POSTROUTING --dport?
Если да, то почему тогда работает у меня?Может опять все те же модули?
Хотелось бы понять.
Я сам недавно занимался этой темой, и выкрутился именно таким способом.