La Fibre

Datacenter et équipements réseaux => Routeurs => Orange fibre Remplacer la LiveBox par un routeur => Discussion démarrée par: fl0w le 12 octobre 2019 à 15:20:54

Titre: Template config ER-X firmware 2.X Dual WAN Failover (FTTH Orange + FTTB SFR)
Posté par: fl0w le 12 octobre 2019 à 15:20:54
Bonjour,

Je partage ma configuration d'un EdgeRouter X (v2.0.8-hotfix.1) en fonctionnement double WAN failover avec une connexion FTTH Orange (sans Livebox) et une connexion FTTB RED/SFR (avec modem en mode bridge):
firewall {
    all-ping enable
    broadcast-ping disable
    group {
        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 enable
    modify FAILOVER {
        rule 10 {
            action modify
            destination {
                group {
                    network-group PRIVATE_NETS
                }
            }
            modify {
                table main
            }
        }
        rule 20 {
            action modify
            destination {
                group {
                    address-group ADDRv4_eth1.832
                }
            }
            modify {
                table main
            }
        }
        rule 30 {
            action modify
            destination {
                group {
                    address-group ADDRv4_eth2
                }
            }
            modify {
                table main
            }
        }
        rule 110 {
            action modify
            modify {
                lb-group WAN_FAILOVER
            }
        }
    }
    name WAN_IN {
        default-action drop
        description "WAN to internal"
        rule 10 {
            action accept
            description "Allow established/related"
            log disable
            protocol all
            state {
                established enable
                invalid disable
                new disable
                related enable
            }
        }
        rule 20 {
            action drop
            description "Drop invalid state"
            log disable
            protocol all
            state {
                established disable
                invalid enable
                new disable
                related disable
            }
        }
        rule 30 {
            action accept
            description Exemple
            destination {
                address 192.168.0.2
                port 443
            }
            log disable
            protocol tcp
        }
    }
    name WAN_LOCAL {
        default-action drop
        description "WAN to router"
        rule 20 {
            action accept
            description "Allow established/related"
            state {
                established enable
                related enable
            }
        }
        rule 50 {
            action drop
            description "Drop invalid state"
            log disable
            state {
                invalid enable
            }
        }
    }
    name WAN_OUT {
        default-action accept
        description ""
    }
    receive-redirects disable
    send-redirects enable
    source-validation disable
    syn-cookies enable
}
interfaces {
    ethernet eth0 {
        duplex auto
        speed auto
    }
    ethernet eth1 {
        description ORANGE
        duplex auto
        speed auto
        vif 832 {
            address dhcp
            description ORANGE_DATA
            dhcp-options {
                client-option "send vendor-class-identifier "sagem";"
                client-option "send user-class "\053FSVDSL_livebox.Internet.softathome.Livebox4";"
                client-option "send rfc3118-auth 00:00:00:00:00:00:00:00:00:00:00:1a:09:00:00:05:58:01:03:41:01:0d:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx;"
                client-option "request subnet-mask, routers, domain-name-servers, domain-name, broadcast-address, dhcp-lease-time, dhcp-renewal-time, dhcp-rebinding-time, rfc3118-auth;"
                default-route update
                default-route-distance 210
                global-option "option rfc3118-auth code 90 = string;"
                name-server update
            }
            egress-qos "0:0 1:0 2:0 3:0 4:0 5:0 6:6 7:0"
            firewall {
                in {
                    name WAN_IN
                }
                local {
                    name WAN_LOCAL
                }
                out {
                    name WAN_OUT
                }
            }
        }
    }
    ethernet eth2 {
        address dhcp
        description SFR
        duplex auto
        firewall {
            in {
                name WAN_IN
            }
            local {
                name WAN_LOCAL
            }
            out {
                name WAN_OUT
            }
        }
        speed auto
    }
    ethernet eth3 {
        duplex auto
        speed auto
    }
    ethernet eth4 {
        duplex auto
        poe {
            output off
        }
        speed auto
    }
    loopback lo {
    }
    switch switch0 {
        address 192.168.0.1/24
        description LAN
        firewall {
            in {
                modify FAILOVER
            }
        }
        mtu 1500
        switch-port {
            interface eth0 {
            }
            interface eth3 {
            }
            interface eth4 {
            }
            vlan-aware disable
        }
    }
}
load-balance {
    group WAN_FAILOVER {
        exclude-local-dns disable
        flush-on-active enable
        gateway-update-interval 20
        interface eth1.832 {
            route-test {
                count {
                    failure 5
                    success 3
                }
                initial-delay 30
                interval 10
                type {
                    ping {
                        target <mettre la passerelle de la connexion>
                    }
                }
            }
            weight 60
        }
        interface eth2 {
            failover-only
            route-test {
                count {
                    failure 5
                    success 3
                }
                initial-delay 30
                interval 10
                type {
                    ping {
                        target <mettre la passerelle de la connexion>
                    }
                }
            }
            weight 40
        }
        lb-local disable
        lb-local-metric-change enable
        transition-script /config/scripts/wan-transition
    }
}
port-forward {
    auto-firewall enable
    hairpin-nat enable
    lan-interface switch0
    wan-interface eth1.832
}
protocols {
    static {
    }
}
service {
    dhcp-server {
        disabled false
        hostfile-update disable
        shared-network-name LAN {
            authoritative disable
            subnet 192.168.0.0/24 {
                default-router 192.168.0.1
                dns-server 192.168.0.2
                lease 86400
                start 192.168.0.100 {
                    stop 192.168.0.199
                }
            }
        }
        static-arp disable
        use-dnsmasq disable
    }
    dns {
        dynamic {
            interface eth1.832 {
                service dyndns {
                    host-name orange.domain.tld
                    login <login>
                    password ****************
                    server <dyndns.org>
                }
                web dyndns
            }
            interface eth2 {
                service dyndns {
                    host-name sfr.domain.tld
                    login <login>
                    password ****************
                    server <dyndns.org>
                }
            }
        }
    }
    gui {
        http-port 80
        https-port 443
        listen-address 192.168.0.1
        older-ciphers disable
    }
    nat {
        rule 1 {
            description Exemple_Orange
            destination {
                group {
                    address-group ADDRv4_eth1.832
                }
                port 443
            }
            inbound-interface eth1.832
            inside-address {
                address 192.168.0.2
                port 443
            }
            log disable
            protocol tcp
            source {
            }
            type destination
        }
        rule 2 {
            description Exemple_SFR
            destination {
                group {
                    address-group ADDRv4_eth2
                }
                port 443
            }
            inbound-interface eth2
            inside-address {
                address 192.168.0.2
                port 443
            }
            log disable
            protocol tcp
            source {
            }
            type destination
        }
        rule 5001 {
            description "MASQ: WAN_ORANGE"
            log disable
            outbound-interface eth1.832
            protocol all
            type masquerade
        }
        rule 5003 {
            description "MASQ: WAN_SFR"
            log disable
            outbound-interface eth2
            protocol all
            type masquerade
        }
    }
    ssh {
        listen-address 192.168.0.1
        port 22
        protocol-version v2
    }
    unms {
        disable
    }
}
system {
    conntrack {
        expect-table-size 4096
        hash-size 4096
        table-size 32768
        tcp {
            half-open-connections 512
            loose disable
            max-retrans 3
        }
    }
    host-name ubnt
    }
    name-server 192.168.0.2
    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 {
        }
    }
    offload {
        hwnat enable
        ipsec enable
    }
    syslog {
        global {
            facility all {
                level notice
            }
            facility protocols {
                level warning
            }
        }
    }
    time-zone Europe/Paris
}
J'ai laissé un exemple de NAT (les règles doivent être doublées, une par interface WAN) et filtrage pare-feu pour le SSH, ainsi que la configuration DynDNS (un sous-domaine par connexion, pour un domaine dont la résolution bascule automatiquement, voir le script wan-transition). La bascule se fait en moins de 10 secondes, idem pour le retour sur le lien primaire, l'IP en DynDNS est bien mise à jour en même temps.
Pour info:
switch0: LAN (eth0, eth3, eth4)
eth1: WAN Orange
eth2: WAN SFR

