Как работает маркировка сессий

Обсуждение ПО и его настройки
Ответить
Dmitriy122
Сообщения: 4
Зарегистрирован: 04 апр 2018, 11:23

Пытаюсь настроить source routing и возникает непонимание как работает маркировка сессий.

У меня была следующая логика
Все новые сессии в цепочке chain=prerouting через интерфейс мы маркируем тегом провайдера, затем в цепочке output у пакетов относящиеся к маркированной сессии помечаем меткой маршрутизации для выбора соответствующей таблицы маршрутизации.

Вопрос в том, что если в prerouting маркировать все сессии, то все работает, если только новые, то не работает....
Вот так работает:

Код: Выделить всё

/ip firewall mangle
add action=mark-connection chain=prerouting  in-interface=vlan20-insis new-connection-mark=con-insis passthrough=yes
add action=mark-connection chain=prerouting  in-interface=vlan10-mts new-connection-mark=con-mts passthrough=yes
add action=mark-routing chain=output connection-mark=con-insis new-routing-mark=rt-insis passthrough=yes
add action=mark-routing chain=output connection-mark=con-mts new-routing-mark=rt-mts passthrough=yes
Собственно вопрос. Я считал что если пометить пакет с новой сессией, то потом все пакеты относящие к этой сессии будут иметь эту отметку... Это не так?
Почему тогда это называется маркировкой сессии?


xvo
Сообщения: 4204
Зарегистрирован: 25 фев 2018, 22:41
Откуда: Москва

Output - это только то, что уходит с самого роутера.

Для всего проходящего трафика mark-routing тоже надо делать в prerouting'е.


Telegram: @thexvo
Dmitriy122
Сообщения: 4
Зарегистрирован: 04 апр 2018, 11:23

Да, это я понимаю
Вопрос почему на всех входящих пакетах надо метку сессии выставлять?
Почему пакеты относящие к сессии по умолчанию этой метки не имеют?


xvo
Сообщения: 4204
Зарегистрирован: 25 фев 2018, 22:41
Откуда: Москва

Какую - эту?
Метка соединения выставляется единожды и потом применяется ко всем пакетам соединения.
Метка пакета или метка роутинга выставляется на каждый пакет индивидуально.


Telegram: @thexvo
Dmitriy122
Сообщения: 4
Зарегистрирован: 04 апр 2018, 11:23

Тогда где я ошибаюсь в следующей логике?

Код: Выделить всё

add action=mark-connection chain=prerouting connection-state=new in-interface=vlan10-mts new-connection-mark=con-mts passthrough=yes
Это правило приводит к тому что все новые соединения приходящие через интерфейс vlan10-mts помечаются меткой con-mts

Код: Выделить всё

add action=mark-routing chain=output connection-mark=con-mts new-routing-mark=rt-mts passthrough=yes
Это правило приводит к тому что у всех исходящих пакетов относящихся к сессиям помеченным меткой con-mts (а все сессии пришедшие через интерфейс vlan10-mts у нас помечены ) устанавливается метка маршрутизации rt-mts и они маршрутизируются через тот же интерфейс откуда пришел пакет начавший сессию.
т.е. все должно работать.... а не работает.....
если в правиле

Код: Выделить всё

add action=mark-connection chain=prerouting connection-state=new in-interface=vlan10-mts new-connection-mark=con-mts passthrough=yes
убрать ограничение connection-state=new все работает
и я не понимаю почему? где я не правильно рассуждаю?


xvo
Сообщения: 4204
Зарегистрирован: 25 фев 2018, 22:41
Откуда: Москва

А что именно "работает"?
Что вы хотите сделать?

Пока вы пытаетесь пометить соединения пришедшие из локалки, и если они предназначены роутеру, то ответный пакет роутера улетит в какой-то из wan - что не имеет никакого смысла.


Telegram: @thexvo
Dmitriy122
Сообщения: 4
Зарегистрирован: 04 апр 2018, 11:23

На самом деле vlan20-insis и vlan10-mts это интерфейсы смотрящие в сети двух разных провайдеров.
В целом рабочие правила вот такие

Код: Выделить всё

/ip firewall mangle
add action=mark-connection chain=prerouting  in-interface=vlan20-insis new-connection-mark=con-insis passthrough=yes
add action=mark-connection chain=prerouting  in-interface=vlan10-mts new-connection-mark=con-mts passthrough=yes
add action=mark-routing chain=output connection-mark=con-insis new-routing-mark=rt-insis passthrough=yes
add action=mark-routing chain=output connection-mark=con-mts new-routing-mark=rt-mts passthrough=yes
Работает это значит работает source routing для самого маршрутизатора. Например, я могу по shh зайти на маршрутизатор через любой интерфейс.
Для меня загадка, почему если я добавляю в правила маркировки сессий connection-state=new,related то все перестает работать.
т.е. я могу зайти по ssh только на один случайный интерфейс


xvo
Сообщения: 4204
Зарегистрирован: 25 фев 2018, 22:41
Откуда: Москва

Не должно быть так.
Посмотрите по факту в списке соединений, получают ли они метки соединений.

Но вообще для доступа на сам маршрутизатор достаточно ip route rule обойтись, вообще без mangle.


Telegram: @thexvo
Ответить