Ping6 (Auteur du topic)
Hobbit de L'Univers
Inscrit le: 30 Déc 2019 Messages: 4
|
Ping6 (Auteur du topic), Posté le: Jeu 27 Mai 2021, 13:31 Sujet du message: (Fibre) Tuto: configuration d'une box GNU/Linux (MAJ DHCPv6)
(Fibre) Tuto: configuration d'une box GNU/Linux (MAJ DHCPv6)
214180
194370
|
|
|
Bonjour à tous,
Me voilà de retour pour vous présenter un nouveau tutorial : remplacement d'une Freebox Fibre (Mini 4K dans mon cas) avec une Miambox fait-maison sous Debian GNU/Linux.
Pour ma part, je suis dans un immeuble fibré par Orange et je dispose donc d'un ONU Free (le petit boitier noir fourni par Free :
https://www.universfreebox.com/UserFiles/image/convertisseur1.jpg
Si vous n'avez pas ce boitier je ne peux pas garantir le bon déroulement de ce tutorial. De ce que j'ai pu glaner sur Internet les Pop et Delta intègrent une partie du traitement des flux Fibres (ce que fait l'ONU en fait) et donc votre liaison Fibre ne montera pas si vous branchez directement la prise SFP . Après s'il y a des connaisseurs qui ont des informations là-dessus et éventuellement des solutions, je suis preneur (moi aussi j'aimerai bien me débarasser de l'ONU ).
Pourquoi utiliser une distribution GNU/Linux Debian et pas OpenWRT / Vyos / pfSense / ... ?
- le challenge ;
- c'est fun ;
- profiter de tous les paquets Debian ;
- pouvoir customiser aux petits oignons (partages FTP / NFS / Samba côté LAN, Wireguard, OpenVPN, ...) ;
- gestion fine de la sécurité.
Voici le matériel dont nous allons avoir besoin :
- l'ONU de Free ;
- un media converter Fibre vers RJ45 type TP-Link MC220L ;
- une machine Debian avec au moins deux cartes réseaux (une WAN et une LAN) qui sera notre Miambox ;
- un moyen d'accéder à la machine (écran VGA + clavier, port série, SSH, ...).
Choix du chef-cuisinier pour la Miambox :
- une carte PC Engine APU4D4 (CPU AMD avec AES-NI, 4 Go de RAM, 4 RJ45 Gigabit) ;
- un disque SSD au format mSATA ;
- adaptateur Ethernet en USB3.
Optionnellement vous pouvez aussi ajouter une carte Wi-Fi au format mPCI + les antennes qui vont bien. Côté logiciel, il y a hostapd pour configurer le point d'accès sans-fil.
ATTENTION : ce tutorial requiert des connaissances GNU/Linux, en réseau et tout va se dérouler en ligne de commande uniquement.
Je pars du principe que GNU/Linux Debian Buster est déjà installé sur votre Miambox et que vous y avez accès (soit par VGA, câble série ou via SSH).
Maintenant nous allons détailler les différentes étapes du projet.
1) Récupération des informations techniques du compte Free
Il faut se connecter sur votre compte client Free, puis aller sur "MA Freebox" et cliquer sur "Afficher mon adresse IP et les caractériques de ma ligne".
Notez votre adresse IP, la tranche de port (si vous n'êtes pas en IP fixe V4 full-stack) et votre préfixe IPv6.
Il faut aussi récupérer l'adresse MAC de la Freebox (sur le côté ou en dessous).
Dans la suite de ce tutorial :
- l'adresse IP sera noté XX.YY.ZZ.WW ;
- la tranche de port : AAAA-BBBB ;
- le préfixe IPv6 : 2a01:e0a:XXXX:XXX0::/60 (notez bien le XXX0 et oui c'est bien un /60 même si Free vous dit que c'est un /64) ;
- l'adresse MAC de la Freebox : AA:BB:CC:DD:EE:FF.
2) Préparation de la Miambox
Pour la connectivité WAN de base, il faudra installer les paquets suivant :
- tcpdump
- vlan
- bridge-utils
- dnsutils
- telnet
- ndisc6
- curl
- ifupdown2
Note : la partie LAN sera traitée plus loin.
Activer le routage IPv4 et IPv6 en ajoutant les deux lignes au fichier /etc/sysctl.conf
Code: | net.IPv4.conf.all.forwarding=1
net.IPv6.conf.all.forwarding=1 |
Brancher le SFP de l'ONU sur le TP-Link MC220L et enfin relier la prise RJ45 du MC220L sur le port WAN de la Miambox.
Trouver le nom de l'interface réseau côté GNU/Linux (eth0, eth1, ...).
Nous la nommerons ethX dans la suite du tutorial.
Free vérifie que la machine connecté à la Fibre correspond bien à la Freebox via son adresse MAC.
Il nous faut donc donc usuper l'adresse MAC de la Freebox sur notre interface WAN.
Editer le fichier /etc/network/interfaces et ajouter / modifier la partie qui correspond à ethX :
Code: | allow-hotplug ethX
auto ethX
iface ethX inet6 manual
hwaddress ether AA:BB:CC:DD:EE:FF
mtu 1700 |
Notez ici que nous augmentons le MTU qui va nous servir à garder un MTU de 1500 pour le tunnel IPv4.
Free supporte les "jumbo frames" côté WAN.
3) Connectivité IPv6
Le flux Internet se passe sur le VLAN 836, on va dédier un fichier spécifique pour la configuration WAN.
Edit : suite à un reboot de l'ONU, j'ai rencontré un soucis de connectivité IPv6, a priori passer en DHPv6 résoud le souci. Voir ma réponse du 30/05/2021 pour la configuration à jour.
Editer le fichier /etc/network/interfaces.d/uplink :
Code: | allow-hotplug ethX.836
auto ethX.836
iface ethX.836 inet6 static
description wan6
address 2a01:e0a:XXXX:XXX0::1/60 # notez bien le XXX0 et le ::1 à la fin !
hwaddress AA:BB:CC:DD:EE:FF
mtu 1700
post-UP sysctl -q net.IPv6.conf.ethX/836.forwarding=1
post-UP sysctl -q net.IPv6.conf.ethX/836.accept_ra=2 |
La dernière ligne indique que nous acceptons les "Router advertisement" même si nous sommes un routeur (ces messages contiennent entre autre des informations sur les routes IPv6). L'avant-dernière ligne s'assure que le routage est activé sur cette interface VLAN.
Appliquer les changements d'interface :
4) Test de la connectivité IPv6
Faire un ping vers le serveur DNS de Free :
Code: | ping -6 -c4 2a01:e00::2 |
Ajouter au fichier /etc/resolv.conf :
Code: | nameserver 2a01:e00::2 |
Faire une résolution DNS :
Faire un ping IPv6 vers www.free.fr :
Faire une requête HTTP :
Normalement à cette étape, votre Miambox a une connectivité IPv6 fonctionnelle. Victoire pour le peuple !
5) Connectivité IPv4
Afin d'accéder au monde IPv4, la Freebox utilise un tunnel "IPv4 over IPv6" avec un partage de port (une IPv4 pour 4 abonnés), autrement dit c'est la technologie MAP-E. Il y a quelques logiciels pour faire du MAP-E sous GNU/Linux mais non-maintenu mais on peut également utiliser NFTables. Néanmoins vu les spécificités de Free (la tranche de port alloué est contigüe), j'ai décidé de le faire à la main avec iptables (via Shorewall chez moi).
Un tunnel, quel qu'il soit, requiert de connaître l'adresse local et son point de sortie (endpoint). Pour déterminer ces deux paramètres:
- lancer une capture tcpdump sur la Miambox ;
Code: | tcpdump -nxi ethX.836 |
- à partir d'un autre accès Internet IPv4 (via partage 3G, collègues, ...), faire un telnet sur votre IPv4 à destination d'un port de votre tranche de port alloué ;
Code: | telnet XX.YY.ZZ.WW AAAA # (premier port de votre tranche de ports) |
Sur la Miambox vous devriez avoir une ligne du type :
Code: | 10:50:47.546694 IP6 2a01:e00:XXXX:XXXX::XXXX > 2a01:e0a:XXXX:XXX0:0:XXXX:XXXX:XXXX: IP XX.XX.XX.XX.yyyy > XX.YY.ZZ.WW:AAAA: |
La première adresse IPv6 est l'adresse du relai (RELAY_IPv6_ADDRESS), normalement c'est 2a01:e00:29:200a::fffb ou 2a01:e00:29:200a::ffff. La deuxième est votre IPv6 local au tunnel (LOCAL_IPV6_ADDRESS).
Ajouter ce qui suit au fichier /etc/network/interfaces.d/uplink et remplacer RELAY_IPV6_ADDRESS, LOCAL_IPV6_ADDRESS par les bonnes valeurs :
Code: | allow-hotplug ip4tnl0
auto ip4tnl0
iface ip4tnl0 inet tunnel
description wan4
address XX.YY.ZZ.WW/32
mode ipip6
local LOCAL_IPV6_ADDRESS
endpoint RELAY_IPV6_ADDRESS
tunnel-physdev ethX.836
# Free ISP requires To have encaplimit = none
post-UP IP -6 tunnel change ip4tnl0 encaplimit none
# Enable routing
post-UP sysctl -q net.IPv4.conf.ip4tnl0.forwarding=1
# Adds IPv4 default route To pass by this interface
post-UP IP -4 route add default dev ip4tnl0
mtu 1500 |
On s'aperçoit qu'on s'assure que le tunnel soint en mode rouage ainsi de la présence d'une spécificité du tunnel (encaplimit none sinon vous aurez des messages ICMPv6 "Parameters problem").
Noter également le mtu à 1500. Je n'ai pas testé plus haut mais en tout cas ce MTU ne doit pas être supérieur à celui de l'interface WAN IPv6 - 40 octets (soit 1660 dans mon exemple).
Dernier point, il vous faut ajouter une ligne dans la configuration "iface ethX.836 inet6 static" (interface WAN IPv6) :
Code: | address LOCAL_IPV6_ADDRESS/64 (n'oubliez pas le /64): |
Appliquer les changements d'interface :
Si vous avez une IPv4 full-stack, normalement (je n'ai pas testé car je ne l'ai pas activé) vous pouvez passer directement au test de connectivité IPv4.
Si vous êtes en partage "quart de port", il faut ajouter trois règles iptables :
Code: | iptables -t nat -A POSTROUTING -p icmp -o ip4tnl0 -j MASQUERADE \
--source XX.YY.ZZ.WW --To-ports AAAA-BBBB
iptables -t nat -A POSTROUTING -p tcp -o ip4tnl0 -j MASQUERADE \
--source XX.YY.ZZ.WW --To-ports AAAA-BBBB
iptables -t nat -A POSTROUTING -p udp -o ip4tnl0 -j MASQUERADE \
--source XX.YY.ZZ.WW --To-ports AAAA-BBBB |
Note : ces règles ne sont que pour les connexion de la Miambox vers Internet. Les règles pour le LAN seront détaillées après.
Note 2 : on pourrait penser que le "To-ports" est sans-effet pour ICMP (vu qu'il n'y a pas de port dans ICMP) mais en fait cela modifie le champs "identification" de l'entête ICMP. Si vous ne respectez pas ceci, certains test de ping marcheront et d'autres non car Free se base sur le champs ID pour router vers le bon abonné.
ATTENTION : les règles iptables tapées sont éphémères (i.e. ne survit pas au reboot), il est conseillé d'utiliser un outil de pare-feu (shorewall, ufw, firewalld, ...), iptables-persistent ou encore des commandes "post-UP" dans /etc/network/interfaces.d/uplink pour faire persister la configuration !
6) Test de la connectivité IPv4
Faire un ping vers le serveur DNS de Free :
Code: | ping -4 -c 4 212.27.40.240 |
Faire une résolution DNS :
Faire un ping IPv4 vers www.free.fr :
Faire une requête HTTP :
Normalement à cette étape, votre box a une connectivité IPv4 fonctionnelle. Victoire pour le peuple !
7) Pare-feu
ATTENTION : il est obligatoire maintenant de configurer votre pare-feu avec les outils que vous maitrisez (iptables, shorewall, ufw, firewalld, nftables, ...).
Je ne vais pas trop rentrer dans les détails mais voici en résumé, les règles qu'il faudrait mettre :
- bloquer les connexions UDP / TCP / ICMP de l'Internet vers la Miambox lui-même en IPv4 et IPv6
- autoriser les paquets LAN vers Internet en IPv4 et IPv6
- autoriser les paquets de la Miambox vers Internet en IPv4 et IPv6
- autoriser le SSH du LAN vers la Miambox
Il est aussi possible, suivant les pare-feux, de configurer le NAT avec le quart de port IPv4 (Shorewall peut le faire pour UDP et TCP avec l'action MASQUERADE(AAAA-BBBB) ADRESSE_IP/24 ip4tnl0 PROTOCOL).
7) Configuration du LAN :
Il reste maintenant à configurer la partie LAN.
Je suis parti sur une configuration à base de bridge (vu que ma Miambox a plusieurs interfaces pour le LAN).
Dans l'exemple, nous noterons les interfaces du LAN par ethY, ethZ, ethW et ethV. Côté IPv4, nous prendrons l'adressage 192.168.0.0/24
et l'adresse de la Miambox sera 192.168.0.254.
Editer le fichier /etc/network/interfaces.d/bridge en remplaçant les interfaces par les vôtres :
Code: | auto br0
iface br0 inet static
description lan
bridge_ports ethY ethZ ethW ethV
bridge_stp on
address 192.168.0.254/24 |
Code: | iface br0 inet6 static
address 2a01:e0a:XXXX:XXX1::1/64 # (noter bien le XXX1 à la place de XXX0 par rapport à avant)
mtu 1700 |
Appliquer les changements d'interface :
Il faut maintenant ajouter le routage NAT. Si vous êtes en mode partage "quart de port", exécutez les règles iptables suivantes :
Code: | iptables -t nat -A POSTROUTING -p icmp -o ip4tnl0 -j MASQUERADE \
--source 192.168.0.0/24 --To-ports AAAA-BBBB
iptables -t nat -A POSTROUTING -p tcp -o ip4tnl0 -j MASQUERADE \
--source 192.168.0.0/24 --To-ports AAAA-BBBB
iptables -t nat -A POSTROUTING -p udp -o ip4tnl0 -j MASQUERADE \
--source 192.168.0.0/24 --To-ports AAAA-BBBB |
Si vous êtes en IPv4 full-stack, exécutez les mêmes commandes en supprimant le "--To-ports AAAA-BBBB".
Note : on pourrait penser que le "To-ports" est sans-effet pour ICMP (vu qu'il n'y a pas de port dans ICMP) mais en fait cela modifie le champs "identification" de l'entête ICMP. Si vous ne respectez pas ceci, certains test de ping marcheront et d'autres non car Free se base sur le champs ID pour router vers le bon abonné.
ATTENTION : les règles iptables tapées sont éphémères (i.e. ne survit pas au reboot), il est conseillé d'utiliser un outil de pare-feu (shorewall, ufw, firewalld, ...), iptables-persistent ou encore des commandes "post-UP" dans /etc/network/interfaces.d/uplink pour faire persister la configuration !
Il ne reste plus qu'à installer un serveur DHCP / RA / DNS pour que le LAN dispose d'une connectivité réseau automatique :
apt install dnsmasq
Ajouter le fichier lan.conf ci-après dans /etc/dnsmasq.d/
Code: | # Interface
interface=br0
listen-address=127.0.0.1,192.168.0.254
bind-interfaces
# DHCP
local=/lan/
DHCP-range=br0,192.168.0.100,192.168.0.200,1h
DHCP-authoritative
# IPv6
enable-ra
ra-param=br0,mtu:1700,high,3600,3600
DHCP-range=::,constructor:br0,ra-names,64,60
Server=2a01:e00::2 |
Redémarrer dnsmasq :
Code: | systemctl restart dnsmasq |
8.) Test de connectivité du LAN
Brancher un poste sur un port du LAN de votre Miambox :
- vérifier qu'il obtient une adresse IPv4 ;
- vérifier les routes IPv4 ;
- vérifier qu'il obtient une adresse IPv6 ;
- vérifier les routes IPv6 ;
- faites un ping en IPv4 vers www.free.fr ;
- faites un ping en IPv6 vers www.free.fr ;
- lancer un navigateur Internet sur www.free.fr (IPv6) et sur www.linuxfr.org (IPv4)
Finalement à cette étape, vos PC du LAN ont une connectivité IPv4 et IPv6 fonctionnelle via votre Miambox. Victoire pour le peuple !
9) Sécurité
Maintenant que votre Miambox est opérationnelle :
- configurez un pare-feu aux petits oignons ;
- mettez un système de mise à jour automatique (unattended-upgrades) ;
- mettez à jour votre noyau régulièrement ;
- faite des tests avec nmap côté WAN pour bien s'assurer qu'aucun port n'est ouvert sur votre box.
10) Debug
En cas de soucis :
- vérifier que les interfaces ethX, ethX.836 et ip4tnl0 sont UP (pensez bien à mettre les interfaces WAN, vlan et tunnel en allow-hotplug dans /etc/network/interfaces.d/*) ;
- vérifier les IPv4 des interfaces ;
- vérifier si l'interface ethX.836 dispose bien de *deux* adresses IPv6 commençant par 2a01:e0a (une dans le préfixe et l'autre pour le tunnel) ;
- vérifier si les interfaces sont en mode routage (dans /proc/sys/net/IPv6/conf/ethX.836/forwarding et /proc/sys/net/IPv4/conf/ip4tnl0/forwarding pour ip4tnl0) ;
- vérifier si la route par défaut IPv4 est présente ;
- vérifier si la route par défaut IPv6 est présente (si non, vérifier que /proc/sys/net/IPv6/conf/ethX.836/accept_ra est bien à 2) ;
- vérifier que l'adresse de relai IPv6 est joignable avec un ping ;
- vérifier les règles iptables pour le NAT quart de port (iptables -t nat -L) ;
- vérifier si une règle de votre pare-feu bloque le trafic ;
- faire une capture réseau (avec tcpdump) et vérifier ce qui sort (est-ce que les connexions IPv4 sortent sur la bonne tranche de port, erreur ICMPv6 "Parameter problem", des messages Router Advertisement passent sur ethX.836, ...).
Voilà ce tutorial est terminé et vous pouvez retourner à une activité normale .
*** Modération *** Topic épinglé *** Modération ***
Curtis Newton
Dernière édition par Ping6 le Dim 30 Mai 2021, 20:46; édité 2 fois
|
|