Je me suis basé sur la conf de zoc (merci à lui). N'hésitez pas si vous avez des soucis au moment de tester cette conf.

Ci-joint le binaire dhclient3 pour ER-X sous firmware 2.x, à placer dans /sbin et lancer un "chmod a+x dhclient3" (droits d'exécution pour tous) et "chown root:root dhclient3" (root doit en être propritétaire).

Et le script /config/scripts/wan-transition qui me sert pour des notifications de bascule de lien:
#!/bin/bash                                                                                                                                                   
                                                                                                                                                               
GROUP=$1                                                                                                                                                       
INTF=$2                                                                                                                                                       
STATUS=$3                                                                                                                                                     
                                                                                                                                                               
MYLOG="/var/log/wan-transition.log"                                                                                                                                           
TS=$(date +"%Y%m%d-%T")                                                                                                                                       
                                                                                                                                                               
run=/opt/vyatta/bin/vyatta-op-cmd-wrapper                                                                                                                     
INTFDSCR=$($run show interfaces | grep $INTF | awk '{print $4}')                                                                                               
                                                                                                                                                               
#/usr/sbin/conntrack -F                                                                                                                                         
#/usr/sbin/ubnt-add-connected.pl                                                                     

case "$STATUS" in
  active)
    msg="$TS: Internet connection $GROUP:$INTF:$INTFDSCR is active."   
    /config/scripts/dynhost 2>&1 | logger &
    /config/scripts/gotify "Router $(hostname) WAN fail-over event" "$msg" &
    ;;
  inactive)
    msg="$TS: Internet connection $GROUP:$INTF:$INTFDSCR is inactive."
    ;;
  failover)
    msg="$TS: Internet connection $GROUP:$INTF:$INTFDSCR is failover."   
    ;;
  *)
    msg="$TS: Oh crap, $GROUP:$INTF:$INTFDSCR going [$STATUS]"
    ;;
