[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Nommage des interfaces ppp



Salut,

Merci pour les infos, ca semble etre effectivement ce qu'il me faut.

Le probleme c'est qu'a terme, j'aurais une ppp et une dhcp, le probleme ne se posera plus. L'utilisation des scripts résoudra mon probleme, mais c'est un serveur en prod et je n'ai pas le temps de faire des tests.

Je pensais qu'il y avait un moyen simple de dire a pppd qu'une interface doit etre ppp0 et l'autre ppp1 mais effectivement ce n'est pas possible.

Merci pour ta réponse, je la garde sous le coude car tres interessante :)

A+

Pascal@plouf wrote:
Salut,

Guillaume Leccese a écrit :

J'ai un serveur avec deux connexions PPP. L'ordre est tres important, une étant la principale, l'autre la secondaire. Les DNS pointent sur la principal, et mes rêgles de firewall n'autorisent le trafic que sur la principale, la seconde étant là pour l'administration de secours.

La première n'a pas l'air tres stable malheureusement ... et ca m'arrangerais pas mal qu'elle soit toujours nommée ppp0, et que ca ne depende pas de l'ordre de lancement de pppd. Sinon je dois passer par des manips via les routes par défaut, c'est pas pratique et pas du tout idéal. Si au moins la connexion de secours était toujours en ppp1 voir autre chose, ca serait plus pratique.

Y a-t-il un moyen de faire cela ?

Je ne connais pas de moyen de forcer a priori ou changer a posteriori le nom d'une interface PPP créée par pppd. Ma passerelle est elle aussi susceptible de gérer plusieurs interfaces PPP montées dans n'importe quel ordre et dont le nommage est par conséquent imprévisible. J'utilise des scripts placés dans /etc/ppp/ip-up.d/ (resp. /etc/ppp/ipv6-up.d/) que pppd lance après l'établissement de la liaison IP (resp. IPv6) en leur passant diverses variables d'environnement comme le nom de l'interface, l'adresse IP locale, l'adresse IP du pair, la valeur de l'option 'ipparam', pour créer les règles iptables et les routes liées à chaque connexion, ou pour relancer ou envoyer un signal à un démon pour qu'il prenne l'interface en compte. J'utilise la valeur de l'option 'ipparam' dans les fichiers d'options de pppd pour différencier les connexions.

Exemple fictif :

======================================================
#!/bin/sh
# Variables d'environnement :
#    Variable     Name                          Example
#    PPP_IFACE    Interface name                ppp0
#    PPP_TTY      The tty                       ttyS1
#    PPP_SPEED    The link speed                38400
#    PPP_LOCAL    Local IP number               12.34.56.78
#    PPP_REMOTE   Peer  IP number               12.34.56.99
#    PPP_IPPARAM  Optional "ipparam" value      foo

# actions apres debut ou fin d'une connexion PPP en IPv4
# creation ou suppression des regles iptables liees aux interfaces PPP

if [ $PPP_IPPARAM == "connexion1" ]
then
  iptables -A INPUT -i $PPP_IFACE -d $PPP_LOCAL -j ACCEPT
  iptables -t nat -A POSTROUTING -o $PPP_IFACE -j MASQUERADE
  route add default gw $PPP_REMOTE dev $PPP_IFACE
  kill -HUP `cat /var/run/mon_demon.pid`

elif [ $PPP_IPPARAM == "connexion2" ]
then
  iptables -A INPUT -i $PPP_IFACE -d $PPP_LOCAL -j ACCEPT
  route add -net 192.168.7.0/24 gw $PPP_REMOTE dev $PPP_IFACE
fi
======================================================

Réciproquement j'utilise des scripts placés dans /etc/ppp/ip-down.d/ (resp. /etc/ppp/ipv6-down.d/) que pppd lance après la fermeture de la liaison IP (resp. IPv6) avec les mêmes arguments pour nettoyer les règles iptables obsolètes (normalement les routes liées à l'interface qui tombe sont automatiquement nettoyées).

Rappel : ces scripts sont lancés par run-parts et doivent remplir des conditions sur le nom et la mention de l'interpréteur en début de script (cf. man run-parts).





Reply to: