LinuxForum.Fans
Тема

[решено] Проблема с портом

Автор: dirsex 11 сообщений 2438 просмотров
#306714

Здравствуйте.

Что имеем:

Сервер (Шлюз)
eth0 - ИНТЕРНЕТ - x.x.x.x;
eth1 - локалка - 192.168.50.1;

Почтовый сервак - 192.168.50.3;

Суть сети такая, всего 5 ПК имеют доступ к интернету:
192.168.50.3,
192.168.50.194,
192.168.50.198,
192.168.50.171,
192.168.50.157.
один из которых SmartTV телек, для него работает udproxy для iptv ниже в правилах будет видно, что к чему.

Остальные несколько компов при заходе на любой сайт пользуются услугами так называемого локального сайта.

Впрочем все это не очень важно, так для пояснения моей убогой таблицы iptables.

IPTABLES

Показать

root@server:/opt# iptables-save
# Generated by iptables-save v1.4.4 on Tue Mar 5 13:07:26 2013
*nat
:PREROUTING ACCEPT [1608:186610]
:POSTROUTING ACCEPT [1107:70078]
:OUTPUT ACCEPT [991:62938]
-A PREROUTING -p tcp -m tcp --dport 995 -j DNAT --to-destination 192.168.50.3:995
-A PREROUTING -p tcp -m tcp --dport 993 -j DNAT --to-destination 192.168.50.3:993
-A PREROUTING -p tcp -m tcp --dport 587 -j DNAT --to-destination 192.168.50.3:587
-A PREROUTING -p tcp -m tcp --dport 143 -j DNAT --to-destination 192.168.50.3:143
-A PREROUTING -p tcp -m tcp --dport 110 -j DNAT --to-destination 192.168.50.3:110
-A PREROUTING -p tcp -m tcp --dport 443 -j DNAT --to-destination 192.168.50.3:443
-A PREROUTING -p tcp -m tcp --dport 25 -j DNAT --to-destination 192.168.50.3:25
-A PREROUTING -s 192.168.50.177/32 -p tcp -m tcp --dport 80 -j DNAT --to-destination 192.168.50.1:81
-A PREROUTING -s 192.168.50.200/32 -p tcp -m tcp --dport 80 -j DNAT --to-destination 192.168.50.1:81
-A PREROUTING -s 192.168.50.195/32 -p tcp -m tcp --dport 80 -j DNAT --to-destination 192.168.50.1:81
-A PREROUTING -s 192.168.50.219/32 -p tcp -m tcp --dport 80 -j DNAT --to-destination 192.168.50.1:81
-A PREROUTING -s 192.168.50.161/32 -p tcp -m tcp --dport 80 -j DNAT --to-destination 192.168.50.1:81
-A PREROUTING -s 192.168.50.195/32 -p tcp -m tcp --dport 80 -j DNAT --to-destination 192.168.50.1:81
-A PREROUTING -s 192.168.50.188/32 -p tcp -m tcp --dport 80 -j DNAT --to-destination 192.168.50.1:81
-A PREROUTING -s 192.168.50.152/32 -p tcp -m tcp --dport 80 -j DNAT --to-destination 192.168.50.1:81
-A PREROUTING -s 192.168.50.183/32 -p tcp -m tcp --dport 80 -j DNAT --to-destination 192.168.50.1:81
-A PREROUTING -s 192.168.50.177/32 -p tcp -m tcp --dport 80 -j DNAT --to-destination 192.168.50.1:81
-A POSTROUTING -s 192.168.50.3/32 -o eth0 -j MASQUERADE
-A POSTROUTING -s 192.168.50.194/32 -o eth0 -j MASQUERADE
-A POSTROUTING -s 192.168.50.198/32 -o eth0 -j MASQUERADE
-A POSTROUTING -s 192.168.50.171/32 -o eth0 -j MASQUERADE
-A POSTROUTING -s 192.168.50.157/32 -o eth0 -j MASQUERADE
COMMIT
# Completed on Tue Mar 5 13:07:26 2013
# Generated by iptables-save v1.4.4 on Tue Mar 5 13:07:26 2013
*filter
:INPUT ACCEPT [2415:799277]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [23927:10209445]
-A INPUT -i lo -j ACCEPT
-A INPUT -d 224.0.0.0/4 -i eth0 -j ACCEPT
-A INPUT -i eth1 -p tcp -m tcp --dport 1234 -j ACCEPT
-A FORWARD -d 192.168.50.3/32 -p tcp -m tcp --dport 995 -j ACCEPT
-A FORWARD -d 192.168.50.3/32 -p tcp -m tcp --dport 993 -j ACCEPT
-A FORWARD -d 192.168.50.3/32 -p tcp -m tcp --dport 587 -j ACCEPT
-A FORWARD -d 192.168.50.3/32 -p tcp -m tcp --dport 143 -j ACCEPT
-A FORWARD -d 192.168.50.3/32 -p tcp -m tcp --dport 110 -j ACCEPT
-A FORWARD -d 192.168.50.3/32 -p tcp -m tcp --dport 443 -j ACCEPT
-A FORWARD -d 192.168.50.3/32 -p tcp -m tcp --dport 25 -j ACCEPT
-A FORWARD -i eth1 -o eth0 -j ACCEPT
-A FORWARD -i eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -i eth0 -o eth1 -j REJECT --reject-with icmp-port-unreachable
-A FORWARD -s 192.168.50.3/32 -o eth0 -j ACCEPT
-A FORWARD -s 192.168.50.194/32 -o eth0 -j ACCEPT
-A FORWARD -s 192.168.50.198/32 -o eth0 -j ACCEPT
-A FORWARD -s 192.168.50.171/32 -o eth0 -j ACCEPT
-A FORWARD -s 192.168.50.157/32 -o eth0 -j ACCEPT
COMMIT
# Completed on Tue Mar 5 13:07:26 2013

