Mikrotik два провайдера

Обсуждение ПО и его настройки
Ответить
PapIK1122
Сообщения: 8
Зарегистрирован: 19 окт 2023, 11:33

Здравствуйте, на одном нашем объекте был мобильный интернет, потому что на то время даже "меди" там не было, сейчас подключили оптику, но провайдер не выдаёт статический адрес IPv4 потому что они у него закончились, по этому стала задача сделать так чтобы:
Весь трафик из дома шел через провайдера с оптикой, для быстрой и качественной работы сети интернет, а доступ извне в дом был через второго провайдера(мобильного, у которого осталась статика).
Казалось бы задача на 5 минут, но я не понимаю почему при маркировке соединения, при том что в логах Микротик пишет, что есть марка, он иногда отправляет через первого провайдера...
Первый провайдер подписан BTK, второй - KROKS.

Изображение

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

# 2023-10-19 11:44:30 by RouterOS 7.10
# software id = WMIK-ATAJ
#
# model = RB962UiGS-5HacT2HnT
# serial number = 8A7708CE722B
/interface bridge
add arp=proxy-arp dhcp-snooping=yes igmp-snooping=yes name=bridge1
/interface ethernet
set [ find default-name=ether1 ] name=BTK
set [ find default-name=ether2 ] name=Kroks
/interface list
add name=WAN
add name=LAN
/ip pool
add name=dhcp_pool1 ranges=192.168.1.100-192.168.1.254
/ip dhcp-server
add address-pool=dhcp_pool1 interface=bridge1 lease-time=1d30m name=dhcp1
/routing table
add disabled=no fib name=BTK
add disabled=no fib name=KROKS
/interface bridge port
add bridge=bridge1 interface=ether3
add bridge=bridge1 interface=ether4
add bridge=bridge1 interface=ether5
/interface list member
add interface=BTK list=WAN
add interface=Kroks list=WAN
add interface=bridge1 list=LAN
/ip address
add address=192.168.1.1/24 interface=bridge1 network=192.168.1.0
add address=192.168.100.2/24 interface=BTK network=192.168.100.0
add address=192.168.88.2/24 interface=Kroks network=192.168.88.0
/ip dhcp-server network
add address=192.168.1.0/24 dns-server=192.168.1.1 gateway=192.168.1.1
/ip dns
set servers=8.8.8.8,8.8.4.4,1.1.1.1
/ip firewall filter
add action=fasttrack-connection chain=forward comment="defconf: fasttrack" \
    connection-state=established,related hw-offload=yes
add action=accept chain=input comment=\
    "defconf: accept established,related,untracked" connection-state=\
    established,related,untracked
add action=accept chain=forward connection-state=\
    established,related,untracked
add action=accept chain=input dst-port=8000,8001,554,555 protocol=tcp
add action=accept chain=input dst-port=8888,30464 protocol=tcp
add action=accept chain=input comment="defconf: accept ICMP" protocol=icmp
add action=accept chain=forward protocol=icmp
add action=accept chain=input comment="accept all connection from LAN" \
    in-interface-list=!WAN src-address=192.168.0.0/24
add action=accept chain=forward in-interface-list=!WAN out-interface-list=WAN
add action=accept chain=forward comment="defconf: accept in ipsec policy" \
    ipsec-policy=in,ipsec
add action=accept chain=input dst-port=8291,22 protocol=tcp
add action=accept chain=forward comment="defconf: accept out ipsec policy" \
    ipsec-policy=out,ipsec
add action=accept chain=input dst-port=1723 protocol=tcp
add action=accept chain=input protocol=l2tp
add action=accept chain=input dst-port=1701,500,4500 protocol=udp
add action=accept chain=input protocol=gre
add action=accept chain=input protocol=ipsec-esp
add action=accept chain=input protocol=ipsec-ah
add action=accept chain=input comment="Allow DNS from LOCAL" dst-port=53 \
    in-interface=bridge1 protocol=udp
add action=drop chain=input comment="defconf: drop invalid" connection-state=\
    invalid
add action=drop chain=forward comment="defconf: drop invalid" \
    connection-state=invalid
add action=drop chain=input comment="defconf: drop all not coming from LAN" \
    in-interface-list=WAN
add action=drop chain=forward comment=\
    "defconf:  drop all from WAN not DSTNATed" connection-nat-state=!dstnat \
    connection-state=new in-interface-list=WAN
/ip firewall mangle
add action=mark-connection chain=input in-interface=BTK log=yes log-prefix=\
    BTK-IN new-connection-mark=BTK-IN passthrough=yes
add action=mark-connection chain=input in-interface=Kroks log=yes log-prefix=\
    KROKS-IN new-connection-mark=KRIKS-IN passthrough=yes
add action=mark-routing chain=output connection-mark=BTK-IN log=yes \
    log-prefix=BTK-OUT new-routing-mark=BTK passthrough=yes
add action=mark-routing chain=output connection-mark=KRIKS-IN log=yes \
    log-prefix=KROKS-OUT new-routing-mark=KROKS passthrough=yes
