Les grandes étapes pour configurer une balance de charge entre une clé USB 4G (ZTE dans mon cas) et un lien internet type ADSL sur un routeur Ubiquiti EdgeRouter 4.

Première étape :

Le module de la clé n'est pas actif dans le kernel au boot !

1°) Créer le script avec le code ci dessous

vi /etc/init.d/modem.sh
#!/bin/sh -e
modprobe cdc_ether
ifconfig usb0 up
exit 0

2°)chmod

chmod 755 /etc/init.d/modem.sh

3°)charger au boot

update-rc.d modem.sh defaults 01

Seconde étape :

Le routeur ne permet pas de faire de la balance de charge nativement entre une interface ethX et une interface usbX. Pour feinter un peu le truc j'ai donc créé un bridge dans lequel j'ai mis ma clé usb.

1°)Créer le bridge

set interfaces bridge br1

2°)Affecter l'interface USB

brctl addif br0 usb0

Dernière étape:

La configuration de la balance de charge comme décris dans la doc. Dans mon cas j'utilise l'interface eth1 pour le LAN, eth0 pour ADSL et usb0 pour la clé.

configure

set firewall group network-group PRIVATE_NETS network 192.168.0.0/16
set firewall group network-group PRIVATE_NETS network 172.16.0.0/12
set firewall group network-group PRIVATE_NETS network 10.0.0.0/8

set firewall modify balance rule 10 action modify
set firewall modify balance rule 10 destination group network-group PRIVATE_NETS
set firewall modify balance rule 10 modify table main

set firewall modify balance rule 20 action modify
set firewall modify balance rule 20 destination group address-group ADDRv4_eth0
set firewall modify balance rule 20 modify table main

set firewall modify balance rule 30 action modify
set firewall modify balance rule 30 destination group address-group ADDRv4_""usb0""
set firewall modify balance rule 30 modify table main

set firewall modify balance rule 110 action modify
set firewall modify balance rule 110 modify lb-group G

set interfaces ethernet ""eth1"" firewall in modify balance

set load-balance group G interface eth0
set load-balance group G interface ""usb0""
set load-balance group G lb-local enable
set load-balance group G lb-local-metric-change disable

commit ; save

Normalement avec tout ça vous devriez avoir une balance de charge entre eth1 et usb0.

En complément, si vous utilisez du NAT vers un serveur web ou autre il faut ajouter une regle qui permet de diriger correctement le trafic vers la bonne sortie internet (celle du nat).

1°)Créer un groupe d'adresse (ici mes serveurs public 192.168.1.2 et .3)

set firewall group address-group NO_BALANCE address 192.168.1.2-192.168.1.3

2°)Créer une règle de routage ou 78.X.Y.Z est votre ip de sortie.

set protocols static table 11 mark 11
set protocols static table 11 route 0.0.0.0/0 next-hop 78.X.Y.Z

3°)Affecter cette règles a celle de la balance du firewall.

set firewall modify balance rule 40 action modify
set firewall modify balance rule 40 source group address-group NO_BALANCE
set firewall modify balance rule 40 modify table 11

Liens utiles:

  1. EdgeRouter-WAN-Load-Balancing
  2. EdgeRouter-Policy-Based-Routing