esac

echo $msg >> $MYLOG
logger $msg
exit 0

Le script /config/scripts/gotify qui est utilisé (je recommande Gotify si vous voulez envoyer des notifications vers un smartphone sans avoir de limites comme c'est le cas avec Pushbullet et cie):
#!/bin/bash

APP_TOKEN=<token>

sleep 10

curl "http://gotify.domain.tld/message?token=$APP_TOKEN" \
-F "title=$1" \
-F "message=$2" \
-F "priority=5"

Et le script de mise à jour d'entrée DNS (dans mon cas j'utilise DynHost de OVH):
#!/bin/sh
SCRIPT_PATH='/config/scripts'
NSSERVER='8.8.8.8'
HOST='domain.tld'
LOGIN='login'
PASSWORD='password'
ENTRYPOINT='https://www.ovh.com/nic/update'

getip() {
    IP=`curl -s http://ifconfig.me/ip`
    OLDIP=`dig +short $HOST @$NSSERVER`
}

getip

if [ "$IP" ]; then
    echo "[`date '+%Y-%m-%d %H:%M:%S'`] Old IP is ${OLDIP}"
    echo "[`date '+%Y-%m-%d %H:%M:%S'`] New IP is ${IP}"

    if [ "$OLDIP" != "$IP" ]; then
        echo "[`date '+%Y-%m-%d %H:%M:%S'`] Update is needed…"
        curl -s -S -u "${LOGIN}:${PASSWORD}" "${ENTRYPOINT}?system=dyndns&hostname=${HOST}&myip=${IP}" 2>&1 1> /dev/null
    else
        echo "[`date '+%Y-%m-%d %H:%M:%S'`] No update required."
    fi
 else
    echo "[`date '+%Y-%m-%d %H:%M:%S'`] WAN IP not found. Exiting!"
 fi
Titre: Template config EdgeRouter Dual WAN Failover (FTTH Orange + FTTB SFR)
Posté par: r4v3n_10rd le 12 novembre 2019 à 10:59:31
Merci très utile ! J'ai actuellement une configuration similaire avec le edge light mais a quoi sert le failover ? Peut-on choisir la sortie sur le wan de chaque appareil ?
Titre: Template config EdgeRouter Dual WAN Failover (FTTH Orange + FTTB SFR)
Posté par: doctorrock le 12 novembre 2019 à 11:44:17
Pour info j'ai fait la même sur Mikrotik avec Orange et SFR. Je peux partager la config si besoin ^^
Titre: Template config EdgeRouter Dual WAN Failover (FTTH Orange + FTTB SFR)
Posté par: fl0w le 12 novembre 2019 à 12:19:29
Merci très utile ! J'ai actuellement une configuration similaire avec le edge light mais a quoi sert le failover ? Peut-on choisir la sortie sur le wan de chaque appareil ?
Bascule auto en cas de perte du lien primaire ;)
Titre: Template config EdgeRouter Dual WAN Failover (FTTH Orange + FTTB SFR)
Posté par: r4v3n_10rd le 12 novembre 2019 à 17:03:05
Du coup c'est un debit alterné ?
Titre: Template config EdgeRouter Dual WAN Failover (FTTH Orange + FTTB SFR)
Posté par: fl0w le 12 novembre 2019 à 17:04:15
Oui c'est l'un ou l'autre, d'où l'option failover-only
Titre: Template config ER-X firmware 2.X Dual WAN Failover (FTTH Orange + FTTB SFR)
Posté par: fl0w le 10 mai 2020 à 10:50:32
J'ai mis à jour le post, la conf est compatible avec les firmwares 2.x, il faudra utiliser le dhclient3 que j'ai mis en pièce jointe.
Edit: Pour l'instant j'ai un souci de load-balancing, j'ai ouvert une discussion chez UBNT: https://community.ui.com/questions/Failover-load-balancing-not-working-on-ER-X-firmware-2-x/c9bd1d0d-d653-44b5-955c-c19d1f36d22f
Titre: Template config ER-X firmware 2.X Dual WAN Failover (FTTH Orange + FTTB SFR)
Posté par: fl0w le 10 mai 2020 à 19:46:46
C'est bon ça marche!
Titre: Template config ER-X firmware 2.X Dual WAN Failover (FTTH Orange + FTTB SFR)
Posté par: fl0w le 05 juin 2020 à 22:01:41
Petite mise à jour, j'ai ajouté un script appelé par wan-transition pour mettre à jour une entrée DynDNS.
J'ai également fait évoluer ma config pour avoir un serveur Wireguard, lui-même load balancé et le temps de coupure est inférieur à 1 seconde :) Si jamais quelqu'un veut la conf je peux la communiquer.
Titre: Template config ER-X firmware 2.X Dual WAN Failover (FTTH Orange + FTTB SFR)
Posté par: benoitc le 14 juillet 2020 à 20:36:28
comment as tu compilé dhcp3c ? J'ai un ER12 donc du mips64 et j'aurais aimé compiler dessus.

