fun105 Posted November 15, 2016 (edited) Такой вопрос возник. В какой момент содинение становится established? У меня получилось так что пакет SYN в одну сторону проходит, в ответ приходит SYN,ACK. А ответ ACK на него успешно дропается правилом drop invalid, почему-то. О сети. Есть роутер R1 (RB750GL, 6.32.2) (WAN, local - 192.168.105.2), R2 (192.168.105.62, 192.168.1.1/24). На R1 прописан маршрут: ip route print ... 3 A S ;;; To network 1 192.168.1.0/24 192.168.105.62 1 Т.е. хосты из подсети 192.168.105.0/24 ходят в подсеть 192.168.1.0/24 через R1, на котором есть нужный маршрут. Сеть 192.168.1.0/24 находится за роуетером R2. Также на R1 в filter: 0 chain=forward action=log src-address=192.168.105.5 dst-address=192.168.1.24 log=yes log-prefix="fwd before" 1 ;;; ACCEPT established connections chain=forward action=accept connection-state=established log=no log-prefix="" 2 ;;; ACCEPT related packets chain=forward action=accept connection-state=related log=no log-prefix="" 3 chain=forward action=log src-address=192.168.105.5 dst-address=192.168.1.24 log=yes log-prefix="fwd after" 4 ;;; DROP invalid connections chain=forward action=drop connection-state=invalid dst-address=192.168.1.24 log=yes log-prefix="drop invalid" 5 ;;; DROP invalid connections chain=forward action=drop connection-state=invalid log=no log-prefix="" 6 ;;; JUMP to Safe city network chain=forward action=jump jump-target=forward_to_safe_city dst-address=192.168.1.0/24 log=no log-prefix="" в самом конце правило "Drop all other" В цепочке forward_to safe_city такие правила: /ip firewall filter> print chain=forward_to_safe_city 0 chain=forward_to_safe_city action=log src-address=192.168.105.5 dst-address=192.168.1.24 log=yes log-prefix="fwd before 1" 1 ;;; ACCEPT to Safe city network, filter on 105.62 chain=forward_to_safe_city action=accept dst-address=192.168.1.0/24 log=no log-prefix="" 2 chain=forward_to_safe_city action=log src-address=192.168.105.5 dst-address=192.168.1.24 log=yes log-prefix="fwd after 1" Хост с адресом 192.168.105.5 пытается подключиться к хосту 192.168.1.24 на порт 5900 (UltraVNC). В логе получаю следующее: 14:52:00 firewall,info fwd before forward: in:ether2-master-local out:ether2-master-local, src-mac f4:6d:04:2f:ab:3a, proto TCP (SYN), 192.168.105.5:51019->192.168.1.24:5900, len 52 14:52:00 firewall,info fwd before forward: in:ether2-master-local out:ether2-master-local, src-mac f4:6d:04:2f:ab:3a, proto TCP (SYN), 192.168.105.5:51019->192.168.1.24:5900, len 52 14:52:00 firewall,info fwd after forward: in:ether2-master-local out:ether2-master-local, src-mac f4:6d:04:2f:ab:3a, proto TCP (SYN), 192.168.105.5:51019->192.168.1.24:5900, len 52 14:52:00 firewall,info fwd after forward: in:ether2-master-local out:ether2-master-local, src-mac f4:6d:04:2f:ab:3a, proto TCP (SYN), 192.168.105.5:51019->192.168.1.24:5900, len 52 14:52:00 firewall,info fwd before 1 forward_to_safe_ci: in:ether2-master-local out:ether2-master-local, src-mac f4:6d:04:2f:ab:3a, proto TCP (SYN), 192.168.105.5:51019->192.168.1.24:5900, len 52 14:52:00 firewall,info fwd before 1 forward_to_safe_ci: in:ether2-master-local out:ether2-master-local, src-mac f4:6d:04:2f:ab:3a, proto TCP (SYN), 192.168.105.5:51019->192.168.1.24:5900, len 52 14:52:00 firewall,info fwd before forward: in:ether2-master-local out:ether2-master-local, src-mac f4:6d:04:2f:ab:3a, proto TCP (ACK), 192.168.105.5:51019->192.168.1.24:5900, len 40 14:52:00 firewall,info fwd before forward: in:ether2-master-local out:ether2-master-local, src-mac f4:6d:04:2f:ab:3a, proto TCP (ACK), 192.168.105.5:51019->192.168.1.24:5900, len 40 14:52:00 firewall,info fwd after forward: in:ether2-master-local out:ether2-master-local, src-mac f4:6d:04:2f:ab:3a, proto TCP (ACK), 192.168.105.5:51019->192.168.1.24:5900, len 40 14:52:00 firewall,info fwd after forward: in:ether2-master-local out:ether2-master-local, src-mac f4:6d:04:2f:ab:3a, proto TCP (ACK), 192.168.105.5:51019->192.168.1.24:5900, len 40 14:52:00 firewall,info drop invalid forward: in:ether2-master-local out:ether2-master-local, src-mac f4:6d:04:2f:ab:3a, proto TCP (ACK), 192.168.105.5:51019->192.168.1.24:5900, len 40 14:52:03 firewall,info fwd before forward: in:ether2-master-local out:ether2-master-local, src-mac f4:6d:04:2f:ab:3a, proto TCP (ACK), 192.168.105.5:51019->192.168.1.24:5900, len 52 14:52:03 firewall,info fwd before forward: in:ether2-master-local out:ether2-master-local, src-mac f4:6d:04:2f:ab:3a, proto TCP (ACK), 192.168.105.5:51019->192.168.1.24:5900, len 52 14:52:03 firewall,info fwd after forward: in:ether2-master-local out:ether2-master-local, src-mac f4:6d:04:2f:ab:3a, proto TCP (ACK), 192.168.105.5:51019->192.168.1.24:5900, len 52 14:52:03 firewall,info fwd after forward: in:ether2-master-local out:ether2-master-local, src-mac f4:6d:04:2f:ab:3a, proto TCP (ACK), 192.168.105.5:51019->192.168.1.24:5900, len 52 14:52:03 firewall,info drop invalid forward: in:ether2-master-local out:ether2-master-local, src-mac f4:6d:04:2f:ab:3a, proto TCP (ACK), 192.168.105.5:51019->192.168.1.24:5900, len 52 Видно,что пакет с флагом SYN cначала проходит цепочку forward (строки с fwd before и fwd after), затем попадает в цепочку forward_to_safe_city, там отмечается (fwd before 1) получает accept и уходит по назначению. В ответ приходит пакет с флагами SYN,ACK (он не логируется). Далее хост должен ответить пакетом с флагом ACK. Он отвечает, но на микротике этот пакет почему-то не попадает под правила 1 и 2 в таблице forward и дропается правилом, которое дропает пакеты со статусом invalid. Если изменить порядок правил в цепочке forward, например, так, 0 chain=forward action=log src-address=192.168.105.5 dst-address=192.168.1.24 log=yes log-prefix="fwd before" 1 ;;; ACCEPT established connections chain=forward action=accept connection-state=established log=no log-prefix="" 2 ;;; ACCEPT related packets chain=forward action=accept connection-state=related log=no log-prefix="" 3 chain=forward action=log src-address=192.168.105.5 dst-address=192.168.1.24 log=yes log-prefix="fwd after" 4 ;;; JUMP to Safe city network chain=forward action=jump jump-target=forward_to_safe_city dst-address=192.168.1.0/24 log=no log-prefix="" 5 ;;; DROP invalid connections chain=forward action=drop connection-state=invalid dst-address=192.168.1.24 log=yes log-prefix="drop invalid" 6 ;;; DROP invalid connections chain=forward action=drop connection-state=invalid log=no log-prefix="" то все будет работать. Тот самый 3 пакет с флагом ACK уйдет в цепочку forward_to_safe_city, там получит accept и соединение установится. Но судя по логу таким способом будут проходить все пакеты, даже после того как соединение установлено, т.е. остальные пакеты не поподают под лействие правила с селекторм connection-state=established: 15:18:38 firewall,info fwd before forward: in:ether2-master-local out:ether2-master-local, src-mac f4:6d:04:2f:ab:3a, proto TCP (SYN), 192.168.105.5:51181->192.168.1.24:5900, len 52 15:18:38 firewall,info fwd before forward: in:ether2-master-local out:ether2-master-local, src-mac f4:6d:04:2f:ab:3a, proto TCP (SYN), 192.168.105.5:51181->192.168.1.24:5900, len 52 15:18:38 firewall,info fwd after forward: in:ether2-master-local out:ether2-master-local, src-mac f4:6d:04:2f:ab:3a, proto TCP (SYN), 192.168.105.5:51181->192.168.1.24:5900, len 52 15:18:38 firewall,info fwd after forward: in:ether2-master-local out:ether2-master-local, src-mac f4:6d:04:2f:ab:3a, proto TCP (SYN), 192.168.105.5:51181->192.168.1.24:5900, len 52 15:18:38 firewall,info fwd before 1 forward_to_safe_ci: in:ether2-master-local out:ether2-master-local, src-mac f4:6d:04:2f:ab:3a, proto TCP (SYN), 192.168.105.5:51181->192.168.1.24:5900, len 52 15:18:38 firewall,info fwd before 1 forward_to_safe_ci: in:ether2-master-local out:ether2-master-local, src-mac f4:6d:04:2f:ab:3a, proto TCP (SYN), 192.168.105.5:51181->192.168.1.24:5900, len 52 15:18:38 firewall,info fwd before forward: in:ether2-master-local out:ether2-master-local, src-mac f4:6d:04:2f:ab:3a, proto TCP (ACK), 192.168.105.5:51181->192.168.1.24:5900, len 40 15:18:38 firewall,info fwd before forward: in:ether2-master-local out:ether2-master-local, src-mac f4:6d:04:2f:ab:3a, proto TCP (ACK), 192.168.105.5:51181->192.168.1.24:5900, len 40 15:18:38 firewall,info fwd after forward: in:ether2-master-local out:ether2-master-local, src-mac f4:6d:04:2f:ab:3a, proto TCP (ACK), 192.168.105.5:51181->192.168.1.24:5900, len 40 15:18:38 firewall,info fwd after forward: in:ether2-master-local out:ether2-master-local, src-mac f4:6d:04:2f:ab:3a, proto TCP (ACK), 192.168.105.5:51181->192.168.1.24:5900, len 40 15:18:38 firewall,info fwd before 1 forward_to_safe_ci: in:ether2-master-local out:ether2-master-local, src-mac f4:6d:04:2f:ab:3a, proto TCP (ACK), 192.168.105.5:51181->192.168.1.24:5900, len 40 15:18:38 firewall,info fwd before 1 forward_to_safe_ci: in:ether2-master-local out:ether2-master-local, src-mac f4:6d:04:2f:ab:3a, proto TCP (ACK), 192.168.105.5:51181->192.168.1.24:5900, len 40 15:18:38 firewall,info fwd before forward: in:ether2-master-local out:ether2-master-local, src-mac f4:6d:04:2f:ab:3a, proto TCP (ACK,PSH), 192.168.105.5:51181->192.168.1.24:5900, len 52 15:18:38 firewall,info fwd before forward: in:ether2-master-local out:ether2-master-local, src-mac f4:6d:04:2f:ab:3a, proto TCP (ACK,PSH), 192.168.105.5:51181->192.168.1.24:5900, len 52 15:18:38 firewall,info fwd after forward: in:ether2-master-local out:ether2-master-local, src-mac f4:6d:04:2f:ab:3a, proto TCP (ACK,PSH), 192.168.105.5:51181->192.168.1.24:5900, len 52 15:18:38 firewall,info fwd after forward: in:ether2-master-local out:ether2-master-local, src-mac f4:6d:04:2f:ab:3a, proto TCP (ACK,PSH), 192.168.105.5:51181->192.168.1.24:5900, len 52 15:18:38 firewall,info fwd before 1 forward_to_safe_ci: in:ether2-master-local out:ether2-master-local, src-mac f4:6d:04:2f:ab:3a, proto TCP (ACK,PSH), 192.168.105.5:51181->192.168.1.24:5900, len 52 15:18:38 firewall,info fwd before 1 forward_to_safe_ci: in:ether2-master-local out:ether2-master-local, src-mac f4:6d:04:2f:ab:3a, proto TCP (ACK,PSH), 192.168.105.5:51181->192.168.1.24:5900, len 52 15:18:38 firewall,info fwd before forward: in:ether2-master-local out:ether2-master-local, src-mac f4:6d:04:2f:ab:3a, proto TCP (ACK,PSH), 192.168.105.5:51181->192.168.1.24:5900, len 41 15:18:38 firewall,info fwd before forward: in:ether2-master-local out:ether2-master-local, src-mac f4:6d:04:2f:ab:3a, proto TCP (ACK,PSH), 192.168.105.5:51181->192.168.1.24:5900, len 41 15:18:38 firewall,info fwd before forward: in:ether2-master-local out:ether2-master-local, src-mac f4:6d:04:2f:ab:3a, proto TCP (ACK), 192.168.105.5:51181->192.168.1.24:5900, len 40 15:18:38 firewall,info fwd after forward: in:ether2-master-local out:ether2-master-local, src-mac f4:6d:04:2f:ab:3a, proto TCP (ACK), 192.168.105.5:51181->192.168.1.24:5900, len 40 15:18:38 firewall,info fwd after forward: in:ether2-master-local out:ether2-master-local, src-mac f4:6d:04:2f:ab:3a, proto TCP (ACK), 192.168.105.5:51181->192.168.1.24:5900, len 40 15:18:38 firewall,info fwd before 1 forward_to_safe_ci: in:ether2-master-local out:ether2-master-local, src-mac f4:6d:04:2f:ab:3a, proto TCP (ACK), 192.168.105.5:51181->192.168.1.24:5900, len 40 15:18:38 firewall,info fwd before 1 forward_to_safe_ci: in:ether2-master-local out:ether2-master-local, src-mac f4:6d:04:2f:ab:3a, proto TCP (ACK), 192.168.105.5:51181->192.168.1.24:5900, len 40 15:18:38 firewall,info fwd before forward: in:ether2-master-local out:ether2-master-local, src-mac f4:6d:04:2f:ab:3a, proto TCP (ACK,PSH), 192.168.105.5:51181->192.168.1.24:5900, len 41 15:18:38 firewall,info fwd before forward: in:ether2-master-local out:ether2-master-local, src-mac f4:6d:04:2f:ab:3a, proto TCP (ACK,PSH), 192.168.105.5:51181->192.168.1.24:5900, len 41 15:18:38 firewall,info fwd after forward: in:ether2-master-local out:ether2-master-local, src-mac f4:6d:04:2f:ab:3a, proto TCP (ACK,PSH), 192.168.105.5:51181->192.168.1.24:5900, len 41 15:18:38 firewall,info fwd after forward: in:ether2-master-local out:ether2-master-local, src-mac f4:6d:04:2f:ab:3a, proto TCP (ACK,PSH), 192.168.105.5:51181->192.168.1.24:5900, len 41 15:18:38 firewall,info fwd before 1 forward_to_safe_ci: in:ether2-master-local out:ether2-master-local, src-mac f4:6d:04:2f:ab:3a, proto TCP (ACK,PSH), 192.168.105.5:51181->192.168.1.24:5900, len 41 15:18:38 firewall,info fwd before 1 forward_to_safe_ci: in:ether2-master-local out:ether2-master-local, src-mac f4:6d:04:2f:ab:3a, proto TCP (ACK,PSH), 192.168.105.5:51181->192.168.1.24:5900, len 41 15:18:38 firewall,info fwd before forward: in:ether2-master-local out:ether2-master-local, src-mac f4:6d:04:2f:ab:3a, proto TCP (ACK), 192.168.105.5:51181->192.168.1.24:5900, len 40 15:18:38 firewall,info fwd before forward: in:ether2-master-local out:ether2-master-local, src-mac f4:6d:04:2f:ab:3a, proto TCP (ACK), 192.168.105.5:51181->192.168.1.24:5900, len 40 15:18:38 firewall,info fwd after forward: in:ether2-master-local out:ether2-master-local, src-mac f4:6d:04:2f:ab:3a, proto TCP (ACK), 192.168.105.5:51181->192.168.1.24:5900, len 40 15:18:38 firewall,info fwd after forward: in:ether2-master-local out:ether2-master-local, src-mac f4:6d:04:2f:ab:3a, proto TCP (ACK), 192.168.105.5:51181->192.168.1.24:5900, len 40 15:18:38 firewall,info fwd before 1 forward_to_safe_ci: in:ether2-master-local out:ether2-master-local, src-mac f4:6d:04:2f:ab:3a, proto TCP (ACK), 192.168.105.5:51181->192.168.1.24:5900, len 40 15:18:38 firewall,info fwd before 1 forward_to_safe_ci: in:ether2-master-local out:ether2-master-local, src-mac f4:6d:04:2f:ab:3a, proto TCP (ACK), 192.168.105.5:51181->192.168.1.24:5900, len 40 15:18:43 firewall,info fwd before forward: in:ether2-master-local out:ether2-master-local, src-mac f4:6d:04:2f:ab:3a, proto TCP (ACK,RST), 192.168.105.5:51181->192.168.1.24:5900, len 40 15:18:43 firewall,info fwd before forward: in:ether2-master-local out:ether2-master-local, src-mac f4:6d:04:2f:ab:3a, proto TCP (ACK,RST), 192.168.105.5:51181->192.168.1.24:5900, len 40 15:18:43 firewall,info fwd after forward: in:ether2-master-local out:ether2-master-local, src-mac f4:6d:04:2f:ab:3a, proto TCP (ACK,RST), 192.168.105.5:51181->192.168.1.24:5900, len 40 15:18:43 firewall,info fwd after forward: in:ether2-master-local out:ether2-master-local, src-mac f4:6d:04:2f:ab:3a, proto TCP (ACK,RST), 192.168.105.5:51181->192.168.1.24:5900, len 40 15:18:43 firewall,info fwd before 1 forward_to_safe_ci: in:ether2-master-local out:ether2-master-local, src-mac f4:6d:04:2f:ab:3a, proto TCP (ACK,RST), 192.168.105.5:51181->192.168.1.24:5900, len 40 15:18:43 firewall,info fwd before 1 forward_to_safe_ci: in:ether2-master-local out:ether2-master-local, src-mac f4:6d:04:2f:ab:3a, proto TCP (ACK,RST), 192.168.105.5:51181->192.168.1.24:5900, len 40 Может быть дело в том что конечная точка соединения в другой подсети и за другим роутером? Edited November 15, 2016 by fun105 Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
nkusnetsov Posted November 15, 2016 (edited) У вас кривой дизайн сети. Хост пытается достичь подсети находящейся за соседним хостом через общий роутер. Пакеты у вас идут "рикошетом" и задваиваются. Похоже хост ловит icmp-redirect. 192.168.105.5 пытается общаться с сетью 192.168.1.0/24 через R1(далее R2), а R2 отвечает ему напрямую, минуя R1 т.к. видит его в своей connected-подсети. Лечить можно двумя способами: 1) на хостах ВСЕХ из сети 192.168.105.0/24 явно прописать маршрут к 192.168.1.0/24 через 192.168.105.65 либо 2) прописать линковочную подсеть, на LAN R1 и WAN R2. Например, взять 192.168.155.0/30. Прописать на R1-LAN алиасом IP-адрес 192.168.155.1/30. На R2-WAN прописать единственный адрес 192.168.155.2/30, На R1 маршрут к сети 192.168.1.0/24 прописывается через 192.168.155.2 (R2-WAN). Тогда маршрутизация пойдет классически: 192.168.105.5<->R1<->192.168.155.0/30<->R2<->192.168.1.24 Edited November 15, 2016 by nkusnetsov Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
fun105 Posted November 15, 2016 Да, дизайн не айс, но все меняется по мере необходимости. Спасибо что ткнули в нужном направлении. Задвоенные пакеты заметил в логах когда пост начал писать, но думал что это ПО их так отправляет. Про рикошет как-то даже не догадывался, надо будет попробовать ваш вариант с /30 подсетью между роутерами. Текущий вариант так и возник - шлюз 192.168.105.2 прописан уже у всех, осталось только на нем маршрут правильный прописать до сети 192.168.1.0/24. Если предположить, что ответ возвращался через другой роутер (что я проверить не догадался, в wiresharke посмотрел что ответ приходит и ладно), то R1 вполне справедливо мог считать соединение не установившемся (т.к. пакет SYN,ACK возвращался через R2) и считать остальные пакеты в состоянии invalid. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...