Auteur Sujet: Dual WAN failover avec Edgerouteur : LAN avec priorités différentes  (Lu 2479 fois)

0 Membres et 1 Invité sur ce sujet

iMot3k

  • Abonné Orange Fibre
  • *
  • Messages: 23
Bonjour bonjour,
Je poste ce message car cela fait plusieurs jours que je m'arrache les cheveux là dessus, j'ai beaucoup de mal à faire fonctionner ça comme je l'entend.

Pour des raisons obscures, je dois utiliser un Edgerouter12 avec deux LANs différents et avec deux WAN (failover). La particularité : chaque LAN doit avoir un failover différent.

Concrètement j'ai une fibre et une connexion 4G, j'ai besoin que le premier lan nommé "data" passe normalement par la 4G et soit secouru par la Fibre, et j'ai besoin que mon lan "voix" passe normalement par la Fibre et soit secouru par la 4G  :o

Oui c'est assez spécial, et j'avoue que j'ai du mal. Vous aurez un schéma attaché à ce message pour mieux comprendre  ;D

Actuellement le routeur est configuré plutôt normalement : le failover marche correctement sur le switch voix (fibre en normal et est secouru par 4G), mais il marche de la même manière sur le switch data.

J'ai essayé de faire deux groupes d'interfaces (LB_data et LB_voix), et ces groupes ont respectivement les configurations :

LB_data:
     eth8 main
     eth9 failover

LB_voix:
    eth9 main
    eth8 failover

Mais pourtant les deux fonctionnent avec la configuration LB_voix, j'y comprend rien ¯\_(ツ)_/¯

Bref si l'un d'entre vous est chaud en Ubiquiti, faites-moi signe  ;)



Zweit

  • Abonné Free fibre
  • *
  • Messages: 238
  • Bieville-Beuville (14)
Dual WAN failover avec Edgerouteur : LAN avec priorités différentes
« Réponse #1 le: 11 avril 2022 à 19:44:43 »
Salut,

Tu as bien créé deux groupes de load-balance avec les deux tables de routage et deux PBR qui vont bien ? Poste ta config ici si tu veux qu'on y jette un œil.

Cf https://help.ui.com/hc/en-us/articles/205145990-EdgeRouter-WAN-Load-Balancing

iMot3k

  • Abonné Orange Fibre
  • *
  • Messages: 23
Dual WAN failover avec Edgerouteur : LAN avec priorités différentes
« Réponse #2 le: 12 avril 2022 à 19:08:58 »
Voici la config :) Merci pour l'aide