Bonjour,

Je partage ma configuration d'un EdgeRouter X (v2.0.8-hotfix.1) en fonctionnement double WAN failover avec une connexion FTTH Orange (sans Livebox) et une connexion FTTB RED/SFR (avec modem en mode bridge):
firewall {
    all-ping enable
    broadcast-ping disable
    group {
        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 enable
    modify FAILOVER {
        rule 10 {
            action modify
            destination {
                group {
                    network-group PRIVATE_NETS
                }
            }
            modify {
                table main
            }
        }
        rule 20 {
            action modify
            destination {
                group {
                    address-group ADDRv4_eth1.832
                }
            }
            modify {
                table main
            }
        }
        rule 30 {
            action modify
            destination {
                group {
                    address-group ADDRv4_eth2
                }
            }
            modify {
                table main
            }
        }
        rule 110 {
            action modify
            modify {
                lb-group WAN_FAILOVER
            }
        }
    }
    name WAN_IN {
        default-action drop
        description "WAN to internal"
        rule 10 {
            action accept
            description "Allow established/related"
            log disable
            protocol all
            state {
                established enable
                invalid disable
                new disable
                related enable
            }
        }
        rule 20 {
            action drop
            description "Drop invalid state"
            log disable
            protocol all
            state {
                established disable
                invalid enable
                new disable
                related disable
            }
        }
        rule 30 {
            action accept
            description Exemple
            destination {
                address 192.168.0.2
                port 443
            }
            log disable
            protocol tcp
        }
    }
    name WAN_LOCAL {
        default-action drop
        description "WAN to router"
        rule 20 {
            action accept
            description "Allow established/related"
            state {
                established enable
                related enable
            }
        }
        rule 50 {
            action drop
            description "Drop invalid state"
            log disable
            state {
                invalid enable
            }
        }
    }
    name WAN_OUT {
        default-action accept
        description ""
    }
    receive-redirects disable
    send-redirects enable
    source-validation disable
    syn-cookies enable
}
interfaces {
    ethernet eth0 {
        duplex auto
        speed auto
    }
    ethernet eth1 {
        description ORANGE
        duplex auto
        speed auto
        vif 832 {
            address dhcp
            description ORANGE_DATA
            dhcp-options {
                client-option "send vendor-class-identifier &quot;sagem&quot;;"
                client-option "send user-class &quot;\053FSVDSL_livebox.Internet.softathome.Livebox4&quot;;"
                client-option "send rfc3118-auth 00:00:00:00:00:00:00:00:00:00:00:1a:09:00:00:05:58:01:03:41:01:0d:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx;"
                client-option "request subnet-mask, routers, domain-name-servers, domain-name, broadcast-address, dhcp-lease-time, dhcp-renewal-time, dhcp-rebinding-time, rfc3118-auth;"
                default-route update
                default-route-distance 210
                global-option "option rfc3118-auth code 90 = string;"
                name-server update
            }
            egress-qos "0:0 1:0 2:0 3:0 4:0 5:0 6:6 7:0"
            firewall {
                in {
                    name WAN_IN
                }
                local {
                    name WAN_LOCAL
                }
                out {
                    name WAN_OUT
                }
            }
        }
    }
    ethernet eth2 {
        address dhcp
        description SFR
        duplex auto
        firewall {
            in {
                name WAN_IN
            }
            local {
                name WAN_LOCAL
            }
            out {
                name WAN_OUT
            }
        }
        speed auto
    }
    ethernet eth3 {
        duplex auto
        speed auto
    }
    ethernet eth4 {
        duplex auto
        poe {
            output off
        }
        speed auto
    }
    loopback lo {
    }
    switch switch0 {
        address 192.168.0.1/24
        description LAN
        firewall {
            in {
                modify FAILOVER
            }
        }
        mtu 1500
        switch-port {
            interface eth0 {
            }
            interface eth3 {
            }
            interface eth4 {
            }
            vlan-aware disable
        }
    }
}
load-balance {
    group WAN_FAILOVER {
        exclude-local-dns disable
        flush-on-active enable
        gateway-update-interval 20
        interface eth1.832 {
            route-test {
                count {
                    failure 5
                    success 3
                }
                initial-delay 30
                interval 10
                type {
                    ping {
                        target <mettre la passerelle de la connexion>
                    }
                }
            }
            weight 60
        }
        interface eth2 {
            failover-only
            route-test {
                count {
                    failure 5
                    success 3
                }
                initial-delay 30
                interval 10
                type {
                    ping {
                        target <mettre la passerelle de la connexion>
                    }
                }
            }
            weight 40
        }
        lb-local disable
        lb-local-metric-change enable
        transition-script /config/scripts/wan-transition
    }
}
port-forward {
    auto-firewall enable
    hairpin-nat enable
    lan-interface switch0
    wan-interface eth1.832
}
protocols {
    static {
    }
}
service {
    dhcp-server {
        disabled false
        hostfile-update disable
        shared-network-name LAN {
            authoritative disable
            subnet 192.168.0.0/24 {
                default-router 192.168.0.1
                dns-server 192.168.0.2
                lease 86400
                start 192.168.0.100 {
                    stop 192.168.0.199
                }
            }
        }
        static-arp disable
        use-dnsmasq disable
    }
    dns {
        dynamic {
            interface eth1.832 {
                service dyndns {
                    host-name orange.domain.tld
                    login <login>
                    password ****************
                    server <dyndns.org>
                }
                web dyndns
            }
            interface eth2 {
                service dyndns {
                    host-name sfr.domain.tld
                    login <login>
                    password ****************
                    server <dyndns.org>
                }
            }
        }
    }
    gui {
        http-port 80
        https-port 443
        listen-address 192.168.0.1
        older-ciphers disable
    }
    nat {
        rule 1 {
            description Exemple_Orange
            destination {
                group {
                    address-group ADDRv4_eth1.832
                }
                port 443
            }
            inbound-interface eth1.832
            inside-address {
                address 192.168.0.2
                port 443
            }
            log disable
            protocol tcp
            source {
            }
            type destination
        }
        rule 2 {
            description Exemple_SFR
            destination {
                group {
                    address-group ADDRv4_eth2
                }
                port 443
            }
            inbound-interface eth2
            inside-address {
                address 192.168.0.2
                port 443
            }
            log disable
            protocol tcp
            source {
            }
            type destination
        }
        rule 5001 {
            description "MASQ: WAN_ORANGE"
            log disable
            outbound-interface eth1.832
            protocol all
            type masquerade
        }
        rule 5003 {
            description "MASQ: WAN_SFR"
            log disable
            outbound-interface eth2
            protocol all
            type masquerade
        }
    }
    ssh {
        listen-address 192.168.0.1
        port 22
        protocol-version v2
    }
    unms {
        disable
    }
}
system {
    conntrack {
        expect-table-size 4096
        hash-size 4096
        table-size 32768
        tcp {
            half-open-connections 512
            loose disable
            max-retrans 3
        }
    }
    host-name ubnt
    }
    name-server 192.168.0.2
    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 {
        }
    }
    offload {
        hwnat enable
        ipsec enable
    }
    syslog {
        global {
            facility all {
                level notice
            }
            facility protocols {
                level warning
            }
        }
    }
    time-zone Europe/Paris
}
J'ai laissé un exemple de NAT (les règles doivent être doublées, une par interface WAN) et filtrage pare-feu pour le SSH, ainsi que la configuration DynDNS (un sous-domaine par connexion, pour un domaine dont la résolution bascule automatiquement, voir le script wan-transition). La bascule se fait en moins de 10 secondes, idem pour le retour sur le lien primaire, l'IP en DynDNS est bien mise à jour en même temps.
Pour info:
switch0: LAN (eth0, eth3, eth4)
eth1: WAN Orange
eth2: WAN SFR

