Страница 1 из 1

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

Добавлено: 19 окт 2023, 11:51
PapIK1122
Здравствуйте, на одном нашем объекте был мобильный интернет, потому что на то время даже "меди" там не было, сейчас подключили оптику, но провайдер не выдаёт статический адрес 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

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

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

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

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

Изображение

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


Изображение

Изображение

Изображение

Изображение

Изображение

Изображение

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

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

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

Изображение

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

Изображение

Изображение

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

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

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

Добавлено: 19 окт 2023, 12:54
xvo
А, ну так все понятно, у вас 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'е тоже нужен блок, маркирующий направленное наружу в одну из таблиц.

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

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

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

Добавлено: 19 окт 2023, 13:12
PapIK1122
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 секунд и обрывалось... Видимо что-то упускал...

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

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

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

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