La Fibre

Datacenter et équipements réseaux => Routeurs => Free Remplacer la Freebox par un routeur => Discussion démarrée par: Ping6 le 29 mai 2021 à 15:19:56

Titre: Tutorial : remplacer la Freebox par une box GNU/Linux
Posté par: Ping6 le 29 mai 2021 à 15:19:56
Bonjour à tous,

Je tiens à faire un petit retour d'expérience sur la mise en place d'une box sous GNU/Linux Debian pour remplacer sa Freebox. Ce tutorial a déjà été posté sur un autre forum mais je me dis que diffuser l'information au plus grand nombre c'est bien. Ce tutorial ne présente que la partie accès à internet. Pour avoir la partie TV et téléphonie il vous faudra de toute manière la Freebox sur un VLAN particulier (835 de mémoire) mais je n'ai pas testé.

Pour ma part, je suis dans un immeuble fibré par Orange et je dispose donc de l'ONU Free (le petit boitier noir fourni par Free).

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 sans l'ONU :/.
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 / serveur PXE 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 Gigabit en USB3 (il me sert d'interface WAN afin de garder les 4 ports de la carte en tant que switch).

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 ports allouée (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
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 :
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 : possible soucis en cas de reboot de l'ONU, voir ma réponse du 30/05 pour la configuration à jour qui utilise DHCPv6 et qui semble ne plus poser de problème.

Editer le fichier /etc/network/interfaces.d/uplink :
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 :
ifreload -a
4) Test de la connectivité IPv6

Faire un ping vers le serveur DNS de Free :
ping -6 -c4 2a01:e00::2
Ajouter au fichier /etc/resolv.conf :
nameserver 2a01:e00::2
Faire une résolution DNS :
dig aaaa +short www.free.fr
Faire un ping IPv6 vers www.free.fr :
ping -6 -c 4 www.free.fr
Faire une requête HTTP :
curl -v -6 www.free.fr
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 ports allouée 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 ;
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 porst allouée ;
telnet XX.YY.ZZ.WW   AAAA    # (premier port de votre tranche de ports)
Sur la Miambox vous devriez avoir une ligne du type :
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 :
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 routage 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) :
  address LOCAL_IPV6_ADDRESS/64    # (n'oubliez pas le /64):
Appliquer les changements d'interface :
ifup ip4tnl0
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 :
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 :
ping -4 -c 4 212.27.40.240
Faire une résolution DNS :
dig +short www.free.fr
Faire un ping IPv4 vers www.free.fr :
ping -4 -c 4 www.free.fr
Faire une requête HTTP :
curl -v -4 www.free.fr
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 :
auto br0
iface br0 inet static
  description lan
  bridge_ports ethY ethZ ethW ethV
  bridge_stp on
  bridge_maxwait 0
  bridge_fd 2
  address 192.168.0.254/24

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 :
ifup br0
Il faut maintenant ajouter le routage NAT. Si vous êtes en mode partage "quart de port", exécutez les règles iptables suivantes :
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, normalement il faudrait juste exécuter les mêmes commandes en supprimant le "--to-ports AAAA-BBBB" (encore une fois je n'ai pas testé).

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/
# 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 :
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 adresses 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 traffic ;
- 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 :).
Titre: Tutorial : remplacer la Freebox par une box GNU/Linux
Posté par: xp25 le 29 mai 2021 à 15:48:22
Bonjour,

Je t'avais déjà fait de la pub ici : https://lafibre.info/free-les-news/tuto-pour-faire-sa-freebox-perso-avec-fibre-et-4rd/msg871308/#msg871308

 8) :P
Titre: Tutorial : remplacer la Freebox par une box GNU/Linux
Posté par: Ping6 le 29 mai 2021 à 15:57:11
Arf :), j'ai cherché dans la mauvaise rubrique.

Sinon il faudrait voir pour fusionner les deux sujets si jamais.
Titre: Tutorial : remplacer la Freebox par une box GNU/Linux
Posté par: Ping6 le 30 mai 2021 à 20:51:28
Comme mentionné sur UF, j'ai un cas bizarre lors d'un arrêt / démarrage de l'ONU : plus de connexion IPv6 au-delà de la passerelle.

J'ai finalement passé l'interface WAN en DHCPv6. Après quelques tests de redémarrage de l'ONU, plus de soucis.

