Вопрос про firewall mark-routing

Базовая функциональность RouterOS
atbizz
Сообщения: 14
Зарегистрирован: 20 янв 2019, 17:27

Вопрос про firewall mark-routing

Сообщение atbizz »

Приветствую

Есть обычный gre-tunnel между mikrotik и сервером вне россии, нужно траффик например к заблокированному rutracker.org направить через этот туннель, а остальной по умолчанию.

Если сделать routing таким образом (ниже) то все работает:

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

/ip firewall mangle 
add out-interface=gre-tunnel action=change-mss chain=forward new-mss=1360 passthrough=yes protocol=tcp tcp-flags=syn tcp-mss=!0-1360
add in-interface=gre-tunnel action=change-mss chain=forward new-mss=1360 passthrough=yes protocol=tcp tcp-flags=syn tcp-mss=!0-1360

/ip route add distance=1 dst-address=195.82.146.0/24 gateway=gre-tunnel comment=rutracker.org

Если сделать при помощи firewall mark-routing (ниже) то постоянно tcp-retransmission, сайт открывается через раз и оч. медленно

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

/ip firewall address-list add address=195.82.146.0/24 list=forbidden comment=rutracker.org

/ip firewall mangle add chain=prerouting src-address=192.168.1.0/24 dst-address-list=forbidden action=mark-routing new-routing-mark=forbidden

/ip firewall mangle 
add out-interface=gre-tunnel action=change-mss chain=forward new-mss=1360 passthrough=yes protocol=tcp tcp-flags=syn tcp-mss=!0-1360
add in-interface=gre-tunnel action=change-mss chain=forward new-mss=1360 passthrough=yes protocol=tcp tcp-flags=syn tcp-mss=!0-1360

/ip route add distance=1 routing-mark=forbidden gateway=gre-tunnel

В общем заворачивание траффика с помощью mark-routing работает как то плохо - почему так может быть, куда смотреть, что проверить? (при этом видно что правила для изменения mss срабатывают как и в первом случае).
Аватара пользователя
Chupaka
Сообщения: 4086
Зарегистрирован: 29 фев 2016, 15:26
Откуда: Минск

Re: Вопрос про firewall mark-routing

Сообщение Chupaka »

Доброго.

Ну, в целом, должно работать идентично (за исключением "src-address=192.168.1.0/24").

У вас точно нет других правил, которые могут мешать этому? Перемаркировывать некоторые пакеты, например...

По поводу Change-MSS: а если просто галку на GRE выставить Clamp TCP MSS - не работает без этих правил?
atbizz
Сообщения: 14
Зарегистрирован: 20 янв 2019, 17:27

Re: Вопрос про firewall mark-routing

Сообщение atbizz »

Отальные правила только те что были по умолчанию.

По поводу Change-MSS тут немного интересней, галка "Clamp TCP MSS" установлена (по умолчанию), но без правил Change-MSS именно rutracker.org перестает нормально работать, в то время как например Linkedin.com и некоторые другие работают (внес нескольтко сайтов в таблицу маршрутов)
Аватара пользователя
Chupaka
Сообщения: 4086
Зарегистрирован: 29 фев 2016, 15:26
Откуда: Минск

Re: Вопрос про firewall mark-routing

Сообщение Chupaka »

Ну, "те, что были" — так себе описание. /export hide-sensitive=yes хотя бы приведите...
atbizz
Сообщения: 14
Зарегистрирован: 20 янв 2019, 17:27

Re: Вопрос про firewall mark-routing

Сообщение atbizz »

Вот все что есть

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

/ip firewall filter
add action=accept chain=input comment="defconf: accept ICMP" protocol=icmp
add action=accept chain=input comment="defconf: accept established,related" connection-state=established,related
add action=drop chain=input comment="defconf: drop all from WAN" in-interface=ether1
add action=fasttrack-connection chain=forward comment="defconf: fasttrack" connection-state=established,related
add action=accept chain=forward comment="defconf: accept established,related" connection-state=established,related
add action=drop chain=forward comment="defconf: drop invalid" connection-state=invalid
add action=drop chain=forward comment="defconf:  drop all from WAN not DSTNATed" connection-nat-state=!dstnat connection-state=new in-interface=ether1
/ip firewall mangle
add action=mark-routing chain=prerouting comment="Mark packets to forbidden addresses as forbidden" disabled=yes dst-address-list=forbidden new-routing-mark=forbidden \
    passthrough=yes src-address=192.168.1.0/24 tcp-flags=""
