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. 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=832
EgressQOSMaps=1-0 0-6 6-6
Ensuite, 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=orange
On peut maintenant configurer l’interface orange, via le fichier /etc/systemd/network/orange.network :
[Match]
Name=orange
[Link]
RequiredForOnline=yes
[Network]
Description=Orange
IPForward=yes
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=no
Pour 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.
Normalement, avec un networkctl reload 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).
Enfin, 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=yes
Comme 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).
Pour 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;
oifname "orange" counter meta priority set 0:1
oifname "orange" ip protocol icmp counter meta priority set 0:6
oifname "orange" ip protocol igmp counter meta priority set 0:6
oifname "orange" udp dport 67 counter meta priority set 0:6
oifname "orange" udp dport 547 counter meta priority set 0:6
oifname "orange" ip protocol icmpv6 counter meta priority set 0:6
}
}
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
}
}