/ip firewall nat
add action=dst-nat chain=dstnat dst-port=8888,30464 in-interface-list=WAN \
    log-prefix=ir protocol=tcp to-addresses=192.168.1.30
add action=dst-nat chain=dstnat dst-port=30464 protocol=tcp src-address=\
    192.168.1.0/24 to-addresses=192.168.1.30
add action=masquerade chain=srcnat dst-address=192.168.1.30 dst-port=30464 \
    protocol=tcp src-address=192.168.1.0/24
add action=dst-nat chain=dstnat dst-port=554 in-interface-list=WAN protocol=\
    tcp to-addresses=192.168.1.201 to-ports=554
add action=dst-nat chain=dstnat dst-port=554 protocol=tcp src-address=\
    192.168.1.0/24 to-addresses=192.168.1.201 to-ports=554
add action=masquerade chain=srcnat dst-address=192.168.1.201 dst-port=554 \
    protocol=tcp src-address=192.168.1.0/24
add action=dst-nat chain=dstnat dst-port=8000 in-interface-list=WAN protocol=\
    tcp to-addresses=192.168.1.201 to-ports=8000
add action=dst-nat chain=dstnat dst-port=8000 \
    protocol=tcp src-address=192.168.1.0/24 to-addresses=192.168.1.201
add action=masquerade chain=srcnat dst-address=192.168.1.201 dst-port=8000 \
    protocol=tcp src-address=192.168.1.0/24
add action=dst-nat chain=dstnat dst-port=555 in-interface-list=WAN protocol=\
    tcp to-addresses=192.168.1.61 to-ports=554
add action=dst-nat chain=dstnat dst-port=555 protocol=tcp src-address=\
    192.168.1.0/24 to-addresses=192.168.1.61 to-ports=554
add action=masquerade chain=srcnat dst-address=192.168.1.61 dst-port=554 \
    protocol=tcp src-address=192.168.1.0/24
add action=dst-nat chain=dstnat dst-port=8001 in-interface-list=WAN protocol=\
    tcp to-addresses=192.168.1.61 to-ports=8000
add action=dst-nat chain=dstnat dst-port=8001 \
    protocol=tcp src-address=192.168.1.0/24 to-addresses=192.168.1.61 \
    to-ports=8000
add action=masquerade chain=srcnat dst-address=192.168.1.61 dst-port=8000 \
    protocol=tcp src-address=192.168.1.0/24
add action=masquerade chain=srcnat out-interface=Kroks
add action=masquerade chain=srcnat out-interface=BTK
/ip route
add disabled=no distance=10 dst-address=0.0.0.0/0 gateway=192.168.100.1 \
    pref-src="" routing-table=main scope=30 suppress-hw-offload=no \
    target-scope=10
add disabled=no distance=10 dst-address=0.0.0.0/0 gateway=192.168.88.1 \
    pref-src="" routing-table=main scope=30 suppress-hw-offload=no \
    target-scope=10
add disabled=no dst-address=0.0.0.0/0 gateway=192.168.88.1 routing-table=\
    KROKS suppress-hw-offload=no
add disabled=no dst-address=0.0.0.0/0 gateway=192.168.100.1 routing-table=BTK \
    suppress-hw-offload=no


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

Потому что fasttrack.
Исключения из него сделайте для промаркированных соединений.


Telegram: @thexvo
PapIK1122
Сообщения: 8
Зарегистрирован: 19 окт 2023, 11:33

xvo писал(а): 19 окт 2023, 11:55 Потому что fasttrack.
Исключения из него сделайте для промаркированных соединений.
Я всё правильно понял?

Изображение

Ещё момент:
если я устанавливаю метрику меньше для шлюза со статикой, через который я устанавливаю соединение, я вообще не могу установить соединение:


Изображение

Изображение

Изображение

Изображение

Изображение

Изображение

Настройка Passthrough на что влияет?


PapIK1122
Сообщения: 8
Зарегистрирован: 19 окт 2023, 11:33

Интересный момент, что когда я задаю одинаковую метрику двум шлюзам, он работает в режиме балансировки, в таком режиме у меня есть доступ к сервисам которые мне нужны внутри дома.
На Кроксе(шлюз со статикой) во вкладке соединения в таком случае вообще не отображаются соединения, на нём я настроил своего рода DMZ. Но на Микротике, если посмотреть во вкладку соединения мои соединения не маркируются никак! Я обращаюсь на порты 554, 30464 и 8888 со своего мобильника. Зато DNS-соединения маркируются.

Изображение

Если я увеличу метрику для моего шлюза со статикой, то на Микротике мои соединения выглядят вот так, они не маркируются и соответственно не могут выйти оттуда, куда пришли, как мне это вылечить?

Изображение

Изображение


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

