đ§ 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 : 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:
# /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
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âŠ