Load balancing и VPN

Тема в разделе "Общие вопросы", создана пользователем mazzahaker, 4 окт 2018.

  1. mazzahaker

    mazzahaker Новый участник

    Коллеги, добрый день!
    Прошерстил кучу статей и мануалов по этому поводу, однако, так и не могу понять, как обойти проблему.
    Есть конфигурация микротика:
    Код:
    /ip address
    add address=1.1.1.1/24 interface=ether1 comment="MTS"
    add address=2.2.2.2/24 interface=ether2 comment="Avant"
    
    add address=10.0.4.0/24 interface=ether4 comment="LAN"
    add address=10.0.5.0/24 interface=ether4 comment="LAN"
    
    /ip route
    add check-gateway=ping distance=1 gateway=8.8.8.8 target-scope=30
    add check-gateway=ping distance=2 gateway=8.8.4.4 target-scope=30
    add check-gateway=ping distance=1 dst-address=8.8.8.8/32 gateway=х.х.х.х
    
    
    /ip firewall nat
    add action=masquerade chain=srcnat comment="MTS" out-interface=ether1
    add action=masquerade chain=srcnat comment="Avant" out-interface=ether2
    
    /ip firewall mangle
    add action=mark-connection chain=input comment="MTS Input" in-interface=ether1 new-connection-mark="MTS Input"
    add action=mark-connection chain=input comment="Avant Input" in-interface=ether2 new-connection-mark="Avant Input"
    
    add action=mark-routing chain=output comment="MTS Output" connection-mark="Tars Input" new-routing-mark="Out MTS"
    add action=mark-routing chain=output comment="Avant Output" connection-mark="Avant Input" new-routing-mark="Avant Telecom"
    
    add action=mark-routing chain=prerouting comment="LAN load balancing 2-0" \
        dst-address-type=!local in-interface=ether3 new-routing-mark=\
        "Out MTS" passthrough=yes per-connection-classifier=\
        both-addresses-and-ports:2/0
    add action=mark-routing chain=prerouting comment="LAN load balancing 2-1" \
        dst-address-type=!local in-interface=ether3 new-routing-mark=\
        "Avant Telecom" passthrough=yes per-connection-classifier=\
        both-addresses-and-ports:2/1
    Разумеется, вместе с этим конфигом у меня и gateway прописаны корректно как для main, так и для помеченных маршрутов.
    Все работает, кроме VPN. Прошу помощи - не понимаю в чем проблема. Вроде пакеты приходят и уходят через одного провайдера. Это не должно рушить VPN. Либо как исключить из балансинга VPN? [​IMG]
    Спасибо!

    P.S. Без балансинга у меня все круто работает на обоих провайдерах. И отказоустойчивость тоже :)

    P.P.S. VPN у меня сделан на OVPN
     
    Последнее редактирование: 4 окт 2018
  2. mazzahaker

    mazzahaker Новый участник

    Попытался отдельно помечать SRS адрес либо сам интерфейс ovpn дополнительными входящими mark и исходящими в соответствии с провайдером, исключая их из PCC, но все равно не хочет работать...
    Быть может по другим критериям стоит отсекать?
    При этом видно, что по указанным правилам пакеты маркируются - счетчики идут.
     
    Последнее редактирование: 5 окт 2018
  3. Илья Князев

    Илья Князев Администратор Команда форума

    VPN-сервер на роутере или за ним?
     
  4. mazzahaker

    mazzahaker Новый участник

    Добрый вечер, да, VPN непосредственно на сервере
     
  5. Илья Князев

    Илья Князев Администратор Команда форума

    А сервер за NAT?
    Тогда смотрите spw.ru/forum/threads/probros-portov.747/
     
    Последнее редактирование модератором: 23 июл 2025
  6. mazzahaker

    mazzahaker Новый участник

    Микротик, на котором делаю балансировку, является VPN-клиентом и шлюзом офиса.
    В другом офисе, где пытаюсь сделать подобное, перестает работать нат.
    За помощь спасибо, как прочту тему и попробую свои силы, обязательно отпишу.
    Спасибо :)
     
  7. mazzahaker

    mazzahaker Новый участник

    Пардон за флуд, но с конфигом из той темы не работает :(
    Исходя из всего прочитанного понимаю, что где-то косяк.
    Дабы не быть голословным, выкладываю свой последний конфиг со всеми VPN и прочим :)

    Код:
    /interface ethernet
    set [ find default-name=ether1 ] comment="WAN 1"
    set [ find default-name=ether2 ] comment="WAN 2"
    set [ find default-name=ether3 ] comment="net 192.168.0.0"
    set [ find default-name=ether4 ] comment=Local
    set [ find default-name=ether5 ] comment="To OPT"
    set [ find default-name=ether10 ] disabled=yes
    
    
    /interface ovpn-client...
    /ip address
    add address=1.1.1.234/30 interface=ether1 network=1.1.1.232
    add address=2.2.2.218/30 interface=ether2 network=2.2.2.216
    add address=10.0.4.1/24 interface=ether4 network=10.0.4.0
    add address=10.0.5.1/24 interface=ether4 network=10.0.5.0
    add address=10.0.13.2/24 interface=ether5 network=10.0.13.0
    add address=192.168.0.1/24 interface=ether3 network=192.168.0.0
    
    /ip firewall filter
    add action=accept chain=input comment="Allow IGMP" in-interface=ether1 \
        protocol=igmp
    add action=accept chain=forward dst-port=1935 protocol=tcp
    add action=accept chain=input dst-port=1935 protocol=tcp
    add action=accept chain=forward comment="Accept established connections" \
        connection-state=established
    add action=accept chain=input connection-state=established
    add action=accept chain=input comment="Allow VPN" dst-port=1194 protocol=tcp
    add action=accept chain=forward comment="Allow ping" protocol=icmp
    add action=accept chain=input protocol=icmp
    add action=accept chain=input comment="Accept related connections" \
        connection-state=related
    add action=accept chain=forward connection-state=related
    add action=accept chain=input comment="Allow LAN" in-interface=ether4 \
        src-address=10.0.4.0/24
    add action=accept chain=input in-interface=ether4 src-address=10.0.5.0/24
    add action=accept chain=input in-interface=ether5 src-address=10.0.7.0/24
    add action=accept chain=input in-interface=ether5 src-address=10.0.8.0/24
    add action=accept chain=input comment="Allow GRE" protocol=gre
    add action=drop chain=input comment="Drop invalid" connection-state=invalid
    add action=drop chain=forward connection-state=invalid
    add action=accept chain=forward comment="Accept forward from LAN to WAN" \
        in-interface=!ether1 out-interface=ether1
    add action=accept chain=forward in-interface=!ether2 out-interface=ether2
    add action=drop chain=forward comment="Drop other" disabled=yes
    add action=drop chain=input comment="drop brute forcers" dst-port=8291 \
        protocol=tcp src-address-list=ftp_blacklist
    add action=accept chain=output content="530 Login incorrect" dst-limit=\
        1/1m,9,dst-address/1m protocol=tcp
    add action=add-dst-to-address-list address-list=ftp_blacklist \
        address-list-timeout=1h chain=output content="530 Login incorrect" \
        protocol=tcp
    /ip firewall mangle
    add action=mark-connection chain=prerouting in-interface=ether1 \
        new-connection-mark=cin_ISP1 passthrough=yes
    add action=mark-connection chain=prerouting in-interface=ether2 \
        new-connection-mark=cin_ISP2 passthrough=yes
    add action=mark-routing chain=output connection-mark=cin_ISP1 \
        new-routing-mark=rout_ISP1 passthrough=no
    add action=mark-routing chain=output connection-mark=cin_ISP2 \
        new-routing-mark=rout_ISP2 passthrough=no
    add action=mark-routing chain=prerouting new-routing-mark=mixed src-address=\
        10.0.4.0/24
    add action=mark-routing chain=prerouting new-routing-mark=mixed src-address=\
        10.0.5.0/24
    add action=mark-routing chain=prerouting connection-mark=cin_ISP1 \
        in-interface=ether4 new-routing-mark=rout_ISP1 passthrough=no
    add action=mark-routing chain=prerouting connection-mark=cin_ISP2 \
        in-interface=ether4 new-routing-mark=rout_ISP2 passthrough=no
    /ip firewall nat
    add action=masquerade chain=srcnat out-interface=ether1
    add action=masquerade chain=srcnat out-interface=ether2
    add action=dst-nat ...
    /ip route
    add check-gateway=ping distance=1 gateway=1.1.1.233 routing-mark=rout_ISP1
    add check-gateway=ping distance=1 gateway=2.2.2.217 routing-mark=\
        rout_ISP2
    add distance=1 gateway=1.1.1.233,2.2.2.217 routing-mark=mixed
    add check-gateway=ping distance=1 gateway=8.8.8.8 target-scope=30
    add check-gateway=ping distance=2 gateway=8.8.4.4 target-scope=30
    add distance=2 dst-address=8.8.4.4/32 gateway=2.2.2.217
    add check-gateway=ping distance=1 dst-address=8.8.8.8/32 gateway=1.1.1.233
    add distance=1 dst-address=10.0.7.0/24 gateway=10.0.13.1
    add distance=1 dst-address=10.0.8.0/24 gateway=10.0.13.1
    add distance=1 dst-address=10.0.14.1/32 gateway=ether5
    add distance=1 dst-address=10.0.20.0/24 gateway=10.0.10.1
    add distance=1 dst-address=10.0.21.0/24 gateway=10.0.10.1
    add distance=1 dst-address=10.0.30.0/24 gateway=10.0.40.1
    
    Есть реализация, которая позволила использовать балансировку, но в ней не работает NAT и VPN. Теперь я окончательно запутался :)
    Код:
    /ip firewall mangle
    add action=mark-connection chain=input in-interface=ether1 new-connection-mark=cin_ether1 passthrough=yes
    add action=mark-connection chain=input in-interface=ether2 new-connection-mark=cin_ether2
    add action=mark-routing chain=output connection-mark=cin_ether1 new-routing-mark=rout_ether1 passthrough=no
    add action=mark-routing chain=output connection-mark=cin_ether2 new-routing-mark=rout_ether2 passthrough=no
    add action=mark-routing chain=prerouting new-routing-mark=lan_out_ether1 passthrough=yes per-connection-classifier=\
        src-address-and-port:2/0 src-address=10.10.10.0/24
    add action=mark-routing chain=prerouting new-routing-mark=lan_out_ether2 per-connection-classifier=src-address-and-port:2/1 \
        src-address=10.10.10.0/24
    
     
    Последнее редактирование: 31 окт 2018