firewall {
    all-ping enable
    broadcast-ping disable
    group {
        network-group NG_Data {
            network 192.168.200.0/24
        }
        network-group NG_Voix {
            network 192.168.104.0/24
        }
        network-group PRIVATE_NETS {
            network 192.168.0.0/16
            network 172.16.0.0/12
            network 10.0.0.0/8
        }
    }
    ipv6-receive-redirects disable
    ipv6-src-route disable
    ip-src-route disable
    log-martians disable
    modify balance {
        rule 10 {
            action modify
            description "do NOT load balance lan to lan"
            destination {
                group {
                    network-group PRIVATE_NETS
                }
            }
            modify {
                table main
            }
        }
        rule 100 {
            action modify
            description "do NOT load balance destination public address"
            destination {
                group {
                    address-group ADDRv4_eth8
                }
            }
            modify {
                table main
            }
        }
        rule 110 {
            action modify
            description "do NOT load balance destination public address"
            destination {
                group {
                    address-group ADDRv4_eth9
                }
            }
            modify {
                table main
            }
        }
    }
    modify balance_data {
        rule 10 {
            action modify
            description "do NOT load balance lan to lan"
            modify {
                table main
            }
        }
        rule 100 {
            action modify
            description "do NOT load balance destination public address"
            modify {
                table main
            }
        }
        rule 110 {
            action modify
            description "do NOT load balance destination public address"
            modify {
                lb-group LB_Data
            }
        }
    }
    modify balance_voix {
        rule 10 {
            action modify
            description "do NOT load balance lan to lan"
            destination {
                group {
                    network-group PRIVATE_NETS
                }
            }
            modify {
                table main
            }
        }
        rule 100 {
            action modify
            description "do NOT load balance destination public address"
            destination {
                group {
                    network-group NG_Voix
                }
            }
            modify {
                table main
            }
        }
        rule 110 {
            action modify
            description "do NOT load balance destination public address"
            destination {
                group {
                }
            }
            modify {
                lb-group LB_Voix
            }
        }
    }
    name WAN_IN {
        default-action drop
        description "WAN to internal"
        rule 10 {
            action accept
            description "Allow established/related"
            state {
                established enable
                related enable
            }
        }
        rule 20 {
            action drop
            description "Drop invalid state"
            state {
                invalid enable
            }
        }
    }
    name WAN_LOCAL {
        default-action drop
        description "WAN to router"
        rule 10 {
            action accept
            description "Allow established/related"
            state {
                established enable
                related enable
            }
        }
        rule 20 {
            action drop
            description "Drop invalid state"
            state {
                invalid enable
            }
        }
    }
    receive-redirects disable
    send-redirects enable
    source-validation disable
    syn-cookies enable
}
interfaces {
    ethernet eth0 {
        duplex auto
        speed auto
    }
    ethernet eth1 {
        duplex auto
        speed auto
    }
    ethernet eth2 {
        duplex auto
        speed auto
    }
    ethernet eth3 {
        address 192.168.200.254/24
        duplex auto
        firewall {
            in {
                modify balance_data
            }
        }
        speed auto
    }
    ethernet eth4 {
        address 192.168.104.254/24
        duplex auto
        firewall {
            in {
                modify balance_voix
            }
        }
        speed auto
    }
    ethernet eth5 {
        duplex auto
        speed auto
    }
    ethernet eth6 {
        duplex auto
        speed auto
    }
    ethernet eth7 {
        duplex auto
        speed auto
    }
    ethernet eth8 {
        address dhcp
        description "WAN 2"
        duplex auto
        firewall {
            in {
                name WAN_IN
            }
            local {
                name WAN_LOCAL
            }
        }
        speed auto
    }
    ethernet eth9 {
        address dhcp
        description WAN
        duplex auto
        firewall {
            in {
                name WAN_IN
            }
            local {
                name WAN_LOCAL
            }
        }
        poe {
            output off
        }
        speed auto
    }
    ethernet eth10 {
        duplex auto
        speed auto
    }
    ethernet eth11 {
        duplex auto
        speed auto
    }
    switch switch0 {
        address 192.168.1.1/24
        description Local
        firewall {
            in {
                modify balance
            }
        }
        mtu 1500
        switch-port {
            interface eth0 {
            }
            interface eth1 {
            }
            interface eth2 {
            }
            interface eth5 {
            }
            interface eth6 {
            }
            interface eth7 {
            }
            vlan-aware disable
        }
    }
}
load-balance {
    group LB_Data {
        exclude-local-dns disable
        flush-on-active enable
        gateway-update-interval 20
        interface eth8 {
            route-test {
                initial-delay 1
                interval 5
                type {
                    ping {
                        target 1.1.1.1
                    }
                }
            }
            weight 100
        }
        interface eth9 {
            failover-only
            route-test {
                initial-delay 1
                interval 5
                type {
                    ping {
                        target 1.1.1.1
                    }
                }
            }
        }
        lb-local disable
        lb-local-metric-change disable
    }
    group LB_Voix {
        exclude-local-dns disable
        flush-on-active enable
        gateway-update-interval 20
        interface eth8 {
            failover-only
            route-test {
                initial-delay 1
                interval 5
                type {
                    ping {
                        target 1.1.1.1
                    }
                }
            }
        }
        interface eth9 {
            route-test {
                initial-delay 1
                interval 5
                type {
                    ping {
                        target 1.1.1.1
                    }
                }
            }
            weight 100
        }
        lb-local enable
        lb-local-metric-change disable
    }
}
protocols {
    static {
        route 0.0.0.0/0 {
            next-hop 192.168.10.254 {
                distance 1
            }
            next-hop 192.168.151.250 {
                distance 2
            }
        }
    }
}
service {
    dhcp-server {
        disabled false
        hostfile-update disable
        shared-network-name DATA {
            authoritative disable
            subnet 192.168.200.0/24 {
                default-router 192.168.200.254
                dns-server 8.8.8.8
                lease 86400
                start 192.168.200.10 {
                    stop 192.168.200.240
                }
            }
        }
        shared-network-name LAN {
            authoritative enable
            subnet 192.168.1.0/24 {
                default-router 192.168.1.1
                dns-server 192.168.1.1
                lease 86400
                start 192.168.1.38 {
                    stop 192.168.1.243
                }
            }
        }
        shared-network-name VOIX {
            authoritative disable
            subnet 192.168.104.0/24 {
                default-router 192.168.104.254
                dns-server 8.8.8.8
                lease 86400
                start 192.168.104.10 {
                    stop 192.168.104.240
                }
            }
        }
        static-arp disable
        use-dnsmasq disable
    }
    dns {
        forwarding {
            cache-size 10000
            listen-on switch0
        }
    }
    gui {
        http-port 80
        https-port 443
        older-ciphers enable
    }
    nat {
        rule 5016 {
            description "masquerade for WAN 2"
            outbound-interface eth8
            type masquerade
        }
        rule 5018 {
            description "masquerade for WAN"
            outbound-interface eth9
            type masquerade
        }
    }
    ssh {
        port 22
        protocol-version v2
    }
    unms {
    }
}
system {
    analytics-handler {
        send-analytics-report false
    }
    conntrack {
        expect-table-size 4096
        hash-size 4096
        table-size 32768
        tcp {
            half-open-connections 512
            loose enable
            max-retrans 3
        }
    }
    crash-handler {
        send-crash-report false
    }
    host-name EdgeRouter-12
    login {
        user ubnt {
            authentication {
                encrypted-password lolnope
            }
            level admin
        }
    }
    ntp {
        server 0.ubnt.pool.ntp.org {
        }
        server 1.ubnt.pool.ntp.org {
        }
        server 2.ubnt.pool.ntp.org {
        }
        server 3.ubnt.pool.ntp.org {
        }
    }
    syslog {
        global {
            facility all {
                level notice
            }
            facility protocols {
                level debug
            }
        }
    }
    time-zone UTC
}


