Bonjour,
Il y a déjà pas mal de tutoriels sur ce forum des différentes manières de se passer de livebox. J’en ai utilisé certaines pendant pas mal de temps, mais je passe progressivement ma gestion du réseau au module de systemd : networkd. J’ai réussi à avoir de l’ipv4 et de l’ipv6, de la délégation d’ipv6 sur le réseau interne. Attention, cette configuration est possible sur des distributions récentes, comme Debian 13 (Trixie). On a des prérequis sur les versions de Systemd et nftables.
La première chose qu’on va faire, c’est d’ajouter le vlan 832 sur l’interface connectée au modem / ont. Je considère que l’interface connectée s’appelle "wan". On créé un fichier /etc/systemd/network/orange.netdev (j’ai remplacé l’adresse MAC par celle de la livebox) :
[NetDev]
Name=orange
Kind=vlan
MACAddress=F0:82:61:xx:xx:xx
[VLAN]
Id=832Ensuite, il faut demander à l’interface wan de prendre en compte ce vlan. Pour ça, on ajoute / modifie le fichier /etc/systemd/network/wan.network :
[Network]
VLAN=orangeOn peut maintenant configurer l’interface orange, via le fichier /etc/systemd/network/orange.network :
[Match]
Name=orange
[Link]
RequiredForOnline=yes
[Network]
Description=Orange
IPv4Forwarding=yes
IPv6Forwarding=yes
IPMasquerade=ipv4
LinkLocalAddressing=ipv6
DHCP=yes
IPv6AcceptRA=yes
DHCPPrefixDelegation=yes
[DHCPv4]
ClientIdentifier=mac
VendorClassIdentifier=sagem
UserClass=FSVDSL_livebox.Internet.softathome.Livebox3
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
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**
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
[DHCPPrefixDelegation]
SubnetId=0x1
UplinkInterface=:self
Announce=noPour les options 11 et 90, il faut évidemment remplacer les ** par les valeurs de votre nom d’utilisateur fti/ converti en hexadécimal. Voir sur d’autres sujets dans le forum, il y a des outils pour le faire.
On va demander à faire de la délégation ipv6 sur l’interface interne. Je considère qu’elle s’appelle "lan". Donc on modifie /etc/systemd/network/lan.network :
[Link]
RequiredForOnline=no
[Network]
DHCPServer=yes
DHCPPrefixDelegation=yes
IPv6SendRA=yes
IPv6AcceptRA=no
[Address]
Address=192.168.100.1/24
[DHCPServer]
PoolSize=30
EmitRouter=yes
EmitTimezone=yes
Timezone=Europe/Paris
[DHCPPrefixDelegation]
SubnetId=0x20
Announce=yesComme au dessus, vous pouvez modifier / enlever le SubnetId. Attention, il y a aussi la conf ici pour que networkd soit serveur dhcpv4 (en plus de la délégation ipv6).
Il semble y avoir un bug avec le forwarding IPv6 qui fait qu’on doit l’ajouter dans le fichier /etc/systemd/networkd.conf :
[Network]
IPv6Forwarding=yesPour terminer, on configure le NAT via nftables. Attention, ça remplace iptables, faites attention si vous avez déjà des règles de pare-feu. Voici un fichier simple qui devrait fonctionner (à augmenter avec vos besoins) :
#!/usr/sbin/nft -f
flush ruleset
table inet filter {
chain orange {
# dhcpv4
ip protocol udp udp dport { 68 } ct state new accept
# dhcpv6
# allow dhcpv6
ip6 saddr fe80::/64 udp dport dhcpv6-client accept
ip6 saddr fe80::/64 tcp dport dhcpv6-client accept
}
chain lan {
# dhcp
ip protocol tcp tcp dport { 67 } ct state new accept
ip protocol udp udp dport { 67 } ct state new accept
}
chain input {
type filter hook input priority 0;
# accept any localhost traffic
iif lo accept
# accept traffic originated from us
ct state established,related accept
ct state invalid drop
# activate the following line to accept common local services
ip saddr 127.0.0.1 accept
ip6 saddr ::1 accept
# allow icmp
ip protocol icmp icmp type { echo-request } accept
ip6 nexthdr ipv6-icmp icmpv6 type { nd-neighbor-solicit, nd-neighbor-advert, nd-router-advert, destination-unreachable, packet-too-big, mld-listener-query, mld-listener-report, mld-listener-reduction, echo-request, echo-reply } accept
iifname lan jump lan
iifname orange jump orange
# drop any other traffic
counter reject with icmpx type port-unreachable
}
chain forward { # we let everything throught
type filter hook forward priority 0; policy drop;
# allow icmp
ip6 nexthdr ipv6-icmp icmpv6 type { destination-unreachable, packet-too-big, echo-request, echo-reply } accept
# accept traffic originated from us
ct state established,related accept
ct state invalid drop
meta iifname . meta oifname { lan . orange } counter accept
}
chain output {
type filter hook output priority 0;
accept
}
chain postrouting {
type filter hook postrouting priority -150; policy accept;
}
}
table ip nat {
chain prerouting {
type nat hook prerouting priority 0;
}
chain output {
type nat hook output priority 0;
}
chain postrouting {
type nat hook postrouting priority 0;
ip saddr 192.168.100.0/24 oifname "orange" counter masquerade
}
}
table netdev filter
flush table netdev filter
table netdev filter {
chain egress {
type filter hook egress device wan priority filter; policy accept;
vlan id 832 udp dport 547 vlan pcp set 6 ip6 dscp set cs6 counter comment "Set QoS for DHCPv6 packets"
vlan id 832 udp dport 67 vlan pcp set 6 ip dscp set cs6 counter comment "Set QoS for DHCPv4 packets"
vlan id 832 icmpv6 type { nd-router-solicit, nd-neighbor-solicit, nd-neighbor-advert } vlan pcp set 6 ip6 dscp set cs6 counter comment "Set QoS for ICMPv6 packets"
vlan id 832 vlan type arp vlan pcp set 6 counter comment "Set QoS for ARP packets"
}
}Normalement, avec
systemctl restart nftables.service puis un
systemctl restart systemd-networkd.service vous devriez avoir l’ipv4 et l’ipv6 sur l’interface orange, et les routes pour l’ipv6 et l’ipv4. Vous pouvez remplacer le SubnetId par une autre valeur. Je l’ai fixée pour que les sous-réseaux soient constants après des redémarrage (j’ai plusieurs vlan sur le réseau interne).
Merci à basilix et mastah pour le tuto sur le filtre des raw sockets :
https://lafibre.info/remplacer-livebox/filtrer-les-raw-socket-avec-nftables/ .