web-dev-qa-db-fra.com

Composition en plusieurs connexions PPP

J'ai plusieurs modems USB 3G. Je voudrais qu'ils restent connectés simultanément, PAS nécessairement en agrégeant leur bande passante; une application intelligente distincte gérerait efficacement leur utilisation.

Cependant, je rencontre des problèmes pour configurer des routes appropriées pour les interfaces ppp0, ppp1: lorsque l'une d'elles se connecte, les entrées des autres dans la table de routage sont mises à jour de sorte qu'elle n'est plus utilisable. Si je reconnecte le second, il remplacerait les entrées de routage du premier. Si je le fais encore et encore, parfois les deux entrées disparaissent alors que dans de rares cas, les deux fonctionnent bien.

Je l'ai essayé à la fois en utilisant NetworkManager ainsi que WVDial mais le problème apparaît dans les deux. Peut-être que les deux utilisent le même PPP dialer au backend et c'est pourquoi ce problème apparaît.

Quelle est la bonne solution pour les faire fonctionner ensemble? À long terme, j'aimerais également qu'ils se connectent automatiquement une fois l'USB connecté.

3
sharjeel

Vous voudrez peut-être essayer de configurer vos connexions mobiles avec un simple Tweak: cocher la case Utiliser cette connexion uniquement pour les ressources de son réseau , qui est caché un peu loin malheureusement:

Sous les paramètres de votre connexion, accédez à l'onglet IPv4, cliquez sur le bouton Routes, puis cochez la dernière case de cette boîte de dialogue.

Non testé, mais en gros, ce qui devrait se produire, c'est que chaque pppX périphérique devrait être activé avec des itinéraires corrects à travers chacun des réseaux de vos fournisseurs, mais la valeur par défaut la route ne doit pas être réglée pour passer sur l'un d'eux.

Vous devriez alors être en mesure d'écrire un script simple qui, par exemple, envoie un ping au même serveur à partir de chacune des interfaces et choisit la plus rapide pour définir la route par défaut; quelque chose comme:

route_candidate=$(
for iface in `ifconfig -a | grep ppp | awk '{print $1; }'`; do
    echo $iface = `ping -I $iface -c 1 -q 8.8.8.8 | grep avg | awk -F/ '{print $5;}'`
done | sort -k 3 -rn | head -n 1
)

logger "Setting new route from candidate: $route_candidate"

ip route del default
ip route add default dev `echo $route_candidate | awk '{print $1;}'`

Je n'ai pas testé cela complètement, mais c'est à peu près ce qui doit être fait; avec l'ajout ou la modification de l'utilisation de "via any_the_default_gw_ip_is" pour la commande ip route add default. Exécutez ceci avec cron sur un intervalle régulier et vous avez un système cheapo pour rester sur le FAI "le plus rapide".