Je me suis basé sur la conf de zoc (merci à lui). N'hésitez pas si vous avez des soucis au moment de tester cette conf.

Ci-joint le binaire dhclient3 pour ER-X sous firmware 2.x, à placer dans /sbin et lancer un "chmod a+x dhclient3" (droits d'exécution pour tous) et "chown root:root dhclient3" (root doit en être propritétaire).

Et le script /config/scripts/wan-transition qui me sert pour des notifications de bascule de lien:
#!/bin/bash                                                                                                                                                   
                                                                                                                                                               
GROUP=$1                                                                                                                                                       
INTF=$2                                                                                                                                                       
STATUS=$3                                                                                                                                                     
                                                                                                                                                               
MYLOG="/var/log/wan-transition.log"                                                                                                                                           
TS=$(date +"%Y%m%d-%T")                                                                                                                                       
                                                                                                                                                               
run=/opt/vyatta/bin/vyatta-op-cmd-wrapper                                                                                                                     
INTFDSCR=$($run show interfaces | grep $INTF | awk '{print $4}')                                                                                               
                                                                                                                                                               
#/usr/sbin/conntrack -F                                                                                                                                         
#/usr/sbin/ubnt-add-connected.pl                                                                     

case "$STATUS" in
  active)
    msg="$TS: Internet connection $GROUP:$INTF:$INTFDSCR is active."   
    /config/scripts/dynhost 2>&1 | logger &
    /config/scripts/gotify "Router $(hostname) WAN fail-over event" "$msg" &
    ;;
  inactive)
    msg="$TS: Internet connection $GROUP:$INTF:$INTFDSCR is inactive."
    ;;
  failover)
    msg="$TS: Internet connection $GROUP:$INTF:$INTFDSCR is failover."   
    ;;
  *)
    msg="$TS: Oh crap, $GROUP:$INTF:$INTFDSCR going [$STATUS]"
    ;;
