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. Илья Князев

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

  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