/* Warning: Do not remove the following line. */
/* === vyatta-config-version: "config-management@1:conntrack@1:cron@1:dhcp-relay@1:dhcp-server@4:firewall@5:ipsec@5:nat@3:qos@1:quagga@2:suspend@1:system@5:ubnt-l2tp@1:ubnt-pptp@1:ubnt-udapi-server@1:ubnt-unms@2:ubnt-util@1:vrrp@1:vyatta-netflow@1:webgui@1:webproxy@1:zone-policy@1" === */
/* Release version: v2.0.9-hotfix.1.5371035.210122.1015 */

Zweit

  • Abonné Free fibre
  • *
  • Messages: 238
  • Bieville-Beuville (14)
Dual WAN failover avec Edgerouteur : LAN avec priorités différentes
« Réponse #3 le: 12 avril 2022 à 20:27:15 »
Effectivement, ça ne peut pas marcher avec cette config :

modify balance_data {
        rule 10 {
            action modify
            description "do NOT load balance lan to lan"
            modify {
                table main
            }
        }

Là, tu indiques que ce qui passe par le groupe de load-balancing "balance_data" doit être envoyé à la table de routage principale. Une fois ça lu, le firewall s'arrête et donc ce qui suit n'est pas exécuté.
Note que la règle 100 est identique ! Il manque une destination dans ces deux règles pour que ce soit fonctionnel ;)

modify balance {
        rule 10 {
            action modify
            description "do NOT load balance lan to lan"
            destination {
                group {
                    network-group PRIVATE_NETS
                }
            }
            modify {
                table main
            }
        }
        rule 100 {
            action modify
            description "do NOT load balance destination public address"
            destination {
                group {
                    address-group ADDRv4_eth8
                }
            }
            modify {
                table main
            }
        }
        rule 110 {
            action modify
            description "do NOT load balance destination public address"
            destination {
                group {
                    address-group ADDRv4_eth9
                }
            }
            modify {
                table main
            }
        }
    }
    modify balance_data {
        rule 10 {
            action modify
            description "do NOT load balance lan to lan"
            modify {
                table main
            }
        }
        rule 100 {
            action modify
            description "do NOT load balance destination public address"
            modify {
                table main
            }
        }
        rule 110 {
            action modify
            description "do NOT load balance destination public address"
            modify {
                lb-group LB_Data
            }
        }
    }

Je ne comprends pas l'intérêt de cette règle qui, affectée à switch0, ne fait au final rien du tout à part tout rediriger vers la table de routage main, ce qui déjà le cas par défaut ? Un reste de copier/coller du tuto Ubiquiti lors d'un précédent test ?


Niveau table de routage :

protocols {
    static {
        route 0.0.0.0/0 {
            next-hop 192.168.10.254 {
                distance 1
            }
            next-hop 192.168.151.250 {
                distance 2
            }
        }
    }
}

Les deux routes étant déclarées statiques, le hop 192.168.151.250 ne sera jamais déclenché, même sans connectivité.


Du coup, j'effacerai tes groupes de load-balancing et tes routes statiques pour les remplacer comme suit (non testé, je tape ça comme ça me vient à l'esprit) :

# On met la route par défaut de tout ce qui ne sera pas balancé dans la table main
set protocols static route 0.0.0.0/0 next-hop 192.168.10.254



set firewall modify balance_data rule 10 description "On ne balance pas les adresses privées"
set firewall modify balance_data rule 10 action modify
set firewall modify balance_data rule 10 destination group network-group PRIVATE_NETS
set firewall modify balance_data rule 10 modify table main

# Inutile de mettre des règles concernant les IP de eth8 et eth9, elles sont dans le range 192.168.0.0/16, donc dans PRIVATE_NETS

set firewall modify balance_data rule 100 action modify
set firewall modify balance_data rule 100 modify lb-group LB_Data

# On active le load-balancing Data sur eth3
set interfaces ethernet eth3 firewall in modify balance_data



set firewall modify balance_voix rule 10 description "On ne balance pas les adresses privées"
set firewall modify balance_voix rule 10 action modify
set firewall modify balance_voix rule 10 destination group network-group PRIVATE_NETS
set firewall modify balance_voix rule 10 modify table main

# Inutile de mettre des règles concernant les IP de eth8 et eth9, elles sont dans le range 192.168.0.0/16, donc dans PRIVATE_NETS

set firewall modify balance_voix rule 100 action modify
set firewall modify balance_voix rule 100 modify lb-group LB_Data


# On active le load-balancing Voix sur eth4
set interfaces ethernet eth4 firewall in modify balance_voix



commit
save

Et une fois sorti du mode de configuration, vérifier les routes comme suit :

# On liste les tables créées par le système de load-balancing. Elles ont un nom > 200
ip route show table all | grep -Po 'table \K[^\s]+' | sort -u

# Puis on affiche les routes une à une
show ip route table [Le numéro ici]