LINUX.ORG.RU
решено ФорумAdmin

Странное поведение iptables на роутере

 


0

2

Добрый день. Столкнулся со странным поведением iptables на роутере. Задача стоит следующая: разрешить форвардинг пакетов через маршрутизатор, предоставляющий доступ в интернеты, от определенных хостов, остальным запретить.

Делаю так:

iptables -I INPUT 1 -s 192.168.0.212 -j ACCEPT #разрешаем вход на маршрутизатор самому себе, дабы не отстрелить ногу и иметь возможность писать следующие правила
iptables -I FORWARD 2 -s 192.168.0.212 -j ACCEPT #разрешаем своему хосту форвардинг ч/з маршрутизатор
iptables -I FORWARD 3 -s 192.168.0.231 -j ACCEPT #разрешаем ворвардинг хосту 231
iptables -I FORWARD 4 -s 192.168.0.5 -j ACCEPT #разрешаем ворвардинг хосту 5
iptables -I FORWARD 5 -s 192.168.0.144 -j ACCEPT #разрешаем ворвардинг хосту 144
iptables -I FORWARD 6 -s 192.168.0.1 -j ACCEPT #разрешаем ворвардинг хосту 1
iptables -I FORWARD 7 -s 192.168.0.7 -j ACCEPT #разрешаем ворвардинг хосту 7
iptables -I INPUT 2 -s 192.168.0.160 -j ACCEPT #разрешаем вход на маршрутизатор хосту 160
iptables -I FORWARD 8 -s 192.168.0.145 -j ACCEPT #разрешаем ворвардинг хосту 145
iptables -I INPUT 3 -s 192.168.0.0/24 -j DROP #блокируем доступ на маршрутизатор обозначенной подсети
iptables -I FORWARD 9 -s 192.168.0.0/24 -p tcp --dport 80 -j DROP #блокируем форвардинг по 80 порту через маршрутизатор для указанной подсети
iptables -I FORWARD 10 -s 192.168.0.0/24 -p tcp --dport 443 -j DROP #блокируем форвардинг по 443 порту через маршрутизатор для указанной подсети
И в целом оно работает, правила вставляются в цепочки в нужном порядке, но после этого перестают быть доступны некоторые сайты, например, ok.ru, даже для тех, кому форвардинг разрешен. Остальным, соответственно, ничего не доступно. .

Что происходит: браузер устанавливает соединение и начинает TLS-рукопожатие. И этот процесс висит бесконечно. При этом большая часть сайтов с принудительным https нормально открывается.

ЧЯДНТ?

Я не вижу всей картины (ты не показал все правила iptables, для этого можно использовать iptables-save). Сильно похоже, что не ходит icmp, из-за чего нельзя согласовать PMTU.

Black_Shadow ★★★★★
()
Последнее исправление: Black_Shadow (всего исправлений: 1)
Ответ на: комментарий от Black_Shadow

для этого можно использовать iptables-save

Да какой там iptables-save, роутер тупой, там что-то типа busybox, соответственно, даже сам iptables там знатно порезан.

Сильно похоже, что не ходит icmp

Да не, тот же ok.ru при этом пингуется и трассировка до него работает.

