Вы наверное знаете, что цепочку output редко когда используют, так как через данную цепочку проходит непосредственно трафик который генерирует сам маршрутизатор MikroTik под управлением RouterOS.

И зачастую мы доверяем тому трафику, который порождает сам MikroTik, но мы можем использовать цепочку output, для улучшения безопасности.

Посмотрим на примере c IPSec

IPSec

Вы прописали Peer-a в настройках IPSec

[admin@MikroTik.Me] > /ip ipsec peer add address=3.3.3.3

Напоминаю что по умолчанию значение passive=no т.е. Пример выше создаёт активный peer который будет пытаться установить соединение udp 500 с хостом 3.3.3.3.

Я надеюсь у вас у всех полузакрытый firewall, где разрешены соединения established в цепочке input.

Если на хосте 3.3.3.3 также настроен активный peer IPSec, то он будет пытаться соединится с вашим хостом. Как вы наверное уже догадались у него не получиться установить соединение до того момента, пока на MikroTik в connection-tracker не будет соединение, и тогда входящий трафик от противоположенного хоста будет попадать в цепочку established.

Рекомендуется для хоста 3.3.3.3 разрешить трафик udp 500,4500 и протокол esp(50) для того, чтобы противоположенных хост мог сам инициализировать подключение, и соединение будет происходить быстрее. Всё просто вы можете зайти в firewall и прописать необходимые правила, например так:

[admin@MikroTik.Me] /ip firewall filter >
add chain=input src-address=3.3.3.3 protocol=udp dst-port=500,4500
add chain=input src-address=3.3.3.3 protocol=ipsec-esp

При наличии нескольких peer-ов я уверен, что вы создадите адрес лист и будете использовать его в правилах фильтров. Примерно так:

[admin@MikroTik.Me] /ip firewall address-list>
add list=ipsec-peers address=3.3.3.3
add list=ipsec-peers address=4.4.4.4
[admin@MikroTik.Me] /ip firewall filter >
add chain=input src-address-list=ipsec-peers protocol=udp dst-port=500,4500
add chain=input src-address-list=ipsec-peers protocol=ipsec-esp

Что делать если у вас десятки, а может и сотня peer-ов? Помимо того, что вам необходимо вести непосредственно настройки самого IPSec, но и при этом вам необходимо держать в актуальном состоянии адрес лист или firewall.

Мы же может автоматизировать рутину с помощью цепочки output

Создадим наши правила которые разрешают, трафик для IPSec протокола с помощью адрес листа.

[admin@MikroTik.Me] /ip firewall filter >
add chain=input src-address-list=ipsec-peers protocol=udp dst-port=500,4500
add chain=input src-address-list=ipsec-peers protocol=ipsec-esp

Теперь давайте заставим MikroTik заполнять лист psec-peers самостоятельно.

[admin@MikroTik.Me] /ip firewall raw >
    add chain=output protocol=udp dst-port=500 dst-address-list=!ipsec-peers \
    action=add-dst-to-address-list address-list=ipsec-peers address-list-timeout=1h

Обратите внимание, что мы фильтруем трафик тот который идёт на адреса не содержащиеся в листе, так чтобы лист постоянно не обновлялся.

В итоге как только в настройках RouterOS создаётся активный peer адрес другой стороны peer попадёт в лист, для которого соответственно разрешён трафик ipsec.

pptp

В связи с тем, что в одной из последних версий появилась поддержка отслеживания состояния GRE протокола, то вам необходимо разрешить трафик GRE. Мы же можем поступить проще, не разрешать для всех, а только для тех кто стукнулся на порт tcp 1723

[admin@MikroTik.Me] /ip firewall filter >
add chain=input src-address-list=pptp protocol=gre

[admin@MikroTik.Me] /ip firewall raw >
add chain=output protocol=tcp src-port=1723 dst-address-list=!pptp \
    action=add-dst-to-address-list address-list=pptp address-list-timeout=1h

Обратите внимание, что мы смотрим только на тот трафик, который отправляет сам MikroTik.

GRE и IPIP туннели

Если вам нечего скрывать, то вы наверное используете данные типы инкапсуляций, для того чтобы построить туннели, вы можете использовать аналогичную схему для разрешения трафика.

Обратите внимание все примеры созданы для ознакомления и для понимания самого принципа, старайтесь всегда указывать в правилах интерфейс направления.

Рассказать друзьям