Jump to content

Recommended Posts

Posted (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 by fun105
Posted (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 by nkusnetsov
Posted

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

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

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

 

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

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.

×
×
  • Create New...
На сайте используются файлы cookie и сервисы аналитики для корректной работы форума и улучшения качества обслуживания. Продолжая использовать сайт, вы соглашаетесь с использованием файлов cookie и с Политикой конфиденциальности.