Jump to content
Калькуляторы

Вопрос про connetction-state invalid

Такой вопрос возник. В какой момент содинение становится 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 by fun105

Share this post


Link to post
Share on other sites

У вас кривой дизайн сети. Хост пытается достичь подсети находящейся за соседним хостом через общий роутер. Пакеты у вас идут "рикошетом" и задваиваются. Похоже хост ловит 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 by nkusnetsov

Share this post


Link to post
Share on other sites

Да, дизайн не айс, но все меняется по мере необходимости. Спасибо что ткнули в нужном направлении.

Задвоенные пакеты заметил в логах когда пост начал писать, но думал что это ПО их так отправляет.

Про рикошет как-то даже не догадывался, надо будет попробовать ваш вариант с /30 подсетью между роутерами. Текущий вариант так и возник - шлюз 192.168.105.2 прописан уже у всех, осталось только на нем маршрут правильный прописать до сети 192.168.1.0/24.

 

Если предположить, что ответ возвращался через другой роутер (что я проверить не догадался, в wiresharke посмотрел что ответ приходит и ладно), то R1 вполне справедливо мог считать соединение не установившемся (т.к. пакет SYN,ACK возвращался через R2) и считать остальные пакеты в состоянии invalid.

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.