LINUX.ORG.RU
решено ФорумAdmin

Подскажите правило iptables для форвардинга SMTP

 ,


0

1

Имеется сервер A, одной сетевой картой смотрящий на действительный smtp сервер:

SmtpAddress=X.X.X.X
SmtpInterface=ethX

Другой сетевой картой смотрящий во внутреннюю сеть (в частности, на клиентский компьютер):

ClientAddress=Y.Y.Y.Y
ClientInterface=ethY

Задача - в конфигурации клиентского компьютера прописать A в качестве SMTP сервера, и заставить A форвардить этот трафик на действительный SMTP сервер. Итого - клиент будет думать, что работает с А, а на самом деле будет рабоать с действительным SMTP.

В сети полно рецептов как сделать полный фрвардинг (aka предоставить клиенту доступ во внешнюю сеть при помощи NAT), но можно ли это сделать проще и только для SMPT?

Если да, то подскажите, пожалуйста правила.

Из первой же ссылки в гугл по запросу iptables dnat

 iptables -t nat -A PREROUTING -d 11.1.1.1.1 -p tcp --dport 80 -i eth0 -j DNAT --to-destination 192.168.0.20:80
А чего бы Сервер А не сделать smartrelay-ем который умеет принимать почту и слать ее через ваш настоящий SMTP? Помоему так правильнее чем трафик перенаправлять.

black_13 ()
Ответ на: комментарий от black_13

А что в вашем примере 11.1.1.1.1 и 192.168.0.20? В мане написано -d - destinatinon. И тут тоже --to-destination. Ок, я не разбираюсь в iptables, так что не отправляй в курение мана - ищется готовый рецепт.

omegatype ★★ ()
Ответ на: комментарий от omegatype

-d destination Адрес назначения пакета от клиента. У вас это X.X.X.X --to-destination куда хотите перенаправить. У вас это IP адрес «действительный smtp сервер» Ну порт 25 у вас, а не 80 как в примере. Интерфейс ethX Только ip forwarding в системе должен быть включен. Можно еще source конкретный прописать если слать будете сугубо с одного ip или сети (опция -s)

black_13 ()
Ответ на: комментарий от black_13
iptables -t nat -s ${ClientAddress} -p tcp --destination-port 25  -A POSTROUTING -o ${SmtpAddress} -j MASQUERADE

Подозреваю, что решение м.б. неоптимальным, но т.к. все это в изолированной локальной сети, то пускай будет так.

omegatype ★★ ()

Я бы сделал форвард порта, например с помощью simpleproxy. Т.е ставим на машине Y.Y.Y.Y simpleproxy и прописываем:

/usr/bin/simpleproxy -L 25 -R X.X.X.X:25 &

Недостаток в том что это будет работать до перезагрузки(как и вариант с iptables кстати). Поэтому еще я бы добавил в rc.local эту команду

anonymous ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.