Вот что выдает iptables -Lnv, пока я не вписал новые правила (это то, что там по дефолту + перенаправления портов (NAT) в цепочке FORWARD:

 > iptables -L -n -v
Chain INPUT (policy ACCEPT 39960 packets, 3563K bytes)
 pkts bytes target     prot opt in     out     source               destination 
  189 14119 ACCEPT     icmp --  ppp0.1 *       0.0.0.0/0            0.0.0.0/0   
  311 61489 ACCEPT     all  --  ppp0.1 *       0.0.0.0/0            0.0.0.0/0           state RELATED,ESTABLISHED
    0     0 ACCEPT     tcp  --  ppp0.1 *       0.0.0.0/0            0.0.0.0/0           tcp dpt:30005
   30  1600 LOG        tcp  --  ppp0.1 *       0.0.0.0/0            0.0.0.0/0           tcp flags:0x17/0x02 limit: avg 6/hour burst 5 LOG flags 0 level 1 prefix `Intrusion -> '
72377 5302K DROP       all  --  ppp0.1 *       0.0.0.0/0            0.0.0.0/0   

Chain FORWARD (policy ACCEPT 500K packets, 37M bytes)
 pkts bytes target     prot opt in     out     source               destination 
    0     0 ACCEPT     all  --  ppp0.1 *       0.0.0.0/0            224.0.0.0/4 
 189K   11M TCPMSS     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           tcp flags:0x06/0x02 TCPMSS clamp to PMTU
 6582  693K ACCEPT     icmp --  ppp0.1 *       0.0.0.0/0            0.0.0.0/0   
    0     0 ACCEPT     udp  --  ppp0.1 *       0.0.0.0/0            192.168.0.7         udp dpt:32400
  316 15662 ACCEPT     tcp  --  ppp0.1 *       0.0.0.0/0            192.168.0.7         tcp dpt:32400
    2    88 ACCEPT     tcp  --  ppp0.1 *       0.0.0.0/0            192.168.0.231       tcp dpt:5901
 1079 53828 ACCEPT     tcp  --  ppp0.1 *       0.0.0.0/0            192.168.0.231       tcp dpt:5500
    0     0 ACCEPT     udp  --  ppp0.1 *       0.0.0.0/0            192.168.0.1         udp dpt:5222
 3021  139K ACCEPT     tcp  --  ppp0.1 *       0.0.0.0/0            192.168.0.1         tcp dpt:5222
    0     0 ACCEPT     udp  --  ppp0.1 *       0.0.0.0/0            192.168.0.144       udp dpt:80
 4598  558K ACCEPT     tcp  --  ppp0.1 *       0.0.0.0/0            192.168.0.144       tcp dpt:80
    0     0 ACCEPT     tcp  --  ppp0.1 *       0.0.0.0/0            192.168.0.144       tcp dpt:4899
 3226  359K ACCEPT     tcp  --  ppp0.1 *       0.0.0.0/0            192.168.0.5         tcp dpt:55710
 8060  412K ACCEPT     tcp  --  ppp0.1 *       0.0.0.0/0            192.168.0.5         tcp dpt:55712
    0     0 ACCEPT     tcp  --  ppp0.1 *       0.0.0.0/0            192.168.0.231       tcp dpt:8521
  961 82168 ACCEPT     tcp  --  ppp0.1 *       0.0.0.0/0            192.168.0.231       tcp dpt:80
  271 21144 ACCEPT     tcp  --  ppp0.1 *       0.0.0.0/0            192.168.0.231       tcp dpt:443
    0     0 ACCEPT     udp  --  ppp0.1 *       0.0.0.0/0            192.168.0.212       udp dpt:2106
   85  4148 ACCEPT     tcp  --  ppp0.1 *       0.0.0.0/0            192.168.0.212       tcp dpt:2106
    0     0 ACCEPT     udp  --  ppp0.1 *       0.0.0.0/0            192.168.0.212       udp dpt:3306
  194 10396 ACCEPT     tcp  --  ppp0.1 *       0.0.0.0/0            192.168.0.212       tcp dpt:3306
    0     0 ACCEPT     udp  --  ppp0.1 *       0.0.0.0/0            192.168.0.212       udp dpt:7777
   72  3888 ACCEPT     tcp  --  ppp0.1 *       0.0.0.0/0            192.168.0.212       tcp dpt:7777
    0     0 ACCEPT     udp  --  ppp0.1 *       0.0.0.0/0            192.168.0.7         udp dpt:32400
    0     0 ACCEPT     tcp  --  ppp0.1 *       0.0.0.0/0            192.168.0.7         tcp dpt:32400
    0     0 ACCEPT     tcp  --  ppp0.1 *       0.0.0.0/0            192.168.0.231       tcp dpt:5901
    0     0 ACCEPT     tcp  --  ppp0.1 *       0.0.0.0/0            192.168.0.231       tcp dpt:5500
    0     0 ACCEPT     udp  --  ppp0.1 *       0.0.0.0/0            192.168.0.1         udp dpt:5222
    0     0 ACCEPT     tcp  --  ppp0.1 *       0.0.0.0/0            192.168.0.1         tcp dpt:5222
    0     0 ACCEPT     udp  --  ppp0.1 *       0.0.0.0/0            192.168.0.144       udp dpt:80
    0     0 ACCEPT     tcp  --  ppp0.1 *       0.0.0.0/0            192.168.0.144       tcp dpt:80
    0     0 ACCEPT     tcp  --  ppp0.1 *       0.0.0.0/0            192.168.0.144       tcp dpt:4899
    0     0 ACCEPT     tcp  --  ppp0.1 *       0.0.0.0/0            192.168.0.5         tcp dpt:55710
    0     0 ACCEPT     tcp  --  ppp0.1 *       0.0.0.0/0            192.168.0.5         tcp dpt:55712
    0     0 ACCEPT     tcp  --  ppp0.1 *       0.0.0.0/0            192.168.0.231       tcp dpt:8521
    0     0 ACCEPT     tcp  --  ppp0.1 *       0.0.0.0/0            192.168.0.231       tcp dpt:80
    0     0 ACCEPT     tcp  --  ppp0.1 *       0.0.0.0/0            192.168.0.231       tcp dpt:443
    0     0 ACCEPT     udp  --  ppp0.1 *       0.0.0.0/0            192.168.0.212       udp dpt:2106
    0     0 ACCEPT     tcp  --  ppp0.1 *       0.0.0.0/0            192.168.0.212       tcp dpt:2106
    0     0 ACCEPT     udp  --  ppp0.1 *       0.0.0.0/0            192.168.0.212       udp dpt:3306
    0     0 ACCEPT     tcp  --  ppp0.1 *       0.0.0.0/0            192.168.0.212       tcp dpt:3306
    0     0 ACCEPT     udp  --  ppp0.1 *       0.0.0.0/0            192.168.0.212       udp dpt:7777
    0     0 ACCEPT     tcp  --  ppp0.1 *       0.0.0.0/0            192.168.0.212       tcp dpt:7777
 422K   67M ACCEPT     all  --  ppp0.1 *       0.0.0.0/0            0.0.0.0/0           state RELATED,ESTABLISHED
    0     0 LOG        tcp  --  ppp0.1 *       0.0.0.0/0            0.0.0.0/0           tcp flags:0x17/0x02 limit: avg 6/hour burst 5 LOG flags 0 level 1 prefix `Intrusion -> '
    0     0 DROP       all  --  ppp0.1 *       0.0.0.0/0            0.0.0.0/0   

Chain OUTPUT (policy ACCEPT 5604 packets, 606K bytes)
 pkts bytes target     prot opt in     out     source               destination 

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

DNS сервер случаем не на той же машинке?

Нее, для DNS отдельный сервер и для всего остального тоже, это тупо шлюз в интернет.

stiflerwen
() автор топика
Последнее исправление: stiflerwen (всего исправлений: 1)
Ответ на: комментарий от stiflerwen

Кажется догадываюсь, после инсерта в топике у вас правило с TCPMSS улетает ниже, т.е. до него пакеты не доходят.

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

правило с TCPMSS улетает ниже

Кажется, так и есть! Сейчас перепроверю, но я не обращал на него внимания, но что это за правило такое?

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

В общем, все свои правила надо писать после ACCEPT ICMP, т. е. начиная с 4 строки в цепочке FORWARD. Тогда все норм.

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