DUAL WAN через PCC и насколько VPN тунелей

Тема в разделе "Маршрутизация", создана пользователем LMA, 20 авг 2019.

  1. LMA

    LMA Участник

    Добрый день.
    Дали интересную задачку, я пока её на стенде отрабатываю, и встал в ступор, помогите если был похожий кейс у кого!
    Надо в одном офисе настроить балансировку между двумя провайдерами для NAT через PCC (с этой частью все норм, настроено в соответствии с мануалом на официальной вики и работает), при этом офис соединен по GRE со складом (сделано два интерфейса GRE до склада, для обоих провайдеров), поднят ospf, маршруты появились на обоих роутерах, но если я провожу трассировку с компа в офисе до компа на складе происходит какая то ахинея, запрос вылетает в internet, отключаю маршруты в именованных таблицах, через резервный маршрут в main все работает как надо, по ощущениям проверяются только именованные таблицы, а в них только маршрут по умолчанию.
    Я позже приложу схему и конфиги, но вдруг кто то на вскидку сможет ситуацию прояснить ситуацию.
     
  2. LMA

    LMA Участник

    Щас вроде бы как заставил все работать, но дополнительно прописал правила в ip=>route=>rule
    /ip route rule
    add action=lookup-only-in-table dst-address=192.168.20.0/24 src-address=\
    192.168.10.0/24 table=main
    add action=lookup-only-in-table dst-address=192.168.10.0/24 src-address=\
    192.168.10.0/24 table=main

    ,где 192.168.10.0/24 - сеть в офисе, а 192.168.20.0/24 - сеть на складе
     
  3. Илья Князев

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

  4. LMA

    LMA Участник

    Добрый день.
    Илья, я данное Ваше выступление видел в живую год назад.
    Саму задачу DUAL WAN через PCC с несколькими VPN туннелями я решил, вполне сносно все работает, цель данного поста - уточнить некоторые детали. Буду очень Вам благодарен, если Вы проясните пару моментов по настройке.
    Схема ниже, я несколько упростил задачу, от первоначальной: роутер R1 подключен к трем разным провайдерам, R1 и R2 связаны через GRE VPN туннели, для доступа в интернет используются первый и второй провайдеры одновременно в пропорции 2/3 и 1/3, если оба провайдера падают, интернет должен идти через третьего провайдера. Основной маршрут из R1 до R2 должен идти по VPN туннелю через третьего провайдера, если линк недоступен, то через первого, если первый отвалится, то через второго.

    Вопрос то следующий, правильно ли я понимаю, что если не будет правил 3 и 4 в ip=>route=>rules, то работать по факту будет только NAT, и все маршруты R1 станет искать в именованных таблицах, где будет дефолтный шлюз, через который он попробует пустить трафик с локальной сети 192.168.10.0/24 до удаленной сети 192.168.20.0/24

    схема-для-форума-001.jpg
    Ниже конфигурации маршрутизаторов

    R1
    /interface bridge
    add name=bridge-ospf
    /interface ethernet
    set [ find default-name=ether1 ] comment="WAN1 40Mb/sec"
    set [ find default-name=ether2 ] comment="WAN2 20Mb/sec"
    set [ find default-name=ether3 ] comment="WAN3 20Mb/sec"
    set [ find default-name=ether4 ] comment=LAN
    /interface gre
    add allow-fast-path=no ipsec-secret=123 keepalive=5s,5 local-address=\
    10.0.10.1 name=gre-tunnel-R1WAN1-R2 remote-address=10.0.40.1
    add allow-fast-path=no ipsec-secret=123 keepalive=5s,5 local-address=\
    10.0.20.1 name=gre-tunnel-R1WAN2-R2 remote-address=10.0.40.1
    add allow-fast-path=no ipsec-secret=123 keepalive=5s,5 local-address=\
    10.0.30.1 name=gre-tunnel-R1WAN3-R2 remote-address=10.0.40.1
    /interface wireless security-profiles
    set [ find default=yes ] supplicant-identity=MikroTik
    /routing ospf area
    set [ find default=yes ] disabled=yes
    /routing ospf instance
    set [ find default=yes ] disabled=yes
    add name=ospf1 router-id=172.25.1.1
    /routing ospf area
    add instance=ospf1 name=area0
    /ip address
    add address=10.0.10.1/24 interface=ether1 network=10.0.10.0
    add address=10.0.20.1/24 interface=ether2 network=10.0.20.0
    add address=10.0.30.1/24 interface=ether3 network=10.0.30.0
    add address=192.168.10.1/24 interface=ether4 network=192.168.10.0
    add address=172.16.1.1 interface=gre-tunnel-R1WAN1-R2 network=172.16.1.2
    add address=172.16.2.1 interface=gre-tunnel-R1WAN2-R2 network=172.16.2.2
    add address=172.16.3.1 interface=gre-tunnel-R1WAN3-R2 network=172.16.3.2
    add address=172.25.1.1/25 interface=bridge-ospf network=172.25.1.0
    /ip firewall mangle
    add action=accept chain=prerouting comment="Exclude LAN traffic for both ISP" \
    dst-address=1.1.1.0/24 in-interface=ether4
    add action=accept chain=prerouting dst-address=2.2.2.0/24 in-interface=ether4
    add action=mark-connection chain=prerouting comment=\
    "Marking incoming both ISP traffic" connection-mark=no-mark in-interface=\
    ether1 new-connection-mark=ISP1 passthrough=yes
    add action=mark-connection chain=prerouting connection-mark=no-mark \
    in-interface=ether2 new-connection-mark=ISP2 passthrough=yes
    add action=mark-connection chain=prerouting comment=\
    "Marking all LAN traffic for NAT" connection-mark=no-mark \
    dst-address-type=!local in-interface=ether4 new-connection-mark=ISP1 \
    passthrough=yes per-connection-classifier=both-addresses:3/0 tcp-flags=""
    add action=mark-connection chain=prerouting connection-mark=no-mark \
    dst-address-type=!local in-interface=ether4 new-connection-mark=ISP1 \
    passthrough=yes per-connection-classifier=both-addresses:3/1 tcp-flags=""
    add action=mark-connection chain=prerouting connection-mark=no-mark \
    dst-address-type=!local in-interface=ether4 new-connection-mark=ISP2 \
    passthrough=yes per-connection-classifier=both-addresses:3/2 tcp-flags=""
    add action=mark-routing chain=output comment=\
    "Route Mark for incoming traffic" connection-mark=ISP1 new-routing-mark=\
    ISP1_route passthrough=yes
    add action=mark-routing chain=output connection-mark=ISP2 new-routing-mark=\
    ISP2_route passthrough=yes
    add action=mark-routing chain=prerouting comment=\
    "Route Mark for forward from LAN traffic to NAT" connection-mark=ISP1 \
    in-interface=ether4 new-routing-mark=ISP1_route passthrough=yes
    add action=mark-routing chain=prerouting connection-mark=ISP2 in-interface=\
    ether4 new-routing-mark=ISP2_route passthrough=yes
    /ip firewall nat
    add action=src-nat chain=srcnat out-interface=ether1 \
    src-address=192.168.10.0/24 to-addresses=10.0.10.1
    add action=src-nat chain=srcnat out-interface=ether2 \
    src-address=192.168.10.0/24 to-addresses=10.0.20.1
    add action=src-nat chain=srcnat out-interface=ether3 \
    src-address=192.168.10.0/24 to-addresses=10.0.30.1
    /ip route
    add check-gateway=ping comment="Default route for ISP1" distance=1 gateway=\
    10.0.10.2 routing-mark=ISP1_route
    add check-gateway=ping comment="Default route for ISP2" distance=1 gateway=\
    10.0.20.2 routing-mark=ISP2_route
    add check-gateway=ping comment="Default route for ISP1 (BackUp)" distance=1 \
    gateway=10.0.10.2
    add check-gateway=ping comment="Default route for ISP2 (BackUp)" distance=2 \
    gateway=10.0.20.2
    add check-gateway=ping comment="Default route for ISP3" distance=3 gateway=\
    10.0.30.2
    add comment="Main link for VPN" distance=1 dst-address=10.0.40.1/32 gateway=\
    10.0.30.2
    add comment="Blackhole to 20.20.20.0/24" distance=220 dst-address=\
    192.168.20.0/24 type=blackhole
    /ip route rule
    add action=lookup-only-in-table src-address=10.0.10.2/32 table=ISP1_route
    add action=lookup-only-in-table src-address=10.0.20.2/32 table=ISP2_route
    add action=lookup-only-in-table src-address=10.0.30.2/32 table=main
    add action=lookup-only-in-table dst-address=192.168.20.0/24 table=main
    add action=lookup-only-in-table dst-address=192.168.10.0/24 table=main
    /routing bfd interface
    set [ find default=yes ] disabled=yes
    add interface=gre-tunnel-R1WAN1-R2 interval=0.1s min-rx=0.1s multiplier=7
    add interval=0.1s min-rx=0.1s multiplier=7
    add interface=gre-tunnel-R1WAN2-R2 interval=0.1s min-rx=0.1s multiplier=7
    add interval=0.1s min-rx=0.1s multiplier=7
    add interface=gre-tunnel-R1WAN3-R2 interval=0.1s min-rx=0.1s multiplier=7
    add interval=0.1s min-rx=0.1s multiplier=7
    /routing ospf interface
    add interface=bridge-ospf network-type=broadcast passive=yes
    add interface=ether4 network-type=broadcast passive=yes
    add cost=9 interface=gre-tunnel-R1WAN1-R2 network-type=point-to-point \
    use-bfd=yes
    add interface=gre-tunnel-R1WAN2-R2 network-type=point-to-point use-bfd=yes
    add cost=8 interface=gre-tunnel-R1WAN3-R2 network-type=point-to-point \
    use-bfd=yes
    /routing ospf network
    add area=area0 network=172.16.1.2/32
    add area=area0 network=172.16.2.2/32
    add area=area0 network=172.16.3.2/32
    add area=area0 network=192.168.10.0/24
    add area=area0 network=172.25.1.0/24
    /system clock
    set time-zone-name=Europe/Moscow
    /system identity
    set name=R1
     
  5. LMA

    LMA Участник

    R2 и Provider не уместились, но основная суть в конфигурации R1