Voici la configuration de ethX.836 :
allow-hotplug ethX.836
auto ethX.836
iface ethX.836 inet6 dhcp
  description wan6
  # Must use box MAC address
  hwaddress ether AA:BB:CC:DD:EE:FF
  # Use higher MTU for IPv4 over IPv6 tunnel
  mtu 1700
  # Adds MAP-E local address
  post-up ip -6 address add LOCAL_IPv6_ADDRESS/128 dev ethX.836
  request_prefix 1
  # Value 2 means accept RA (to get next-hop / routes) and have routing ability
  post-up sysctl -q net.ipv6.conf.ethX/836.accept_ra=2
  # Enable IPv6 routing
  post-up sysctl -q net.ipv6.conf.ethX/836.forwarding=1
Titre: Tutorial : remplacer la Freebox par une box GNU/Linux
Posté par: Fuli10 le 31 mai 2021 à 10:02:19
Bon, y'a plus qu'à s'atteler à se passer de l'ONU et vive les économies de watts....
Titre: Tutorial : remplacer la Freebox par une box GNU/Linux
Posté par: zoc le 31 mai 2021 à 12:11:05
Ce qui n’est à priori pas possible, le SFP+ fournit par Free n’étant à priori (d’après sa data sheet qui est quelque part sur le forum, mais on peut toujours se tromper…) qu’une optique compatible 10G-EPON, le protocole 10G-EPON lui même étant implémenté par ce que tu appelles l’« ONU »…
Titre: Tutorial : remplacer la Freebox par une box GNU/Linux
Posté par: Fuli10 le 31 mai 2021 à 15:20:53
Aucune idée j'avoue.
Pour le moment j'ai l'impression que tout ce qui est parti PLOAM authentification, cela semble faire parti du "GTC" que je traduis plus simplement par le transceiver. Et puis j'imagine que même avec un OS temps réel il est difficile de garantir un timing précis pour l'envoi des messages, et que du coup cela doit être fait en hard par le maître du temps = le transceiver.
A la rigueur il y a peut être une parti plus haut-niveau que je ne maîtrise pas.
Pour le moment je cherche pourquoi il n'y a pas encore de Tx, et je m'oriente plutôt vers ce que j'ai vu par ailleurs des problèmes électrique sur les signaux Tx_disable/TX_fault. J'ai vu qu'apparemment le module dispose de moyen de contrôler ces bits par I2C (byte 93 = 0xF0). Je vais voir du coup pour bypasser en soft ces signaux si c'est bien cela qui empêche le Tx.
Titre: Tutorial : remplacer la Freebox par une box GNU/Linux
Posté par: Fuli10 le 05 juin 2021 à 23:01:18
Bon, je me suis emporté.
Après avoir réussi à connecté le module sur un intel X520, j'ai vu qu'il me remontait l'erreur "Module Low-voltage" & "Laser bias current low" alors que le module mesure un peu plus de 3.2V.... bref peut être un problème de design sur la carte: j'ai lu quelque part que certaine cartes utilisent le 3.3V du PCI pour certains signaux ET génèrent un autre 3.3V à partir d'une autre alim, ce qui fait qu'il pouvait y avoir différence de potentiels entre 2 signaux à 3.3V (chacun par rapport à une autre masse).
J'ai essaye sur un clone de mellanox connect-x 2 sans succès non plus.
Et enfin j'ai testé sur un BCM57810 et là ça marche ! Pas d'erreur au niveau du module.
Par contre strictement rien sur l'interface.
Du coup je vais vérifier que le module est bien configuré en 10Gbps (cela semble le cas), ainsi que l'interface de la carte réseau (ça c'est moins sûr).
Titre: Tutorial : remplacer la Freebox par une box GNU/Linux
Posté par: daamien le 20 août 2021 à 13:14:50
Pour le moment je cherche pourquoi il n'y a pas encore de Tx, et je m'oriente plutôt vers ce que j'ai vu par ailleurs des problèmes électrique sur les signaux Tx_disable/TX_fault. J'ai vu qu'apparemment le module dispose de moyen de contrôler ces bits par I2C (byte 93 = 0xF0). Je vais voir du coup pour bypasser en soft ces signaux si c'est bien cela qui empêche le Tx.

