LINUX.ORG.RU
ФорумAdmin

iptable, настройка доступа к внешнему серверу


0

0

Встала такая задача встала :(

Есть некоторая локальная сеть, где есть сервер S, имеющий два интерфейса eth0, смотрящий в локалку и eth1 смотрящий во вне. При этом S не является шлюзом для компьютеров локальной сети и имеет адрес eth0: 192.168.0.20 (локалка), eth1: 192.168.10.15 (провайдер) S работает как прокси, и отдаёт трафик в локалку из eth1 -> eth0, посредством squid без проблем. Вопрос в том как заставить S, пропускать SMTP трафик, причём так что соедняясь на S:25 я бы подключался к некоторму серверу mail.ru(условно).

Казалось бы надо всего лишь добавить правило в iptables, но как-то не выходит. Вот что сделано:

IP_FORWARD вкл iptables -P FORWARD ACCEPT iptables -t nat PREROUTING --dst 192.168.0.20 -p tcp -dport 25 -j DNAT --to-destination mail.ru

В этом случае при попытке соединится с 192.168.0.20:25 (по телнету, скажем), получаю отказ по таймауту, и в netstat на сервере вижу с десяток пакетов с неверным адресом.

добавление iptables -t nat POSTROUTING --dst mail.ru -p tcp -dport 25 -j SNAT --to-source 192.168.10.15

не помогает.

если добавлю iptables -t nat OUTPUT --dst 192.168.0.20 -p tcp -dport 25 -j DNAT --to-destintation mail.ru то с сервера S я смогу выходить на mail.ru по "telnet 192.168.0.20 25" без проблем! Но не с локалки, конечно...

Не спрашивайте почему так настроено, я не знаю... но вопрос в том как не меняя конфигурации сети (это повлечён много гемороя), подключить прохождение SMTP?

Чувствую в себе недопонимания сути, но где рыть? Подскажите в какую сторону???


На самом деле не совсем так, добавление правила с SNAT выдаёт не отказ по timeout, а closed by foreign host. И при этом нет ошибочных пакетов в netstat, и счётчики выдаёт что правила DNAT и SNAT выполнились, но связи нет :(

Всмысле нет приглашения SMTP на запрос telnet 192.168.0.20 25, а обрыв соединения.

nixite
() автор топика

Да, и после cat /proc/sys/net/ipv4/ip_forward стало ясно, что sysctl.conf не разрешил forwarding (почему?)... так что echo "1">... помогло избавиться от пакетов с неверным адресом.

nixite
() автор топика
Ответ на: комментарий от qsloqs

Помогло! следующие правила были добавлены (если кому интересно):

iptables -t nat -A PREROUTING --dst 192.168.0.20 -p tcp --dport 25 -j DNAT --to-destination _MAILRU_IP iptables -t nat -A POSTROUTING -o eth1 -j SNAT 192.168.10.15 iptables -t nat -A POSTROUTING -o eth0 -s 192.168.0.0/24 -p tcp --dport 25 -j SNAT --to-source MAILRU_IP

И УРА!

Но остался вопрос, почему ip_forward 0, если в sysctl.conf стоит net.ipv4.conf.default.forwarding=1 ???

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

с ip_forward тоже решил (thx to google), просто надо прописывать net.ipv4.conf.ip_forward=1

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