đ§ RĂ©seau moderne sous linux: 2. Routeur avec networkd
Dans cet article, je vais prĂ©senter rapidement comment vous pouvez faire un routeur minimaliste avec systemdânetworkd et
remplacer totalement ou partiellement votre box internet.
Nous partirons du principe d’une box avec 2 liens :
wanbranchĂ© sur l’ONT ou une box en mode bridge.lanconnectĂ© Ă votre rĂ©seau local.
Nous allons partir sur un approché minimaliste :
- En IPv6 , adresse globale (GUA: préfix 2000::/3) et Lien-local (LLA: préfix fe80::/10) pour les machines cÎté lan.
- pas de pare-feu pour le moment (on verra ça ensuite dans un autre sujet).
- En IPv4 (legacy IP): un NAT tout simple qui converti les addresse locale vers l’internet (massquerade). Uniquement les connections sortante sont concernĂ©s.
Note : configurer un routeur et vĂ©rifier son bon fonctionnement n’est pas simple, Des commandes comme
ip address,ip route,traceroute,curlou encore le logicielwiresharksont trĂšs utile pour vous aider Ă corriger votre configuration.
CÎté Wan
Cela dépend vraiment du FAI
La partie la plus complexe est celle consistant Ă brancher votre routeur et Ă rĂ©cupĂ©rer les ip (v4 et V6) depuis le fournisseur d’accĂšs, la mĂ©thode varie d’un fournisseur d’accĂšs Ă l’autre.
La mĂ©thode varie selon les fournisseurs d’accĂšs :
- Certain fournissent (ou vous donne accĂšs si vous les contactez) Ă un boitier externe ONT qui converti le signal fibre en ethernet.
- D’autre fournissent uniquement des box dont l’ONT est intĂ©grĂ© et dans ce cas prĂ©cis, il n’est pas possible de se dĂ©barrasser de la box, vous pouvez nĂ©anmoins la placer en mode bridge, ce qui vous permet de router avec votre machine.
Il peut ĂȘtre aussi possible de faire fonctionner un ONT diffĂ©rent sur le rĂ©seau, mais cela est un point dĂ©licat que je n’aborderais pas.
La rĂ©cupĂ©ration des IPs diffĂšre, elle aussi entre les fournisseurs d’accĂšs avec diverses mĂ©caniques :
- certain permettent de rĂ©cupĂ©rer les IPs via du DHCP/DHCPv6 d’autre oblige Ă crĂ©er un lien PPPoE, enfin d’autres ne fournissent pas de mĂ©thode standard, il vous faudra donc assigner manuellement toute ou partie des IPsâŠ
- Selon les fournisseurs, il est parfois nĂ©cessaire de configurer des interfaces utilisant des VLAN, chez orange le DHCP passe par le VLAN 832, et chez bouygue le traffic internet est sur le vlan 100 Si vous ĂȘtes Ă©tablis en france, le mieux est de chercher sur le forum lafibre pour trouver la configuration spĂ©cifique Ă votre FAI .
Note : j’omets volontairement la question de la tĂ©lĂ©phonie/tĂ©lĂ©vision de l’Ă©quation. Il est effectivement possible de rĂ©cupĂ©rer ces services dans certain cas.
Base Générique
Dans tous les cas vous allez vous retrouver avec un fichier .network pour l’interface wan  :
# /etc/systemd/network/wan.network
[Match]
Name=wan
[Link]
RequiredForOnline=yes
# Si vous utilisez le DHCP (en tant que client, valable qu'avec certain FAI)
[Network]
DHCP=yes
Dans le cas oĂč vous voulez router en ipv6, vous pouvez ajouter ceci:
# /etc/systemd/wan.network.d/ipv6.conf
[Network]
IPv6Forwarding=yes
# Pour récupÚrer les ipv6 en DHCPv6 (valable qu'avec certains FAI)
LinkLocalAddressing=ipv6
DHCPPrefixDelegation=yes
IPv6AcceptRA=yes
et en ipv4 (legacy IP):
# /etc/systemd/wan.network.d/ipv4.conf
[Network]
IPv4Forwarding=yes
Pour ipv6, il est nĂ©cessaire d’activer le forwarding de façon globale en plus :
# /etc/systemd/networkd.conf.d/router.conf
[Network]
IPv6Forwarding=yes
# Il n'est pas nécessaire de faire pareil en ipv4:
# IPv4Forwarding=yes
La raison est un comportement diffĂ©rent entre ipv6 et ipv4 dans le kernel. Il n’est pas super clair pour moi si cela est un bug ou pas, mais cela rend les choses pas super simple Ă comprendre.
DHCP/DHCPv6
Si vous utilisez du DHCP/DHCPv6, il est probable que la configuration varie beaucoup d’un fournisseur Ă l’autre, par exemple en cherchant sur le forum lafibre, on voit qu’une configuration dhcp pour orange ressemblerait plutĂŽt à ça :
Note : pour orange une configuration supplémentaire pour utiliser une interface sur le VLAN 832 est nécessaire
# /etc/systemd/network/orange.network
[Match]
# orange is wan vlan 832
Name=orange
[DHCPv4]
ClientIdentifier=mac
VendorClassIdentifier=sagem
UserClass=FSVDSL_livebox.Internet.softathome.Livebox3
# A modifier avec des identifiants de connection
SendOption=90:string:\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1a\x09\x00\x00\x05\x58\x01\x03\x41\x01\x0D\x66\x74\x69\x2F\x**\x**\x**\x**\x**\x**\x**\x**\x**\x**\x**\x**\x**\x**\x**\x**\x**\x**\x**\x**\x**\x**\x**\x**\x**\x**\x**\x**\x**\x**\x**\x**\x**\x**\x**\x**\x**\x**\x**\x**\x**\x**\x**\x**\x**\x**\x**\x**
UseHostname=no
UseDNS=no
UseDomains=no
[DHCPv6]
WithoutRA=solicit
UserClass=FSVDSL_livebox.Internet.softathome.livebox4
# A modifier avec des identifiants de connection
SendOption=11:string:\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1a\x09\x00\x00\x05\x58\x01\x03\x41\x01\x0D\x66\x74\x69\x2F\x**\x**\x**\x**\x**\x**\x**\x**\x**\x**\x**\x**\x**\x**\x**\x**\x**\x**\x**\x**\x**\x**\x**\x**\x**\x**\x**\x**\x**\x**\x**\x**\x**\x**\x**\x**\x**\x**\x**\x**\x**\x**\x**\x**\x**\x**\x**\x**
# A modifier avec des identifiants de connection
SendOption=16:string:\x00\x00\x04\x0e\x00\x05\x73\x61\x67\x65\x6d
UseDNS=no
UseNTP=no
[IPv6AcceptRA]
DHCPv6Client=always
UseDNS=no
UseDomains=no
Et une configuration dhcp pour sfr plutÎt à ça:
# /etc/systemd/wan.network.d/sfr.conf
[Link]
# set this to your router mac address
MACAddress=00:00:5E:00:53:00
[DHCPv4]
ClientIdentifier=mac
UseDNS=yes
UseGateway=yes
UseHostname=no
VendorClassIdentifier=neufbox_bypass
[DHCPv6]
DUIDType=link-layer-time
PrefixDelegationHint=::/56
RapidCommit=No
SendOption=16:string:\x00\x00\xa0\x0c\x00\x0e\x6e\x65\x75\x66\x62\x6f\x78\x5f\x62\x79\x70\x61\x73\x73
UseDelegatedPrefix=Yes
WithoutRA=solicit
UseHostname=No
Bref, cette partie est un peu complexe et trĂšs variable d’un fournisseur Ă l’autre et l’on trouve des tonnes de discussion sur le sujet qu’il peut ĂȘtre fastidieux de lire. Je vous conseille selon votre fournisseur d’expĂ©rimenter et si possible de partager (sauf les secrets bien sĂ»r) votre configuration fonctionnelle pour permettre Ă d’autre de s’Ă©viter ces recherches fastidieuses.
CÎté LAN
La partie Lan est beaucoup plus simple Ă configurer dans le sens ou elle ne dĂ©pend pas de fournisseur d’accĂšs. Tout d’abord, nous allons activer mdns (relire la partie 1 pour la configuration systemd-resolved):
# /etc/systemd/network/lan.network
[Match]
Name=lan
[Network]
MulticastDNS=yes
IPv6
En IPv6, c’est relativement facile, il faut dĂ©lĂ©guer un prefix de sous rĂ©seau /64 pour l’interface lan:
# /etc/systemd/lan.network.d/ipv6.conf
[Network]
IPv6SendRA=yes
DHCPPrefixDelegation=yes
IPv6Forwarding=yes
[IPv6SendRA]
# Vous pouvez définir ici explicitement le dns à partager:
DNS=2a13:1001::86:54:11:100
[DHCPPrefixDelegation]
UplinkInterface=wan
SubnetId=0x1
Announce=yes
IPv4 (Legacy IP)
En IPv4 c’est moins cool. Il faut passer du nat et faire du DHCP (en tant que serveur)Â :
# /etc/systemd/lan.network.d/ipv4.conf
[Network]
Address=192.168.1.1/24
DHCPServer=yes
# note: you may want to do masquerade by you firewall rule instead
IPMasquerade=yes
IPv4Forwarding=yes
[DHCPServer]
PoolOffset=0
PoolSize=100
EmitDNS=yes
# Vous pouvez définir ici explicitement le dns à partager:
DNS=86.54.11.100
Conclusion
Avec cette configuration, vous devriez avoir un accÚs internet fonctionnel dans tout votre réseau et la possibilité de communiquer en dualstack (ipv6 et ipv4).
Néanmoins cette configuration à des défauts :
- Pas de pare-feu, les machine (en ipv6 au moins) peuvent donc ĂȘtre accessible depuis l’extĂ©rieur, ce qui n’est pas recommandĂ©.
- La configuration n’est pas conçu pour rendre un serveur accessible depuis l’extĂ©rieur en ipv4 (pas de port-forwarding).
- Pas d’ipv6-mostly : la configuration actuelle est purement en mode double-stack. Il est possible de forcer les chose pour utiliser au maximum ipv6.
J’Ă©tudierai donc ces sujets ainsi que l’installation d’un vpn wireguard dans les prochains articlesâŠ