Допустим, я хочу открыть четыре порта для любых входящих пакетов, поэтому я сделал этот набор правил:
#> iptables -L -v
Chain INPUT (policy ACCEPT 20 packets, 1190 bytes)
pkts bytes target prot opt in out source destination
1041 103K ACCEPT tcp -- any any anywhere anywhere tcp dpt:111
0 0 ACCEPT tcp -- any any anywhere anywhere tcp dpt:222
208 12056 ACCEPT tcp -- any any anywhere anywhere tcp dpt:333
0 0 ACCEPT tcp -- any any anywhere anywhere tcp dpt:443
(прямые и выходные цепочки пусты)
Давайте теперь скажем, что есть SSH-сервер, работающий на порту 111, и для подключения к этой машине я делаю
ssh username@hostna.me -p 111
тогда я захожу и все работает.
Но другие порты также остаются открытыми, потому что политика по умолчанию - ACCEPT, и я не добавил правило DROP. Теперь я хочу добавить его и набрать
#> iptables -A INPUT -j DROP
Это 5-е правило.
Теперь я хочу снова подключиться к моему открытому порту SSH. У меня есть ответ, такой как username's password:
но он приходит спустя 20 секунд, а не почти мгновенно без этого 5-го правила.
Поэтому я удаляю это правило так
#> iptables -D INPUT 5
и снова я могу подключиться к своему SSH без каких-либо задержек.
Почему это?
Что я заблокировал, что я не должен был заблокировать?
ps: есть веб-сервер, работающий на порте 443, когда я пытаюсь подключиться из браузера, страница загружается бесконечно, но сервер работает.