Salut, même symptôme de mon coté, je suis en 10G-EPON sans boitier ONU (d'origine freebox delta), j'ai bien du Rx mais rien en Tx.
J'ai pourtant bien utilisé l'adresse mac de la freebox.
Soit c'est une sécu supplémentaire coté free, soit c'est cette affaire de bits contrôlé par l'ONU, mais là je sèche... !
Titre: Tutorial : remplacer la Freebox par une box GNU/Linux
Posté par: Fuli10 le 20 août 2021 à 14:39:34
Salut, même symptôme de mon coté, je suis en 10G-EPON sans boitier ONU (d'origine freebox delta), j'ai bien du Rx mais rien en Tx.
J'ai pourtant bien utilisé l'adresse mac de la freebox.
Soit c'est une sécu supplémentaire coté free, soit c'est cette affaire de bits contrôlé par l'ONU, mais là je sèche... !

T'arrives à avoir quelques chose avec tcpdump? Pour ma part je ne vois rien. En ajoutant des logs dans le module j'ai l'impression que le PHY ne répond même pas.
Titre: Tutorial : remplacer la Freebox par une box GNU/Linux
Posté par: daamien le 22 août 2021 à 00:11:45
Rien, nada!
Titre: Tutorial : remplacer la Freebox par une box GNU/Linux
Posté par: Niam le 04 novembre 2022 à 23:01:34
Bonjour tout le monde,

J'ai la config suivante : ONU(free)->MC220L->serveur*
*ce que j'appelle serveur : un client léger HP T620 Plus avec une carte Intel i350-T4.
Mon objectif est de remplacer ma freebox mini 4k qui souffle comme pas possible et consomme pas mal de W aussi.

J'ai tenté de configurer le "serveur" avec la config communiquée par Ping6 mais je à l'étape du ping dns free en ipv6.
Ça ne fonctionne tout simplement pas.
J'avoue ne pas être une bête en réseau (je suis plutôt du côté système ;D), même si j'ai les bases et par contre en ipv6 je suis une vraie quiche...

Tout ce que j'ai en tcpdump c'est ceci :
22:34:53.052628 IP6 fe80::207:cbff:fe72:6dd > ff02::1: ICMP6, router advertisement, length 88
   0x0000:  6000 0000 0058 3aff fe80 0000 0000 0000
   0x0010:  0207 cbff fe72 06dd ff02 0000 0000 0000
   0x0020:  0000 0000 0000 0001 8600 e605 80c8 2328
   0x0030:  0000 0e10 0000 0000 0304 5080 0001 5180
   0x0040:  0000 3840 0000 0000 2a01 0e00 000e f836
   0x0050:  d3b6 0000 0000 0000 1803 0008 0000 3840
   0x0060:  0000 0000 0000 0000 0000 0000 0000 0000
   0x0070:  0501 0000 0000 06a4 0101 0007 cb72 06dd

Ainsi que des neighbor solication/advertisement.

J'ai configuré le port "WAN" de mon serveur sur son port intégré, les 4 ports de la carte Intel étant pour le LAN/DMZ. En écrivant ce message je me demande si le souci ne vient pas de là, peut être que la NIC intégrée à des limitations qui font que ça ne fonctionne pas (notamment le routage). Je n'ai pas les connaissances pour le confirmer honnêtement.
À noter que j'utilisais ce serveur sous OPNsense juste avant et ça fonctionnait très bien, donc j'ai un doute que ça soit la source du problème.
J'essaierai demain de faire la même config sur un port de la NIC Intel.

Aussi, je ne pense pas avoir été blacklist ou autre chose par Free car j'ai replug la freebox 2 min après et j'ai récupéré mon accès Internet instantanément.

Voilà je raconte mon expérience mais je voudrais surtout savoir si en 2022 des personnes arrivent à faire fonctionner une machine Linux avec la config donnée par Ping6 ?

Merci pour votre aide.
Niam

Update : même chose sur le port intégré de mon serveur.
Titre: Tutorial : remplacer la Freebox par une box GNU/Linux
Posté par: camousse le 31 décembre 2022 à 14:36:01
Bonjour,

Juste un message pour dire merci à ping6 pour ce tutoriel. Ca fonctionne super bien.
Ma config :


 FreeBox Mini4k (enfin seulement l'ONT de cette dernière)
 A ce que j'ai compris, je suis en ZMD fibré par Orange (AMII a priori)
 IP FullStack
 Un NUC chinois Partaker B5 N3050 avec 2 realtek
 Une carte double SFP chinoise mini pci e intel i350
 Debian 11

Quelques remarques :
  Pour le firewall et le tunnel ipv4, j'ai un peu galéré. Je n'autorisais en ipv6 que l'icmp proto 2,135 et 136 et 143 (packet too large, neighboor solicitation & neighbour adver et multicast), pour que le tunnel fonctionne, il faut aussi router advertissement (134). J'ai aussi du autorise le dhcpv6 en entrée (udp 546)
  Dans ce message https://lafibre.info/remplacer-freebox/remplacement-mini-4k-par-mikrotik-ralentissement-en-tcp-ipv4/msg915015/#msg915015 Johnpi indique que le MTU de l'interface vlan 836 doit etre de 1696 et pas 1700. J'ai laisse 1700
  Pour le accept_ra, j'ai directment fait une ligne accept_ra au lieu de post-up (j'ai laisse les autres post-up)
  Je n'ai pas installer le package ndisc6 (mais il est peut etre utilisé coté réseau local ou pour les tests, partie du tuto que je n'ai pas suivi)
  Le DHCP envoie une adresse ipv6 que je peut pleinement utilisé, mais qui n'est pas mon adresse fullstack. L'adresse fullstack est ajouté avec un post-up. Je trouve ca etrange...
  J'ai mis mon adresse fullstack en post-up, mais j'ai utilise /64. Ca me semble plus logique (vu que les autres reseaux du /60 sont de l'autre coté)
  D'autres tuto indique de configure request_prefix 1 sur le dhcp... je ne sais pas à quoi ca sert
  Est-il possible de recuperer le multi poste de free ? (m3u)

Pour Niam : oui ca fonctionne (en tout cas dans le type de zone auquelle j'appartiens). As tu bien suivi le post qui parlait d'utilise DHCP V6 ? Désactiver le firewall ? Essaye de lancer le client dhcp à la main sur l'interface vlan.

Merci encore
++
camousse
Titre: Tutorial : remplacer la Freebox par une box GNU/Linux
Posté par: vynce le 22 février 2023 à 21:37:50
Bonjour,

Merci pour le tuto !!

Ça fonctionne plutôt bien, mais j'ai galéré sur le MTU.
Une fois configuré en suivant le tuto, certains sites se chargeaient et d'autres non. En faisant un :

curl -v -4 https://www.duckduckgo.com

Il reste bloqué sur la négociation TLS.
En fouillant un peu j'ai pu lire qu'un mauvais MTU pouvait générer ces erreurs. Du coup, j'ai modifié le MTU, et il faut que je mettre le mtu de ethX.836 à 1514, pas au-dessus !

Il faut aussi que je force le MTU sur les clients du LAN en le modifiant avec dnsmasq et là il faut mettre ke MTU à 1474, pas au-dessus !

Est-ce que quelqu'un aurait une explication sur le fonctionnement et ces choix de tailles pour les MTU ?

En tout cas, merci !

@+
Titre: Tutorial : remplacer la Freebox par une box GNU/Linux
Posté par: Ping6 le 25 février 2023 à 07:38:47
Oui, tout à fait le MTU est un soucis sur lequel je suis tombé.

Chez Free, la partie WAN en IPv6 (la partie fibre) peut utiliser les jumbo frames et avoir un MTU de 1700 octets. La partie IPv4, comme elle est en encapsulée dans un tunnel, aura forcément moins (théoriquement MTU IPv6 - taille de l'entête IPv6 d'encapsulation).

Sur ma MiamBox, j'ai configuré le MTU à 1700 pour ethX et ethX.836 :

allow-hotplug ethX
auto ethX

iface ethX inet6 manual
  hwaddress ether AA:BB:CC:DD:EE:FF
  mtu 1700
  ...

allow-hotplug ethX.836
auto ethX.836
iface ethX.836 inet6 dhcp
  description wan6
  hwaddress ether AA:BB:CC:DD:EE:FF
  mtu 1700
  ...

Le tunnel IPv4-in-IPv6 lui est à 1500 :
# IPv4 in IPv6 tunnel
allow-hotplug ip4tnl0
auto ip4tnl0
iface ip4tnl0 inet tunnel
  description wan4
  tunnel-physdev ethX.836
  # Standard MTU (must be less than ethX.836's MTU - 40)
  mtu 1500
  ...

Je n'ai pas ajouté de configuration MTU pour la partie LAN IPv4 / IPv6 avec dnsmasq.

Et tout cela tourne impec' depuis mai 2021.
Titre: Tutorial : remplacer la Freebox par une box GNU/Linux
Posté par: vynce le 25 février 2023 à 20:36:27
Depuis que c'est en place, ça tourne nickel ! Et puis ça chauffe beaucoup moins dans le meuble :)

Pour le MTU c'est bizarre. Je n'ai pas le même type de box (Raspberry Pi3, port ethernet et adaptateur USB-RJ45 pour les deux interfaces) et une IP Full Stack mais à part ça c'est la même chose.

J'ai refait quelques tests en changeant le MTU de l'interface ethX.836.

- En mettant le MTU à 1700 :
allow-hotplug eth1.836
auto eth1.836
iface eth1.836 inet6 dhcp
        description wan6
        hwaddress AA:BB:CC:DD:EE:FF
        mtu 1700
        #mtu 1514
...

Je recharge et je fais un test :

ifreload -a
curl -v -4 https://www.duckduckgo.com
*   Trying 52.142.124.215:443...
* Connected to www.duckduckgo.com (52.142.124.215) port 443 (#0)
* ALPN, offering h2
* ALPN, offering http/1.1
* successfully set certificate verify locations:
*  CAfile: /etc/ssl/certs/ca-certificates.crt
*  CApath: /etc/ssl/certs
* TLSv1.3 (OUT), TLS handshake, Client hello (1):
^C

Ça bloque sur la dernière ligne et ne va pas plus loin. Sur certains sites ça marche très bien (www.google.fr).

Je repasse le MTU à 1514 :

allow-hotplug eth1.836
auto eth1.836
iface eth1.836 inet6 dhcp
        description wan6
        hwaddress AA:BB:CC:DD:EE:FF
        #mtu 1700
        mtu 1514
...

Je relance et test :

ifreload -a
curl -v -4 https://www.duckduckgo.com
*   Trying 52.142.124.215:443...
* Connected to www.duckduckgo.com (52.142.124.215) port 443 (#0)
* ALPN, offering h2
* ALPN, offering http/1.1
* successfully set certificate verify locations:
*  CAfile: /etc/ssl/certs/ca-certificates.crt
*  CApath: /etc/ssl/certs
* TLSv1.3 (OUT), TLS handshake, Client hello (1):
* TLSv1.3 (IN), TLS handshake, Server hello (2):
* TLSv1.3 (IN), TLS handshake, Encrypted Extensions (8):
* TLSv1.3 (IN), TLS handshake, Certificate (11):
* TLSv1.3 (IN), TLS handshake, CERT verify (15):
* TLSv1.3 (IN), TLS handshake, Finished (20):
* TLSv1.3 (OUT), TLS change cipher, Change cipher spec (1):
* TLSv1.3 (OUT), TLS handshake, Finished (20):
* SSL connection using TLSv1.3 / TLS_AES_256_GCM_SHA384
* ALPN, server accepted to use h2
* Server certificate:
*  subject: C=US; ST=Pennsylvania; L=Paoli; O=Duck Duck Go, Inc.; CN=*.duckduckgo.com
*  start date: Oct 20 00:00:00 2022 GMT
*  expire date: Nov 20 23:59:59 2023 GMT
*  subjectAltName: host "www.duckduckgo.com" matched cert's "*.duckduckgo.com"
*  issuer: C=US; O=DigiCert Inc; CN=DigiCert TLS RSA SHA256 2020 CA1
*  SSL certificate verify ok.
* Using HTTP2, server supports multi-use
* Connection state changed (HTTP/2 confirmed)
* Copying HTTP/2 data in stream buffer to connection buffer after upgrade: len=0
* Using Stream ID: 1 (easy handle 0x55b51d0d00)
> GET / HTTP/2
> Host: www.duckduckgo.com
> user-agent: curl/7.74.0
> accept: */*
>
* TLSv1.3 (IN), TLS handshake, Newsession Ticket (4):
* TLSv1.3 (IN), TLS handshake, Newsession Ticket (4):
* old SSL session ID is stale, removing
* Connection state changed (MAX_CONCURRENT_STREAMS == 64)!
< HTTP/2 301
< server: nginx
< date: Sat, 25 Feb 2023 15:16:14 GMT
< content-type: text/html
< content-length: 162
< location: https://duckduckgo.com/
< strict-transport-security: max-age=31536000
< expires: Sun, 25 Feb 2024 15:16:14 GMT
< cache-control: max-age=31536000
<
<html>
<head><title>301 Moved Permanently</title></head>
<body>
<center><h1>301 Moved Permanently</h1></center>
<hr><center>nginx</center>
</body>
</html>
* Connection #0 to host www.duckduckgo.com left intact

Et là ça passe :/
Ça c'est sur la box. Pour les clients du LAN, il faut forcer le MTU grâce à Dnsmasq. Bon par contre, je ne suis pas sûr que tous les équipements le prennent en compte (comme les chromecast). À voir ....

En écrivant, je me demandais si l'interface USB-RJ45 ne posais pas le pb. Je vais tester en inversant les interfaces.

Merci en tout cas, c'est un super tuto ! Le résultat est top !!

Titre: Tutorial : remplacer la Freebox par une box GNU/Linux
Posté par: Ping6 le 25 février 2023 à 23:10:11
J'ai refait quelques tests en changeant le MTU de l'interface ethX.836.

- En mettant le MTU à 1700 :

Le MTU de l'interface du tunnel IPv4-in-IPv6 vaut combien (quand ethX.836 est à 1700) ?

Bien sûr à chaque modification du MTU, il faut recharger les configurations wan6 + tunnel (à base de ifup / ifdown par exemple).

EDIT : je viens de relire. Effectivement il faudrait vérifier si ton cable USB-RJ45 supporte les jumbo frames (pour transporter des MTU plus conséquent).
Titre: Tutorial : remplacer la Freebox par une box GNU/Linux
Posté par: vynce le 26 février 2023 à 10:30:13
C'est vraiment en discutant que les idées viennent et en effet, en permutant les interfaces, je peux passer
les jumbo frames côté Free !
Du coup, je limite mes trames IPv6 à 1500 sur mon LAN car c'est l'interface USB-Ethernet qui est dessus (pas très gênant).

Ça marche nickel !!!!

Comme l'a dit quelqu'un de plus sage avant moi : Victoire pour le peuple !  :)
Titre: Tutorial : remplacer la Freebox par une box GNU/Linux
Posté par: vincentbab le 22 juillet 2023 à 20:04:26
Bonjour,

Merci pour le tuto, ca fonctionne nickel pour remplacer ma mini 4k.

Petite question, quelqu'un a t-il reussi à se passer du MC220L ?
Je dispose d'une carte PCIe avec 2 ports SFP+ (lien amazon (https://www.amazon.fr/10Gtek%C2%AE-82599ES-r%C3%A9seau-Ethernet-X520-DA2/dp/B01DCZCA3O/ref=sr_1_2?__mk_fr_FR=%C3%85M%C3%85%C5%BD%C3%95%C3%91&crid=1A43T9HFSM3WC&keywords=dual+sfp%2B+x520+10g&qid=1690048281&sprefix=dual+sfp%2B+x520+10g%2Caps%2C52&sr=8-2)) mais quand je branche l'ONU directement dedan j'ai un message dans `dmesg` disant que le module n'est pas supporté. Après quelques recherches il me semble qu'il faut une carte qui supporte le 1000BASE-X et pas seulement le 1000BASE-T, c'est bien ça ?
Je ne sais pas si ca peut se régler seulement avec un driver/firmware different ou si electriquement il faut que la carte soit adapté ? Sinon connaissez vous des cartes PCIe qui gèrent le 1000Base-X ? Voir même le 10GBase-X pour brancher directement l'ONU de la Freebox Pro que j'envisage peut être de prendre prochainement ^^

Titre: Tutorial : remplacer la Freebox par une box GNU/Linux
Posté par: hexoseth le 02 septembre 2023 à 13:24:01
Petite question, quelqu'un a t-il reussi à se passer du MC220L ?

Bonjour,

En ajoutant une carte PCI SFP dans un matériel avec pfSense, on pourrait branché l'ONU sur ce port et se passé de la Freebox.
Est-il possible de connecter le câble DAC dans une carte PCI SFP compatible? Afin d'obtenir cette configuration

ONU <----- Câble DAC -----> pfSense

J'ai trouvé la compatibilité des chipset de carte PCI SFP pour FreeBSD (pfSense), mais des infos sur la compatibilité des modules ou câble DAC c'est plus compliqué.

Cordialement