esac

echo $msg >> $MYLOG
logger $msg
exit 0

Le script /config/scripts/gotify qui est utilisé (je recommande Gotify si vous voulez envoyer des notifications vers un smartphone sans avoir de limites comme c'est le cas avec Pushbullet et cie):
#!/bin/bash

APP_TOKEN=<token>

sleep 10

curl "http://gotify.domain.tld/message?token=$APP_TOKEN" \
-F "title=$1" \
-F "message=$2" \
-F "priority=5"

Et le script de mise à jour d'entrée DNS (dans mon cas j'utilise DynHost de OVH):
#!/bin/sh
SCRIPT_PATH='/config/scripts'
NSSERVER='8.8.8.8'
HOST='domain.tld'
LOGIN='login'
PASSWORD='password'
ENTRYPOINT='https://www.ovh.com/nic/update'

getip() {
    IP=`curl -s http://ifconfig.me/ip`
    OLDIP=`dig +short $HOST @$NSSERVER`
}

getip

if [ "$IP" ]; then
    echo "[`date '+%Y-%m-%d %H:%M:%S'`] Old IP is ${OLDIP}"
    echo "[`date '+%Y-%m-%d %H:%M:%S'`] New IP is ${IP}"

    if [ "$OLDIP" != "$IP" ]; then
        echo "[`date '+%Y-%m-%d %H:%M:%S'`] Update is needed…"
        curl -s -S -u "${LOGIN}:${PASSWORD}" "${ENTRYPOINT}?system=dyndns&hostname=${HOST}&myip=${IP}" 2>&1 1> /dev/null
    else
        echo "[`date '+%Y-%m-%d %H:%M:%S'`] No update required."
    fi
 else
    echo "[`date '+%Y-%m-%d %H:%M:%S'`] WAN IP not found. Exiting!"
 fi
Titre: Template config ER-X firmware 2.X Dual WAN Failover (FTTH Orange + FTTB SFR)
Posté par: zoc le 14 juillet 2020 à 21:11:48
Attention, Sur les routeurs Ubiquiti à base de processeur mips64 en big endian, seul le noyau est en 64 bits, toutes les applications sont compilées en 32 bits (architecture mips donc). La raison à cela est que EdgeOS est basé sur Debian et que Debian à arrêté le support de l’architecture mips64.

Il est sans doute possible de compiler pour mips64 en compilant gcc et les autres outils de développement, ainsi que la libc pour l’architecture mips64, mais ça veut dire installer la version 64 bits de plein de librairies sur le routeur ou alors tout compiler en statique.