add action=change-mss chain=forward in-interface=gre-tunnel new-mss=1360 passthrough=no protocol=tcp tcp-flags=syn tcp-mss=!0-1360
add action=change-mss chain=forward new-mss=1360 out-interface=gre-tunnel passthrough=no protocol=tcp tcp-flags=syn tcp-mss=!0-1360
/ip firewall nat
add action=masquerade chain=srcnat comment="defconf: masquerade" out-interface=ether1
add action=netmap chain=dstnat comment=torrent dst-port=29173 in-interface=ether1 protocol=tcp to-addresses=192.168.1.2 to-ports=29173
add action=netmap chain=dstnat comment=torrent dst-port=29173 in-interface=ether1 protocol=udp to-addresses=192.168.1.2 to-ports=29173
add action=netmap chain=dstnat comment="ssh on box" disabled=yes dst-port=1424 in-interface=ether1 protocol=tcp to-addresses=192.168.1.5 to-ports=22
add action=netmap chain=dstnat comment="openvpn on box" disabled=yes dst-port=443 in-interface=ether1 protocol=tcp to-addresses=192.168.1.5 to-ports=1194
add action=netmap chain=dstnat comment=http disabled=yes dst-port=1480 in-interface=ether1 protocol=tcp to-addresses=192.168.1.6 to-ports=80
add action=netmap chain=dstnat disabled=yes dst-port=1425 in-interface=ether1 protocol=udp to-addresses=192.168.1.2 to-ports=1400
/
Аватара пользователя
Chupaka
Сообщения: 4086
Зарегистрирован: 29 фев 2016, 15:26
Откуда: Минск

Re: Вопрос про firewall mark-routing

Сообщение Chupaka »

Меня немного смущает tcp-flags="", я бы его совсем убрал, но оно, наверное, не должно влиять конкретно в этой ситуации.

А попробуйте fasttrack отключить.
atbizz
Сообщения: 14
Зарегистрирован: 20 янв 2019, 17:27

Re: Вопрос про firewall mark-routing

Сообщение atbizz »

Приветствую,

отключение fast path на тунеле не давало результата, но потом нашел причину, все стало резко хорошо после выключения IP->Settings->Route Cache, (это как написанов документации - will also disable fast path )
Аватара пользователя
Chupaka
Сообщения: 4086
Зарегистрирован: 29 фев 2016, 15:26
Откуда: Минск

Re: Вопрос про firewall mark-routing

Сообщение Chupaka »

Я имел в виду именно FastTrack, а не FastPath. Это правило у вас с action=fasttrack.
atbizz
Сообщения: 14
Зарегистрирован: 20 янв 2019, 17:27

Re: Вопрос про firewall mark-routing

Сообщение atbizz »

Да тут я перепутал fasttrack с fastpath,

а какое правило вы имеете ввиду, c fasttrack только одно, "стандартное"

add action=fasttrack-connection chain=forward comment="defconf: fasttrack" connection-state=established,related

его отключить?

(C отключением route cache все идеально, вот только что загрузка cpu заметно выросла...)
Аватара пользователя
Chupaka
Сообщения: 4086
Зарегистрирован: 29 фев 2016, 15:26
Откуда: Минск

Re: Вопрос про firewall mark-routing

Сообщение Chupaka »

Да, его отключить.
atbizz
Сообщения: 14
Зарегистрирован: 20 янв 2019, 17:27

Re: Вопрос про firewall mark-routing

Сообщение atbizz »

Да, отключение помогает!

притом модификация (dst-address-list=!forbidden)

add action=fasttrack-connection chain=forward comment="defconf: fasttrack" connection-state=established,related dst-address-list=!forbidden

не помагает.
я не совсем в курсе что этот fasttrack делает, такое вот поведение это баг или фича?
Аватара пользователя
Chupaka
Сообщения: 4086
Зарегистрирован: 29 фев 2016, 15:26
Откуда: Минск

Re: Вопрос про firewall mark-routing

Сообщение Chupaka »

FastTrack исключает некоторые процессы из обработки пакета (типа queues и прочего).
Исключение ваше может не работать потому, что правило ловит и обратные пакеты (от сервера к клиенту, src-address-list=forbidden) и помечает их как FastTrack-соединения, и следующий пакет к серверу пойдёт уже по FastTrack
atbizz
Сообщения: 14
Зарегистрирован: 20 янв 2019, 17:27

Re: Вопрос про firewall mark-routing

Сообщение atbizz »

Спасибо, добавление src-address-list=!forbidden помогло!
нагрузка на cpu заметно упала, ну и тонель остался работоспособным