URL: https://www.opennet.ru/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID10
Нить номер: 4989
[ Назад ]

Исходное сообщение
"Debian iptables (отказывается открывать соединение на 81 порту)"

Отправлено _KUL , 12-Янв-12 15:06 
Здравствуйте господа.
Нет, я не полнейший чайник, но и гуру себя назвать не могу (нет пределу совершенства), но уже голову сломал, никак не могу понять, что не нравится ...
В общем есть шлюз, там 3 интерфейса, ppp0 (через eth0), eth0, eth1 (локалка), стоит apache2 на 81 порту и стоит nginx на 80. При попытки зайти на 192.168.0.1 (eth1) с 192.168.0.2 по 80 порту, всё отлично открывается, а если зайти на 81, тоже отлично. НО! Если с внешки зайти на 99.99.99.99:80 откроется страничка, а при попытки открыть 99.99.99.99:81 "нет ответа". Почему так происходит? Почему система блокирует 81?
Ладно! Предположил что трафик банально не разрешён, добавил:
iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT
iptables -A FORWARD -i eth0 -o ppp0 -j ACCEPT
iptables -A FORWARD -i ppp0 -o eth0 -j ACCEPT
iptables -A FORWARD -i ppp0 -o lo -j ACCEPT
iptables -A FORWARD -i lo -o ppp0 -j ACCEPT
Увы, ничего не получилось ...
Помогите может хоть советом в какую сторону смотреть :( ... И кстати да, net.ipv4.ip_forward=1 установлен (это в сюсцтле единственное значение).
Самое страшное, что до этого была убунта-сервер, всё отлично работало, а тут не хочет ... Так же хотел 5900 порт пробросить для VNC чтобы с внешки цепляться на сервер, а он на eth1 192.168.0.2 перекидывал и показывал рабочий стол, тоже не получилось. Пробовал порты игры прокинуть, чтобы цепляться к серверу, а он на локальный сервак из сети eth0 переводил, также потерпел фиаско ... Такое ощущение, что нат не работает c внешнего мира на сервер в ppp0. Но изнутри всё отлично натится. И самое непонятное, почему 81 порт не открывается, ведь он вообще не должен натиться, просто на 127.0.0.1:81 слушается. Изнутри заходит на 81, а снаружи нет :( .
Уважаемые знатоки, пните в нужном направлении пожалуйста :(.

Вот правила ната, которые отлично работают:
*nat
-A POSTROUTING -s 192.168.0.0/24 -o ppp0 -j MASQUERADE
-A POSTROUTING -s 192.168.1.0/24 -o ppp0 -j MASQUERADE
-A POSTROUTING -s 192.168.0.0/24 -d 10.0.0.0/8 -o eth0 -j MASQUERADE
-A POSTROUTING -s 192.168.1.0/24 -d 10.0.0.0/8 -o eth0 -j MASQUERADE
-A POSTROUTING -s 192.168.0.0/24 -d 194.154.82.43 -o eth0 -j MASQUERADE
-A POSTROUTING -s 192.168.0.0/24 -d 194.154.82.44 -o eth0 -j MASQUERADE
-A PREROUTING -p tcp -d 10.72.55.177 --dport 1300 -j DNAT --to-destination 192.168.0.2
-A PREROUTING -p udp -d 10.72.55.177 --dport 1300 -j DNAT --to-destination 192.168.0.2
-A PREROUTING -p udp -d 10.72.55.177 --dport 19003 -j DNAT --to-destination 192.168.0.2
COMMIT
*filter
-A INPUT -p icmp -m icmp --icmp-type echo-request -j REJECT --reject-with icmp-net-prohibited
COMMIT
*mangle
-A FORWARD -p tcp -m tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu
COMMIT


Содержание

Сообщения в этом обсуждении
"Debian iptables (отказывается открывать соединение на 81 порту)"
Отправлено _KUL , 12-Янв-12 15:10 
Может в дебиане есть какая-то своя дополнительная хитрость? Вроде того, как на центосе цепочка фаервол? Или может, какой-то параметр нужно включить дополнительно?

"Debian iptables (отказывается открывать соединение на 81 порту)"
Отправлено кегна , 12-Янв-12 15:29 
>[оверквотинг удален]
> -A PREROUTING -p tcp -d 10.72.55.177 --dport 1300 -j DNAT --to-destination 192.168.0.2
> -A PREROUTING -p udp -d 10.72.55.177 --dport 1300 -j DNAT --to-destination 192.168.0.2
> -A PREROUTING -p udp -d 10.72.55.177 --dport 19003 -j DNAT --to-destination 192.168.0.2
> COMMIT
> *filter
> -A INPUT -p icmp -m icmp --icmp-type echo-request -j REJECT --reject-with icmp-net-prohibited
> COMMIT
> *mangle
> -A FORWARD -p tcp -m tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu
> COMMIT

слушается только на 127.0.0.1:81?
можно посмотреть вывод sudo netstat -antup | grep 81?



"Debian iptables (отказывается открывать соединение на 81 порту)"
Отправлено _KUL , 12-Янв-12 15:53 
В апаче делаю так
NameVirtualHost *:81
Listen 81

В ответ
# netstat -antup | grep :81
tcp        0      0 0.0.0.0:81              0.0.0.0:*               LISTEN      4909/apache2

Кстати!
Ставлю апач на 80 порт, вижу снаружу по внешнему ипу, ставлю 82 порт, опять не вижу ... Почему-то мне кажется, что-где то в дебиане прописаны какие то правила для 80, и возможно других портов ...


"Debian iptables (отказывается открывать соединение на 81 порту)"
Отправлено кегна , 12-Янв-12 16:12 
>[оверквотинг удален]
> tcp        0    
>   0 0.0.0.0:81        
>       0.0.0.0:*    
>           LISTEN
>      4909/apache2
> Кстати!
> Ставлю апач на 80 порт, вижу снаружу по внешнему ипу, ставлю 82
> порт, опять не вижу ... Почему-то мне кажется, что-где то в
> дебиане прописаны какие то правила для 80, и возможно других портов
> ...

и интересно локально с сервера telnet 127.0.0.1 81 покажет что нибудь?
а так же telnet внешний_ип 81 так же с сервера покажет?

в дебиан нет по умолчанию никаких цепочек фаирвала
можно же всегда посмотреть:
sudo iptables -L
sudo iptables -L -t filter


"Debian iptables (отказывается открывать соединение на 81 порту)"
Отправлено _KUL , 12-Янв-12 16:33 
Всё становится ещё интереснее ...
Если использовать свободные порты от 1 до 1024 то ничего не откроется, если использовать порты от 1025 и выше, то апач открывает всё. Хм ...

iptables -nL
Chain INPUT (policy ACCEPT)
target     prot opt source               destination
REJECT     icmp --  0.0.0.0/0            0.0.0.0/0            icmptype 8 reject-with icmp-net-prohibited

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination


# iptables -t nat -nL
Chain PREROUTING (policy ACCEPT)
target     prot opt source               destination
DNAT       tcp  --  0.0.0.0/0            10.72.55.177         tcp dpt:1300 to:192.168.0.2
DNAT       udp  --  0.0.0.0/0            10.72.55.177         udp dpt:1300 to:192.168.0.2
DNAT       udp  --  0.0.0.0/0            10.72.55.177         udp dpt:19003 to:192.168.0.2

Chain INPUT (policy ACCEPT)
target     prot opt source               destination

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

Chain POSTROUTING (policy ACCEPT)
target     prot opt source               destination
MASQUERADE  all  --  192.168.0.0/24       0.0.0.0/0
MASQUERADE  all  --  192.168.1.0/24       0.0.0.0/0
MASQUERADE  all  --  192.168.0.0/24       10.0.0.0/8
MASQUERADE  all  --  192.168.1.0/24       10.0.0.0/8
MASQUERADE  all  --  192.168.0.0/24       194.154.82.43
MASQUERADE  all  --  192.168.0.0/24       194.154.82.44

От 192.168.0.2 к 192.168.0.1 телнетом
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
                                                  <html><head>
                                                              <title>400 Bad Req
uest</title>
            </head><body>
                         <h1>Bad Request</h1>
                                             <p>Your browser sent a request that
this server could not understand.<br />
                                        </p>
                                            <hr>
                                                <address>Apache/2.2.21 (Debian)
Server at 127.0.1.1 Port 81</address>
                                     </body></html>
Подключение к узлу утеряно.

От внешней тачки к интерфейсу ppp0 телнетом
C:\Documents and Settings\Администратор>telnet 128.74.10.xx 81
Подключение к 128.74.10.xx...Не удалось открыть подключение к этому узлу, на пор
т 81: Сбой подключения


Грешу на управляющий свитч провайдера, который на чердаке, может там порты залочили ... Но странно, почему тогда по порту 5900 к VNC я не смог подцепиться с внешнего мира на локальную машину за шлюзом (ppp0 -> eth1) ...


"Debian iptables (отказывается открывать соединение на 81 порту)"
Отправлено tuxic , 12-Янв-12 16:38 
>[оверквотинг удален]
>    </body></html>
> Подключение к узлу утеряно.
> От внешней тачки к интерфейсу ppp0 телнетом
> C:\Documents and Settings\Администратор>telnet 128.74.10.xx 81
> Подключение к 128.74.10.xx...Не удалось открыть подключение к этому узлу, на пор
> т 81: Сбой подключения
> Грешу на управляющий свитч провайдера, который на чердаке, может там порты залочили
> ... Но странно, почему тогда по порту 5900 к VNC я
> не смог подцепиться с внешнего мира на локальную машину за шлюзом
> (ppp0 -> eth1) ...

iptables -F INPUT
и пробуйте подключаться.


"Debian iptables (отказывается открывать соединение на 81 порту)"
Отправлено _KUL , 12-Янв-12 16:40 
Через 2 минуты осенило!
Попробовал и ужаснулся ...
Подключился на 10.хх.хх.хх:81 (eth0) от человека, который находится в той-же сети провайдера, но в другом сегменте. Точно убеждён, либо есть правила, которые pppx блокируют, только непонятно где, либо провайдер через vpn сервер не все порты по трафику отдаёт.

p.s. А причём цепочка инпут? Там только правило, чтобы пингом не задосили и всё. Дропнул, не помогло, 81 не доступен по прежнему ...


"Debian iptables (отказывается открывать соединение на 81 порту)"
Отправлено кегна , 12-Янв-12 16:40 
>[оверквотинг удален]
>    </body></html>
> Подключение к узлу утеряно.
> От внешней тачки к интерфейсу ppp0 телнетом
> C:\Documents and Settings\Администратор>telnet 128.74.10.xx 81
> Подключение к 128.74.10.xx...Не удалось открыть подключение к этому узлу, на пор
> т 81: Сбой подключения
> Грешу на управляющий свитч провайдера, который на чердаке, может там порты залочили
> ... Но странно, почему тогда по порту 5900 к VNC я
> не смог подцепиться с внешнего мира на локальную машину за шлюзом
> (ppp0 -> eth1) ...

я же написал сделайте с дебиана (прямо с сервера):
telnet 127.0.0.1 81
telnet 128.74.10.xx 81


"Debian iptables (отказывается открывать соединение на 81 порту)"
Отправлено _KUL , 12-Янв-12 16:44 
~# telnet 128.74.10.xx 81
Trying 128.74.10.xx...
Connected to 128.74.10.xx.
Escape character is '^]'.
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>400 Bad Request</title>
</head><body>
<h1>Bad Request</h1>
<p>Your browser sent a request that this server could not understand.<br />
</p>
<hr>
<address>Apache/2.2.21 (Debian) Server at 127.0.1.1 Port 81</address>
</body></html>
Connection closed by foreign host.

root@server-kul:~# telnet 127.0.0.1 81
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>400 Bad Request</title>
</head><body>
<h1>Bad Request</h1>
<p>Your browser sent a request that this server could not understand.<br />
</p>
<hr>
<address>Apache/2.2.21 (Debian) Server at 127.0.1.1 Port 81</address>
</body></html>
Connection closed by foreign host.

Звонить в ТП провайдера и жаловаться? :)


"Debian iptables (отказывается открывать соединение на 81 порту)"
Отправлено кегна , 12-Янв-12 16:52 
>[оверквотинг удален]
> <title>400 Bad Request</title>
> </head><body>
> <h1>Bad Request</h1>
> <p>Your browser sent a request that this server could not understand.<br />
> </p>
> <hr>
> <address>Apache/2.2.21 (Debian) Server at 127.0.1.1 Port 81</address>
> </body></html>
> Connection closed by foreign host.
> Звонить в ТП провайдера и жаловаться? :)

покажите $ifconfig -a

можно ещё запустить $sudo tcpdump -i ppp0 'tcp port 81'

постучаться с внешки, если вывода не будет... то выходит кого то надо бить по хитрой рыжей наглой морде ;-)