Pour compiler pour mon ER4 (même processeur que l’ER12), perso je fais de la cross compilation sur un Linux Ubuntu en utilisant sbuild / schroot (c’est un peu compliqué à mettre en place quand on débute mais après tout roule) pour l’architecture mips (32 bits donc). Je m’étais  basé sur un tuto expliquant comment cross compiler pour raspbian ( https://i2p.rocks/blog/building-sbuild-environment-for-cross-building-raspbian-packages-on-amd64i386-machines.html ) que j’ai adapté pour wheezy (firmwares 1.10.x) et stretch (firmwares 2.0.x) pour l’architecture mips.
Titre: Template config ER-X firmware 2.X Dual WAN Failover (FTTH Orange + FTTB SFR)
Posté par: benoitc le 14 juillet 2020 à 21:12:39
autre question, il n'est possible de regler la CoS 6 sur les paquets DHCP sans modifier dhcpc3 ?
Titre: Template config ER-X firmware 2.X Dual WAN Failover (FTTH Orange + FTTB SFR)
Posté par: fl0w le 14 juillet 2020 à 21:13:30
J'allais répondre mais zoc a déjà répondu :D
Titre: Template config ER-X firmware 2.X Dual WAN Failover (FTTH Orange + FTTB SFR)
Posté par: zoc le 14 juillet 2020 à 21:14:41
Sans un switch entre l’ont et le routeur non, pas moyen, en tout cas pour IPv4. (Me serait pas fait chier à patcher dhclient sinon...).
Titre: Template config ER-X firmware 2.X Dual WAN Failover (FTTH Orange + FTTB SFR)
Posté par: benoitc le 14 juillet 2020 à 21:21:40
Sans un switch entre l’ont et le routeur non, pas moyen, en tout cas pour IPv4. (Me serait pas fait chier à patcher dhclient sinon...).
Oui je me doutais bien, c'etait histoire de confirmer... C'est un peu dommage, j'en resterais presque en PPOE pour IPv4 ..
Titre: Template config ER-X firmware 2.X Dual WAN Failover (FTTH Orange + FTTB SFR)
Posté par: benoitc le 14 juillet 2020 à 23:03:34
Attention, Sur les routeurs Ubiquiti à base de processeur mips64 en big endian, seul le noyau est en 64 bits, toutes les applications sont compilées en 32 bits (architecture mips donc). La raison à cela est que EdgeOS est basé sur Debian et que Debian à arrêté le support de l’architecture mips64.

Il est sans doute possible de compiler pour mips64 en compilant gcc et les autres outils de développement, ainsi que la libc pour l’architecture mips64, mais ça veut dire installer la version 64 bits de plein de librairies sur le routeur ou alors tout compiler en statique.

Pour compiler pour mon ER4 (même processeur que l’ER12), perso je fais de la cross compilation sur un Linux Ubuntu en utilisant sbuild / schroot (c’est un peu compliqué à mettre en place quand on débute mais après tout roule) pour l’architecture mips (32 bits donc). Je m’étais  basé sur un tuto expliquant comment cross compiler pour raspbian ( https://i2p.rocks/blog/building-sbuild-environment-for-cross-building-raspbian-packages-on-amd64i386-machines.html ) que j’ai adapté pour wheezy (firmwares 1.10.x) et stretch (firmwares 2.0.x) pour l’architecture mips.

j'ai trouvé dockcross (https://github.com/dockcross/dockcross) qui peut peut-être simplifier le build. Tu appliques le patch sur quel sources ? le paquet de vyatta-dhcp3-client?
Titre: Template config ER-X firmware 2.X Dual WAN Failover (FTTH Orange + FTTB SFR)
Posté par: zoc le 15 juillet 2020 à 06:18:01
Oui.
Titre: Template config ER-X firmware 2.X Dual WAN Failover (FTTH Orange + FTTB SFR)
Posté par: benoitc le 26 juillet 2020 à 11:27:09
Oui.

hrm pas sur de savoir où trouver la dernière version... Il y aun repo ?
Titre: Template config ER-X firmware 2.X Dual WAN Failover (FTTH Orange + FTTB SFR)
Posté par: zoc le 26 juillet 2020 à 13:21:30
Un repo de quoi ? le patch ou le code source du package ?

Le code source du package est dans l'archive GPL publiée par Ubiquiti sur la page (publique, si tu utilises une beta du firmware tu n'auras pas les sources à jour) de download de l'image firmware.
Titre: Template config ER-X firmware 2.X Dual WAN Failover (FTTH Orange + FTTB SFR)
Posté par: benoitc le 26 juillet 2020 à 14:53:50
Un repo de quoi ? le patch ou le code source du package ?

Le code source du package est dans l'archive GPL publiée par Ubiquiti sur la page (publique, si tu utilises une beta du firmware tu n'auras pas les sources à jour) de download de l'image firmware.

ah je n'arrivais pas à trouver les sources GPLde dhclient3, désolé :) Pour ceux qui cherches comme moi c'est sur la page de téléchargement du firmware: https://www.ui.com/download/edgemax/  (Voir screenshot ci-joint)

sinon pour le patch je suppose qu'il s'agitd e celui-ci :

https://github.com/shisva/USG_Orange/blob/master/patch_dhclient3/iscdhcp_priority.patch

?
Titre: Template config ER-X firmware 2.X Dual WAN Failover (FTTH Orange + FTTB SFR)
Posté par: benoitc le 27 juillet 2020 à 19:46:56
une question, sur la version 2 du firmware on peut installer les cgroups. est-ce que en fixant la priorité comme indiqué ici:
https://lafibre.info/remplacer-livebox/isc-dhcp-client-raw-socket-solution/msg635065/#msg635065

ce serait aussi efficace que dhclient? par contre au niveau persistence de la conf 🤷‍♂️ ?
Titre: Template config ER-X firmware 2.X Dual WAN Failover (FTTH Orange + FTTB SFR)
Posté par: zoc le 28 juillet 2020 à 07:10:01
Malheureusement le noyau n’a pas été compilé avec ce qu’il faut, notamment le module qui gère la priorité est absent.

On a déjà demandé à Ubiquiti de le rajouter il y a des mois dans la wish list Mais aucune réponse.
Titre: Template config ER-X firmware 2.X Dual WAN Failover (FTTH Orange + FTTB SFR)
Posté par: Oyodo le 22 juin 2021 à 20:42:36
Bonjour,