PapIK1122 писал(а): 19 окт 2023, 12:10 Я всё правильно понял?
Ага.
PapIK1122 писал(а): 19 окт 2023, 12:10 если я устанавливаю метрику меньше для шлюза со статикой, через который я устанавливаю соединение, я вообще не могу установить соединение:
О каком соединении сейчас идет речь?
Возможно надо убить старое, если оно перед этим было установлено через первого провайдера.
PapIK1122 писал(а): 19 окт 2023, 12:10 Настройка Passthrough на что влияет?
На то, будут ли после применения данного правила применяться какие-то ещё правила из этой цепочки, расположенные ниже, или при его срабатывании исполнение цепочки заканчивается.
Обычно для правил помечающих, исходящие соединения нужно ставить passthrough=yes, потому что надо сразу пометить соединение и проставить ему routing-mark.
Для входящих обычно наоборот не надо - там роутинг проставляется не для тех пакетов, на которых помечается соединение, а на обратных.


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

А, ну так все понятно, у вас mangle то недонастроен:

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

/ip firewall mangle
add action=mark-connection chain=input in-interface=BTK log=yes log-prefix=\
    BTK-IN new-connection-mark=BTK-IN passthrough=yes
add action=mark-connection chain=input in-interface=Kroks log=yes log-prefix=\
    KROKS-IN new-connection-mark=KRIKS-IN passthrough=yes
add action=mark-routing chain=output connection-mark=BTK-IN log=yes \
    log-prefix=BTK-OUT new-routing-mark=BTK passthrough=yes
add action=mark-routing chain=output connection-mark=KRIKS-IN log=yes \
    log-prefix=KROKS-OUT new-routing-mark=KROKS passthrough=yes
Здесь для проходящего трафика вообще отсутсвует распределение по таблицам, только для исходящего с самого роутера.
В prerouting'е тоже нужен блок, маркирующий направленное наружу в одну из таблиц.
Последний раз редактировалось xvo 19 окт 2023, 12:55, всего редактировалось 1 раз.


Telegram: @thexvo
PapIK1122
Сообщения: 8
Зарегистрирован: 19 окт 2023, 11:33

xvo писал(а): 19 окт 2023, 12:49
PapIK1122 писал(а): 19 окт 2023, 12:10 если я устанавливаю метрику меньше для шлюза со статикой, через который я устанавливаю соединение, я вообще не могу установить соединение:
О каком соединении сейчас идет речь?
Возможно надо убить старое, если оно перед этим было установлено через первого провайдера.
Соединение через первого провайдера в принципе не возможно, там серый адрес.
Посмотрите на моё сообщение выше, возможно вы мне подскажите почему мои соединения не маркируются.


PapIK1122
Сообщения: 8
Зарегистрирован: 19 окт 2023, 11:33

xvo писал(а): 19 окт 2023, 12:54 А, ну так все понятно, у вас mangle то недонастроен:

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

/ip firewall mangle
add action=mark-connection chain=input in-interface=BTK log=yes log-prefix=\
    BTK-IN new-connection-mark=BTK-IN passthrough=yes
add action=mark-connection chain=input in-interface=Kroks log=yes log-prefix=\
    KROKS-IN new-connection-mark=KRIKS-IN passthrough=yes
add action=mark-routing chain=output connection-mark=BTK-IN log=yes \
    log-prefix=BTK-OUT new-routing-mark=BTK passthrough=yes
add action=mark-routing chain=output connection-mark=KRIKS-IN log=yes \
    log-prefix=KROKS-OUT new-routing-mark=KROKS passthrough=yes
Здесь для проходящего трафика вообще отсутсвует распределение по таблицам, только для исходящего с самого роутера.
В prerouting'е тоже нужен блок, маркирующий направленное наружу в одну из таблиц.
Кажется получилось. Вот как сделал:

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

/ip firewall mangle
add action=mark-connection chain=input in-interface=Kroks log-prefix=KROKS-IN \
    new-connection-mark=KROKS-IN passthrough=yes
add action=mark-connection chain=prerouting connection-mark=no-mark \
    in-interface=Kroks new-connection-mark=KROKS-IN passthrough=yes
add action=mark-routing chain=prerouting connection-mark=KROKS-IN in-interface=\
    bridge1 new-routing-mark=KROKS passthrough=yes
add action=mark-routing chain=output connection-mark=KROKS-IN log-prefix=\
    KROKS-OUT new-routing-mark=KROKS passthrough=yes
Сейчас заработало:

Изображение

Всё ли правильно сейчас?
Странно просто всё это, вчера так же делал, соединение появлялось на 5 секунд и обрывалось... Видимо что-то упускал...


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

Первое правило не нужно.
Prerouting покроет оба варианта - и то, что дальше пойдет в forward и то, что пойдет в input.


Telegram: @thexvo
PapIK1122
Сообщения: 8
Зарегистрирован: 19 окт 2023, 11:33

xvo писал(а): 19 окт 2023, 13:54 Первое правило не нужно.
Prerouting покроет оба варианта - и то, что дальше пойдет в forward и то, что пойдет в input.
Ок. Спасибо


Ответить