Все работает нормально, кроме....

Суть проблемы

Значит ситуация такая, при таких правилах на почтовый сервак (192.168.50.3) письма приходят нормально, но не отправляются. С настройками там все ровно т.к. при выполнении с почтового сервака команду telnet 94.100.176.20 25, соединение отваливается по тайм-ауту. Если такуюже команду выполнить со шлюза, то соединение проходит нормально.

Убираю из вышеприведенных правил строки:

text
-A PREROUTING -p tcp -m tcp --dport 25 -j DNAT --to-destination 192.168.50.3:25
-A FORWARD -d 192.168.50.3/32 -p tcp -m tcp --dport 25 -j ACCEPT

Теперь 25 порт естественно закрыт и не пробрасывается, с почтового сервера теперь команда telnet на почтовик mail.ru проходит успешно и не отваливается по тайму, НО т.к. порт закрыт входящие письма не резолвятся.


Пожалуйста помогите решить мне эту делему с пробросом этого долбанного 25 порта, сутки не спал, гугл уже страниц 100 облистал, те варианты которые там были не заработали.

#306715

Тоисть ваш почтовик виден с наружы и он принимает письма, но не может их переслать если есть ети правила

"dirsex" написал:
-A PREROUTING -p tcp -m tcp --dport 25 -j DNAT --to-destination 192.168.50.3:25
-A FORWARD -d 192.168.50.3/32 -p tcp -m tcp --dport 25 -j ACCEPT

Верно?
Покажыте таблицу маршрутизацыи на шлюзе и на почтовике.

#306716

А форвард пакетов включён на шлюзе

text
echo 1 > /proc/sys/net/ipv4/ip_forward

И попробуйте ничего не меняя добавить такое правило

text
-A FORWARD -s 192.168.50.3/32 -o eth0 -j ACCEPT
#306717

Спасибо за ответ, думал уже никто не поможет.

Форвардинг конечно включен) Все остальное то по правилам работает, проблема тока в этом порте.

"kisil" написал:
И попробуйте ничего не меняя добавить такое правило

-A FORWARD -s 192.168.50.3/32 -o eth0 -j ACCEPT

Дык у меня там есть это правило.


Вот вывод шлюза

text

root@server:/opt# netstat -nr
Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
192.168.50.0    0.0.0.0         255.255.255.0   U         0 0          0 eth1
5.100.78.0      0.0.0.0         255.255.254.0   U         0 0          0 eth0
0.0.0.0         5.100.78.1      0.0.0.0         UG        0 0          0 eth0

вывод почтовика

text
[root@mail ~]# netstat -nr
Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
192.168.50.0    0.0.0.0         255.255.255.0   U         0 0          0 eth0
169.254.0.0     0.0.0.0         255.255.0.0     U         0 0          0 eth0
0.0.0.0         192.168.50.1    0.0.0.0         UG        0 0          0 eth0
#306718
"dirsex" написал:
Дык у меня там есть это правило.

Точно есть не досмотрел.

#306719
"kisil" написал:
Тоисть ваш почтовик виден с наружы и он принимает письма, но не может их переслать если есть ети правила

да именно так! Стоит убрать правила письма начнут отправляться НО он не будет их принимать!

#306720

Ну а сам почтовик может пинговать например какието адреса в интернете. Например

text
ping ukr.net

что говорит?

#306721

да конечно, доступ к интернету у него есть. Я весь софт из репозитория ставил.

text

[root@mail ~]# ping ukr.net -c4
PING ukr.net (195.214.195.105) 56(84) bytes of data.
64 bytes from 195.214.195.105: icmp_seq=1 ttl=48 time=177 ms
64 bytes from 195.214.195.105: icmp_seq=2 ttl=48 time=178 ms
64 bytes from 195.214.195.105: icmp_seq=3 ttl=48 time=178 ms
64 bytes from 195.214.195.105: icmp_seq=4 ttl=48 time=178 ms

--- ukr.net ping statistics --- 4 packets transmitted, 4 received, 0% packet loss, time 3182ms rtt min/avg/max/mdev = 177.944/178.157/178.252/0.531 ms

#306722

Кажысь проблема может быть в этом правиле

text
-A PREROUTING -p tcp -m tcp --dport 25 -j DNAT --to-destination 192.168.50.3:25

Это мои мысли и они такие.
Что когда почтовик пробует конект в интернет но порт 25 он сперва идёт на шлюз и порт 25 и пробует узнать как ему попасть, например, на ukr.net:25, но шлюз видит конек по 25 порту и принимает решение о маршрутизацыи, а оно такое что нужно пакет послать на DNAT --to-destination 192.168.50.3:25, тоисть шлюз возвращает пакет назад. В цепочке PREROUTING принимаетса решение о маршрутизацыи ещё до того как пакет попадёт в цепочку filter и fоrward. Поетому мне кажытса нужно в ето правило добавить значение интерфейса с которого ждать соединение с наружы, тоисть -i eth0.

text
-A PREROUTING -p tcp -m tcp -i eth0 --dport 25 -j DNAT --to-destination 192.168.50.3:25

Попробуйте, я не знаю пройдёт ли такое правило, потому что сам такого не делал.

#306723

*THUMBSUP*

Спасибо большое добрый человек! Буду исправлять свои правила, все заработало как часики!

тема на 100% решена! =)))

#306724

Ну и хорошо. Пусть работает.

Войдите или зарегистрируйтесь, чтобы ответить.