J'essaie de faire fonctionner mon ER-X SFP (en remplacement de la Livebox 5) sur le réseau Orange en mode DHCP, mais j'obtiens aucune réponse à mon DHCP Discover, alors que j'ai pourtant configuré les options DHCP et le marquage des trames comme il se doit, avec le binaire remplacé (et mon setup fonctionnait sous OpenWRT en VDSL auparavant).

Le SFP utilisé est un FGS202 avec le mod soudure, afin qu'il soit reconnu par l'ER-X.
La connexion fonctionne parfaitement en PPPoE (900/600).

J'utilise la version v2.0.9-hotfix.2.

J'en viens à venir chercher de l'aide ici car je ne comprends vraiment pas d'où pourrait provenir le problème :/
Quelqu'un rencontre-t-il le même problème ?
Titre: Template config ER-X firmware 2.X Dual WAN Failover (FTTH Orange + FTTB SFR)
Posté par: jcgonnard le 21 décembre 2022 à 12:11:24
J'ai mis à jour le post, la conf est compatible avec les firmwares 2.x, il faudra utiliser le dhclient3 que j'ai mis en pièce jointe.
Edit: Pour l'instant j'ai un souci de load-balancing, j'ai ouvert une discussion chez UBNT: https://community.ui.com/questions/Failover-load-balancing-not-working-on-ER-X-firmware-2-x/c9bd1d0d-d653-44b5-955c-c19d1f36d22f

Hello fl0w,

Je sais que je déterre un vieux sujet et j'espère que tout ne sera pas effacé dans ta mémoire.
J'ai un souci identique de failover sur un ER8-Pro 2.X avec dual WAN (Primaire: Fibre Celeste + Failover: ADSL Orange):
Quand la fibre tombe, le switch vers Orange est OK mais quand ca revient, les routes ne sont pas corrigées et une partie du trafic reste sur le WAN failover

Je ne suis pas un spécialiste réseau ni télécoms, du coup j'ai bcp de mal à comprendre l’intérêt de la réponse que tu as eu sur le forum ubiquiti, d'autant plus que le commit a échoué ...

Merci d'avance si tu as le temps et que ça reste assez frai dans ta mémoire.

Sinon j'essayerai d'ouvrir un nouveau fil de discussion
Titre: Template config ER-X firmware 2.X Dual WAN Failover (FTTH Orange + FTTB SFR)
Posté par: fl0w le 21 décembre 2022 à 13:03:38
Hello,

De ce que je constate, la dernière version du firmware ne semble pas impactée, la version v2.0.9-hotfix.4.
Sinon voici le contenu de mon script wan-transition, j'avais ajouté le correctif qui est lié au client DHCP qui merdait (les 3 dernières lignes):
#!/bin/bash                                                                                                                                                   

GROUP=$1                                                                                                                                                       
INTF=$2                                                                                                                                                       
STATUS=$3                                                                                                                                                     
                                                                                                                                                               
MYLOG="/var/log/wan-transition.log"                                                                                                                                           
TS=$(date +"%Y%m%d-%T")                                                                                                                                       
                                                                                                                                                               
run=/opt/vyatta/bin/vyatta-op-cmd-wrapper                                                                                                                     
INTFDSCR=$($run show interfaces | grep $INTF | awk '{print $4}')                                                                                               
                                                                                                                                                               
#/usr/sbin/conntrack -F                                                                                                                                         
#/usr/sbin/ubnt-add-connected.pl                                                                     

case "$STATUS" in
  active)
    msg="$TS: Internet connection $GROUP:$INTF:$INTFDSCR is active."   
    /config/scripts/dynhost 2>&1 | logger &
    /config/scripts/gotify "Router $(hostname) WAN fail-over event" "$msg" &
    ;;
  inactive)
    msg="$TS: Internet connection $GROUP:$INTF:$INTFDSCR is inactive."
    ;;
  failover)
    msg="$TS: Internet connection $GROUP:$INTF:$INTFDSCR is failover."   
    ;;
  *)
    msg="$TS: Oh crap, $GROUP:$INTF:$INTFDSCR going [$STATUS]"
    ;;
esac

echo $msg >> $MYLOG
logger $msg
exit 0


/bin/mv /config/user-data/wlb_linkup /etc/dhcp3/dhclient-exit-hooks.d/

sleep 200

/bin/mv /etc/dhcp3/dhclient-exit-hooks.d/wlb_linkup /config/user-data/

Le script est appelé en faisant un "set load-balance group WAN_FAILOVER transition-script /config/scripts/wan-transition"
Titre: Template config ER-X firmware 2.X Dual WAN Failover (FTTH Orange + FTTB SFR)
Posté par: PeGGaaSuSS le 27 janvier 2024 à 23:40:15
Ce script est-il à jour ? Dans le sens un simple copier/coller avec les infos. de connexion suffit-il ?