LINUX.ORG.RU
ФорумAdmin

Получение почты напрямую(IPTABLES+NAT)


0

0

Я задавал уже вопрос по получению почты напрямую с удаленного сервера почты, мне посоветовали использовать nat я прописал следующие правило iptables'е в таблицы nat -A POSTROUTING -s 192.168.1.0/24 -d ! 192.168.1.0/24 -o eth1 -p tcp --dport 110 -j MASQUERADE

Все равно при запросе наполучение почты выдается сообщение невозможно соединится с сервером

Пробовал вообще всем открыть порт 110 эффект нулевой

Скорее всего я неправильно организую цепочку подскажите как правильно ее организовать по подробней если можно

anonymous

Может у тебя форврдинг фаерволом закрыт? Я бы для начала сделал политику FORWARD ACCEPT, потом создал правило NAT. Можно так: iptables -t nat -A POSTROUTING -s $LANNETIP -o $EXTIF -j MASQUERADE или если у тебя статический IP адрес на интерфейсе, который смотрит в инет, то лучше так: iptables -t nat -A POSTROUTING -s $LANNETIP -o $EXTIF -j SNAT --to-source $EXTIP где LANNETIP - адрес твоей локальной сетки 192.168.1.0/24, EXTIF - интерфейс, который смотрит на прова, EXTIP - ip адрес внешнего интерфейса (если он конечно не динамически присваевается) А уж потом, убедившись что из локальной сетки через NAT видны ресурсы инета, делай политику FORWARD DROP и открывай только нужные порты, адреса и т.д.

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

вот мой файл /etc/sysconfig/iptables Подскажи пожалуйста где что надо подправить, а то я в этом слабо понимаю

*filter :INPUT ACCEPT [0:0] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [0:0] :RH-Lokkit-0-50-INPUT - [0:0] -A INPUT -j RH-Lokkit-0-50-INPUT -A FORWARD -j RH-Lokkit-0-50-INPUT -A RH-Lokkit-0-50-INPUT -p tcp -m tcp --dport 80 --syn -j ACCEPT -A RH-Lokkit-0-50-INPUT -p tcp -m tcp --dport 21 --syn -j ACCEPT -A RH-Lokkit-0-50-INPUT -p tcp -m tcp --dport 22 --syn -j ACCEPT -A RH-Lokkit-0-50-INPUT -p tcp -m tcp --dport 25 --syn -j ACCEPT -A RH-Lokkit-0-50-INPUT -p tcp -m tcp --dport 23 --syn -j ACCEPT -A RH-Lokkit-0-50-INPUT -p udp -m udp -s 0/0 --sport 67:68 -d 0/0 --dport 67:68 -i eth0 -j ACCEPT -A RH-Lokkit-0-50-INPUT -p udp -m udp -s 0/0 --sport 67:68 -d 0/0 --dport 67:68 -i eth1 -j ACCEPT -A RH-Lokkit-0-50-INPUT -i lo -j ACCEPT -A RH-Lokkit-0-50-INPUT -i eth0 -j ACCEPT -A RH-Lokkit-0-50-INPUT -p tcp -m tcp --dport 0:1023 --syn -j REJECT -A RH-Lokkit-0-50-INPUT -p tcp -m tcp --dport 2049 --syn -j REJECT -A RH-Lokkit-0-50-INPUT -p udp -m udp --dport 0:1023 -j REJECT -A RH-Lokkit-0-50-INPUT -p udp -m udp --dport 2049 -j REJECT -A RH-Lokkit-0-50-INPUT -p tcp -m tcp --dport 6000:6009 --syn -j REJECT -A RH-Lokkit-0-50-INPUT -p tcp -m tcp --dport 7100 --syn -j REJECT COMMIT # Generated by webmin *mangle :FORWARD ACCEPT [0:0] :INPUT ACCEPT [0:0] :OUTPUT ACCEPT [0:0] :PREROUTING ACCEPT [0:0] :POSTROUTING ACCEPT [0:0] COMMIT # Completed # Generated by webmin *nat :OUTPUT ACCEPT [0:0] :PREROUTING ACCEPT [0:0] :POSTROUTING ACCEPT [0:0] -A POSTROUTING -s 192.168.1..0/24 -o eth1 -j SNAT --to-source xxx.xxx.xxx.xxx -A POSTROUTING -s 192.168.1.0/24 -d! 192.168.1.0/24 -o eth1 -p tcp --dport 110 -j MASQUERADE COMMIT

Заранеее спасибо за помощь!!!

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

*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:RH-Lokkit-0-50-INPUT - [0:0]
-A INPUT -j RH-Lokkit-0-50-INPUT
-A FORWARD -j RH-Lokkit-0-50-INPUT
-A RH-Lokkit-0-50-INPUT -p tcp -m tcp --dport 80 --syn -j ACCEPT
-A RH-Lokkit-0-50-INPUT -p tcp -m tcp --dport 21 --syn -j ACCEPT
-A RH-Lokkit-0-50-INPUT -p tcp -m tcp --dport 22 --syn -j ACCEPT
-A RH-Lokkit-0-50-INPUT -p tcp -m tcp --dport 25 --syn -j ACCEPT
-A RH-Lokkit-0-50-INPUT -p tcp -m tcp --dport 23 --syn -j ACCEPT
-A RH-Lokkit-0-50-INPUT -p udp -m udp -s 0/0 --sport 67:68 -d 0/0 --dport 67:68 -i eth0 -j ACCEPT
-A RH-Lokkit-0-50-INPUT -p udp -m udp -s 0/0 --sport 67:68 -d 0/0 --dport 67:68 -i eth1 -j ACCEPT
-A RH-Lokkit-0-50-INPUT -i lo -j ACCEPT
-A RH-Lokkit-0-50-INPUT -i eth0 -j ACCEPT
-A RH-Lokkit-0-50-INPUT -p tcp -m tcp --dport 0:1023 --syn -j REJECT
-A RH-Lokkit-0-50-INPUT -p tcp -m tcp --dport 2049 --syn -j REJECT
-A RH-Lokkit-0-50-INPUT -p udp -m udp --dport 0:1023 -j REJECT
-A RH-Lokkit-0-50-INPUT -p udp -m udp --dport 2049 -j REJECT
-A RH-Lokkit-0-50-INPUT -p tcp -m tcp --dport 6000:6009 --syn -j REJECT
-A RH-Lokkit-0-50-INPUT -p tcp -m tcp --dport 7100 --syn -j REJECT
COMMIT
# Generated by webmin
*mangle
:FORWARD ACCEPT [0:0]
:INPUT ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:PREROUTING ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
COMMIT
# Completed
# Generated by webmin
*nat
:OUTPUT ACCEPT [0:0]
:PREROUTING ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
-A POSTROUTING -s 192.168.1..0/24 -o eth1 -j SNAT --to-source 81.1.251.35
-A POSTROUTING -s 192.168.1.0/24 -d! 192.168.1.0/24 -o eth1 -p tcp --dport 110 -j MASQUERADE
COMMIT

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

Класс!!

Я бы всё-таки на твоем месте почитал доки, раз уж приходится этим заниматься.

В любом случае не жалко, лови:

iptables -F

iptables -X

iptables -t nat -F

iptables -P INPUT ACCEPT

iptables -P OUTPUT ACCEPT

iptables -P FORWARD ACCEPT

iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth1 -j MASQUERADE

(я так понял eth1 внешний интерфейс) Тем самым ты дашь доступ в Инет всем машинам из сети 192.168.1.0/24. Проверь идут ли пинги на адреса в Инете с машин в локалке. Для того чтобы сохранить сделанные изменения используй команду iptables-save. Или впиши всё вышеописанное в скрипт и стартуй его при запуске, например из rc.local. А если ты есчо и фаервол хочешь иметь на шлюзе, то читай iptables-tutorial, там всё написано, и даже по-русски. А через форум тебе его никто настраивать не будет.

ol_serg
()

Добрый день! Прочитал вопрос. Вот мои соображения:

Первое: таблица (-t nat) правильно Второе: неуверен по поводу -А POSTROUTING на мой взгляд стои написать -A FORWARD, а в место -j MASQ... -j ACCEPT Третье: стоит удостовериться в разрешении форвардинга в ядре ОС как это сделать -> любая книга. В ответе на твой вопрос уже было написано как это сделать Четвертое: неуверен по поводу интерфейса (необходимо помнить каким цепочкам соответствует -o, а каким -i)

Vasily
()

> -A POSTROUTING -s 192.168.1..0/24 -o eth1 -j SNAT --to-source 81.1.251.35
Чего это за адрес такой "192.168.1..0/24" или это опечатка ?
Это во-первых, во-вторых второе правило в POSTROUTING не сработает, т.к. до него дело не дойдет, пакеты, соответствующие ему, подходят также и под первое правило, поэтому сработает первое, а не второе.

Еще хотел спросить: вы как при проверке ломитесь наружу "telnet pop.mail.ru 110" или "telnet 194.67.57.102 110" ? Не может ли быть причина в том, что клиент не может даже IP получателя определить, и до отправки естественно не доходит ? Покажите вывод "iptables -t nat -L -nvx", проходят ли вообще пакеты по правилу с SNAT/MASQUERADE ? Что говорит "tcpdump -ni eth1 host 194.67.57.102" при попытке добраться к mail.ru ?

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

> -A POSTROUTING -s 192.168.1..0/24 -o eth1 -j SNAT --to-source 81.1.251.35
это опечатка
при попытки telnet'ом ломится наружу с локальной машины говорит неудается подключится к узлу 110 сбой подключение

iptables -t nat -L -nvx 
Chain PREROUTING (policy ACCEPT 1641 packets, 128681 bytes)
    pkts      bytes target     prot opt in     out     source               destination
 
Chain POSTROUTING (policy ACCEPT 2927 packets, 175690 bytes)
    pkts      bytes target     prot opt in     out     source               destination
       0        0 SNAT       tcp  --  *      *       192.168.1.0/24      !192.168.1.0/24     tcp dpt:110 to:81.1.251.35
 
Chain OUTPUT (policy ACCEPT 2927 packets, 175690 bytes)
    pkts      bytes target     prot opt in     out     source               destination

bash-2.05b# tcpdump -ni eth1 host 194.67.57.102
tcpdump: listening on eth1
0 packets received by filter
0 packets dropped by kernel
долго думает я нажал ctrl+c

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

> 0 0 SNAT tcp -- ...
Ну вот как раз и видно то, о чем я говорил: через цепочку с SNAT-ом пакеты не проходят. Это может быть либо из-за того, что они вообще никуда не идут (см. выше про DNS), либо из-за того, что на клиенте не настроен маршрут по умолчанию на internet-шлюз.

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

а как их заставить идти dns провайдера есть что ему еще надо где еще надо что дописать, клиент настроин нормально

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