Bonjour à tous,
Je tiens d'abord à remercier tous les intervenants de ce fil de discussion dont les messages m'ont énormèment aidé à réaliser ma configuration ! Je viens de passer ces 2-3 derniers jours à décortiquer toutes vos expériences, découvertes, réflexions et fichiers de configuration pour les transposer dans mon contexte. Et ça a très bien fonctionné ! Je vous envoie ce message en guise de remerciement mais aussi pour partager quelques éléments nouveaux aux personnes qui tenteraient l'opération dans une configuration similaire à la mienne. C'est parti !
Note : je tiens à préciser que je suis satisfait par ma configuration mais que j'ai eu à contourner des obstacles de manières parfois peu orthodoxes. N'hésitez donc pas à pointer du doigt les horreurs que vous constaterez certainement et à me donner des pistes pour améliorer
D'abord quelques éléments de contexte :
- Abonnement Orange Jet Fibre
- Firmware Livebox (avant débranchement !) : SG30_sip-fr-5.15.8.1
- Mode de connexion de la Livebox au réseau Orange : par DHCP et trafic Internet sur VLAN 832
- Débit mesuré par nperf (avant débranchement) : 630 Mbits / 240 Mbits (~2ms)
- IPv6 : préfixe /56 attribué par Orange
- Pas de décodeur TV
- Téléphonie utilisée très exceptionnellement (pas encore tenté les manips pour continuer à l'utiliser après remplacement de la Livebox)
- Routeur de substitution : PC standard (Pentium Dual-Core E6500 2.93GHz, 4 Go de RAM) sous Debian 7.4 64 bits (wheezy), kernel Linux 3.2.0
Schéma réseau : ONT <-> (eth0) Serveur Debian (eth1) <-> LAN
Note : je ne le répéterai pas à chaque fois mais notez bien que j'utiliserai ces 2 noms d'interface dans les fichiers de configuration et commandes ci-dessous. Il vous faudra donc les remplacer par vos propres noms d'interface.
Le routeur Debian assure donc principalement les rôles suivants :
- Connexion au réseau Orange par DHCP via IPv4 et IPv6
- Serveur DHCP IPv4 + NAT
- Autoconfiguration des postes du LAN en IPv6 via le protocole RA (radvd)
Pour l'instant, pas de firewall (ce qui est notamment problématique en IPv6 car tous mes postes du LAN ont une IPv6 routable depuis Internet !) et la résolution de noms est confiée à 2 serveurs DNS publics de Google (compatibles IPv6) avec fallback sur un serveur DNS d'Orange.
Connexion via DHCP (IPv4)VLANTout d'abord il m'a fallu créer le VLAN 832.
Chargement manuel du module :
modprobe 8021q
Ajout du module au fichier /etc/modules pour chargement automatique au boot :
echo "8021q" >> /etc/modules
Installation du paquet contenant les utilitaires permettant de configurer les VLAN :
apt install vlan
Pour tester si tout le nécessaire est en place, on peut tenter la création d'un VLAN à la main (pas utile à terme car ce sera automatisé) :
vconfig add eth0 832
Si tout s'est bien passé, vous devriez voir s'afficher le message suivant : Added VLAN with VID == 832 to IF -:eth0:-
On peut maintenant supprimer ce VLAN qui sera par la suite créé automatiquement :
vconfig rem eth0.832
Notez bien que la commande "vconfig add" attend, après le nom de l'interface (eth0 chez moi), un
identifiant de VLAN (832). Alors que la commande "vconfig rem" attend le
nom complet du vlan (eth0.832).
On est bons pour le VLAN.
/etc/network/interfacesOn ajoute les lignes suivantes au fichier /etc/network/interfaces :
auto eth0
iface eth0 inet static
address 192.168.1.100
netmask 255.255.255.0
broadcast 192.168.1.254
auto eth0.832
iface eth0.832 inet manual
up dhclient -cf /etc/dhcp/dhclient.conf -v -pf /var/run/dhclient.vlan832.pid -lf /var/lib/dhcp/dhclient.vlan832.leases eth0.832
post-down dhclient -x -pf /var/run/dhclient.vlan832.pid || true
iface eth0.832 inet6 manual
auto eth1
iface eth1 inet static
address 192.168.0.100
netmask 255.255.255.0
broadcast 192.168.0.254
iface eth1 inet6 auto
Tout d'abord, je ne suis pas certain qu'il faille vraiment une adresse IP pour eth0, mais je pense que l'interface doit être UP pour que le vlan832 puisse être créé et je ne sais pas comment "upper" une interface sans lui donner une adresse IP.
Ensuite pour le eth0.832. Vous trouverez surement étrange qu'il soit configuré en "manual" et non "dhcp". Moi aussi
D'autant plus que la configuration manuelle qui suit ne fait que lancer le dhclient.
Le fait est que, chez moi, si je le configure en "dhcp" le programme dhclient est lancé sans tenir compte du fichier /etc/dhcp/dhclient.conf. Oui c'est très étrange et je suppose que l'erreur vient de mon côté car la documentation de dhclient indique bien que si le paramètre -cf n'est pas fourni, ça va bien chercher le fichier dhclient.conf. Sauf que, pas chez moi. Du coup j'utilise le mode "manual" pour pouvoir lancer moi-même la commande dhclient avec le paramètre -cf qui indique quel fichier de configuration utiliser. Et ça c'est très important car le contenu de ce fichier est un peu la clé de voûte !
Il peut être utile de créer à l'avance un fichier /var/lib/dhcp/dhclient.vlan832.leases vide :
touch /var/lib/dhcp/dhclient.vlan832.leases
Avant de tenter de démarrer l'interface, il faut configurer dhclient.
Configuration de dhclientNote : pour des raisons obscures liées à mes différentes tentatives, dans ma configuration j'utilise la dernière version (4.3.4) de la suite ISC DHCP (comprenant notamment dhclient) compilée à partir des sources officielles. La version officielle de Debian wheezy est en ce moment la 4.2.2. Au final, je pense que mes échecs avec la 4.2.2 étaient uniquement dus à des erreurs de configuration et je ne pense pas qu'il soit nécessaire de s'embêter à récupérer la dernière version. À l'avenir, j'essaierai de repasser sur le paquet Debian isc-dhcp-client 4.2.2.
Voici ma configuration (/etc/dhcp/dhclient.conf) :
option rfc3118-authentication code 90 = string;
interface "eth0.832" {
send vendor-class-identifier "sagem";
#send dhcp-client-identifier xx:xx:xx:xx:xx:xx;
send user-class "+FSVDSL_livebox.Internet.softathome.Livebox3";
send rfc3118-authentication 00:00:00:00:00:00:00:00:00:00:00:66:74:69:2f:xx:xx:xx:xx:xx:xx:xx;
request subnet-mask, routers,
domain-name, broadcast-address, dhcp-lease-time,
dhcp-renewal-time, dhcp-rebinding-time,
rfc3118-authentication;
prepend domain-name-servers 8.8.8.8, 8.8.4.4;
}
Le dhcp-client-identifier contient tout simplement l'adresse MAC de mon eth0. D'après mes tests, ce n'est pas obligatoire de l'envoyer (d'où le fait qu'il soit commenté) mais j'avais dû lire quelque part qu'il pouvait être utile. Désolé, je ne sais plus.
Par ailleurs, j'ai également pris la peine de cloner l'adresse MAC de la livebox pour l'attribuer à mon eth0. Non seulement c'est probablement inutile mais en plus ça me posera un problème certain dès que j'essaierai de rebrancher la livebox sur le réseau pour bénéficier de la téléphonie. Au départ, ça me semblait toutefois une bonne idée au cas où Orange (où son ONT) aurait gardé une trace de l'adresse MAC de la livebox à des fins d'authentification.
D'après mes tests, le "vendor-class-identifier" n'est pas non plus obligatoire. Mais comme tout le monde ici l'envoie, je préfère l'envoyer également
Pour le rfc3118-authentication (authentification, code 90, option non prévue par ISC DHCP mais rendue utilisable par la première ligne "option ..."), il s'agit d'encoder la valeur hexadécimale correspondant à la partie de votre identifiant Orange qui se situe après "fti". Pour l'obtenir facilement, je vous renvoie au premier post du topic où vous trouverez le script generator.sh (merci zoc !) ou encore le formulaire en ligne
https://jsfiddle.net/kgersen/45zudr15/embedded/result/ (merci kgersen !).
Pour la ligne "request", je ne suis pas sûr que toutes les options requises soient obligatoires, mais je n'ai pas pris le temps de tester. Parfois, c'est juste bien quand ça marche
J'ai quand même enlevé les options relatives aux DNS car je préfère utiliser les DNS Google (d'où le "prepend domain-name-servers ...").
Pensez également à avoir dans vos règles iptables celle qui permet le NAT :
iptables -t nat -A POSTROUTING -j MASQUERADE -o eth0.832
Sans oublier d'activer le partage de connexion :
sysctl -w net/ipv6/conf/eth0.832/forwarding=1
Connexion via DHCP (IPv6)Pour la partie IPv6, je vous renvoie à un dépôt GitHub que j'ai mis en place il y a quelques jours :
https://github.com/dario-spagnolo/ipv6-scriptsIl s'agit d'un fork de
https://github.com/jaymzh/v6-gw-scripts à qui j'ai emprunté la plupart du code et la logique générale, tout en l'adaptant aux spécificités d'Orange et en automatisant un petit peu plus. Il y aurait encore du travail à faire mais pour l'instant ça fonctionne.
Conclusion- Plus de Livebox
- Débit mesuré par nperf (sans Livebox) : 620 Mbits / 240 Mbits (~3ms) (mesures réalisées plusieurs jours après celle effectuées via la Livebox, je ne pense pas que la différence minime soit à attribuer à la nouvelle configuration)
- IPv4 et préfixe IPv6 /56 stables depuis une quinzaine de jours
- Connectivité dual stack IPv4/IPv6 partagée avec tout mon LAN !
- Latence plus importante en IPv6 (30-40ms)
- Je fais partie des heureux élus qui n'ont pas eu à se prendre la tête avec la priorisation des paquets : les requêtes DHCP auprès d'Orange aboutissent chez moi immédiatement dès que je passe par le VLAN 832 et que je m'identifie correctement
J'espère que ces quelques lignes aideront certains d'entre vous à installer votre serveur Debian en face de l'ONT
Si vous avez des remarques ou des questions, n'hésitez pas. D'autant plus que j'ai écrit ce message en plusieurs fois et j'ai peut-être oublié des passages essentiels de la configuration. Si c'est le cas, dites-le moi et je compléterai avec plaisir.
Merci encore aux nombreux participants de ce topic sans qui, je n'y serais jamais arrivé !