"Debian iptables (отказывается открывать соединение на 81 порту)"
Отправлено _KUL , 12-Янв-12 17:02 
# ifconfig -a
eth0      Link encap:Ethernet  HWaddr 00:1b:11:47:29:2b
          inet addr:10.72.55.177  Bcast:10.72.55.255  Mask:255.255.248.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:1210769 errors:0 dropped:0 overruns:0 frame:0
          TX packets:2073426 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:307969920 (293.7 MiB)  TX bytes:2951001251 (2.7 GiB)
          Interrupt:21 Base address:0x2000

eth1      Link encap:Ethernet  HWaddr 00:0a:5e:65:a6:a3
          inet addr:192.168.0.1  Bcast:192.168.0.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:2075237 errors:0 dropped:0 overruns:0 frame:0
          TX packets:1208597 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:2955683038 (2.7 GiB)  TX bytes:305848474 (291.6 MiB)
          Interrupt:22

lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:3126004 errors:0 dropped:0 overruns:0 frame:0
          TX packets:3126004 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:866741404 (826.5 MiB)  TX bytes:866741404 (826.5 MiB)

mon.wlan0 Link encap:UNSPEC  HWaddr D8-5D-4C-D6-5E-9C-00-00-00-00-00-00-00-00-00-00
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

ppp0      Link encap:Point-to-Point Protocol
          inet addr:128.74.10.xx  P-t-P:194.186.120.148  Mask:255.255.255.255
          UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1460  Metric:1
          RX packets:88664 errors:0 dropped:0 overruns:0 frame:0
          TX packets:57022 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:3
          RX bytes:115585384 (110.2 MiB)  TX bytes:3207272 (3.0 MiB)

wlan0     Link encap:Ethernet  HWaddr d8:5d:4c:d6:5e:9c
          inet addr:192.168.1.1  Bcast:192.168.1.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:106 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:0 (0.0 B)  TX bytes:21592 (21.0 KiB)

tcpdump -i ppp0 'tcp port 81', стучусь
0 packets captured
0 packets received by filter
0 packets dropped by kernel

Меняю апач на 1025, стучусь
tcpdump -i ppp0 'tcp port 1025'
<vsyakaya vsyachina>
10 packets captured
10 packets received by filter
0 packets dropped by kernel

Только одно можно сказать - О-ЧУ-МЕТЬ!!!
Слов нет ...
Только странно, почему же VNC не работал при пробросе. Наверно ошибка в днат/снат была

p.s. кегна, большое вам, человеческое спасибо за наводку на телнет, вроде всё просто, но не мог сообразить, неизвестно сколько бы мучил ещё свой кёрнел :)