Systemd-networkd: ipv6 et ipv4

Tags: #<Tag:0x00007f50a3561788> #<Tag:0x00007f50a35615f8>

Bonjour,

Je souhaite utiliser systemd-networkd pour gérer le réseau, malheureusement, dès lors que j’active une IPv6 statique, je me retrouve avec la statique configurée et une dynamique (fournie par ma BOX). Je ne comprends pas d’où ça peut venir, voici la configuration de mon interface :

tee /etc/systemd/network/2-eth0.network <<EOF
[Match]
Name=eth0

[Network]
DHCP=no
LinkLocalAddressing=no

Address=192.168.78.88/24
Gateway=192.168.78.254
DNS=80.67.169.12 80.67.169.40

Address=2a01:aaaa:bbbb:cccc::91/64
Gateway=2a01:aaaa:bbbb:cccc::
DNS=2001:910:800::40 2001:910:800::12
EOF

Pour que ce soit systemd-networkd qui prenne le relais, j’ai désinstallé ce qui, par défaut, gère le réseau :

systemctl unmask systemd-networkd.service systemd-networkd.socket
systemctl enable systemd-networkd systemd-resolved
apt purge ifupdown netbase --autoremove
rm -R /etc/network

NB : la première commande n’est nécessaire que sous Stretch.

Je constate l’état dégradé de mon interface via networkctl status eth0 :

● 169: eth0
       Link File: n/a
    Network File: /etc/systemd/network/2-eth0.network
            Type: ether
           State: degraded (failed)
      HW Address: 00:16:3e:5a:ec:e6
         Address: 192.168.78.88
                  2a01:aaaa:bbbb:cccc::91
                  2a01:aaaa:bbbb:cccc:216:3eff:fe5a:ece6
                  fe80::216:3eff:fe5a:ece6
         Gateway: fe80::86a1:d1ff:fe8b:850e
             DNS: 80.67.169.12
                  80.67.169.40
                  2001:910:800::40
                  2001:910:800::12 

J’affiche alors le journal du service, mais ne trouve rien sur le message présent :

● systemd-networkd.service - Network Service
   Loaded: loaded (/lib/systemd/system/systemd-networkd.service; enabled; vendor preset: enabled)
   Active: active (running) since Sun 2019-12-08 21:11:04 UTC; 2min 3s ago
     Docs: man:systemd-networkd.service(8)
 Main PID: 318 (systemd-network)
   Status: "Processing requests..."
    Tasks: 1 (limit: 4915)
   CGroup: /lxc.payload/modele-stretch/system.slice/systemd-networkd.service
           └─318 /lib/systemd/systemd-networkd

Dec 08 21:11:04 modele-stretch systemd[1]: Starting Network Service...
Dec 08 21:11:04 modele-stretch systemd-networkd[318]: eth0: Gained IPv6LL
Dec 08 21:11:04 modele-stretch systemd-networkd[318]: eth0: Could not start IPv6 Router Discovery: Operation not permitted
Dec 08 21:11:04 modele-stretch systemd-networkd[318]: eth0: Failed
Dec 08 21:11:04 modele-stretch systemd-networkd[318]: Enumeration completed
Dec 08 21:11:04 modele-stretch systemd-networkd[318]: lo: Configured
Dec 08 21:11:04 modele-stretch systemd[1]: Started Network Service.

Du coup je présume que l’erreur est la source de la deuxième IPv6 obtenue en contradiction avec ma configuration, mais n’en suis pas sûr. Est-ce que quelqu’un a quelque chose à me suggérer ?

NB : j’ai modifié les adresses IP volontairement, j’ai bien du réseau une fois ma configuration en place, je voudrais simplement ne plus avoir d’erreur ni de deuxième IPv6.

Je viens de solutionner l’état dégradé en ajoutant IPv6AcceptRA=no dans la section [Network]. Malheureusement j’ai toujours deux adresses IPv6 publiques :

● 193: eth0
       Link File: n/a
    Network File: /etc/systemd/network/2-eth0.network
            Type: ether
           State: routable (configured)
      HW Address: 00:16:3e:5a:ec:e6
         Address: 192.168.78.88
                  2a01:aaaa:bbbb:cccc::91
                  2a01:aaaa:bbbb:cccc:216:3eff:fe5a:ece6
                  fe80::216:3eff:fe5a:ece6
         Gateway: 192.168.78.254
                  2a01:aaaa:bbbb:cccc::
                  fe80::86a1:d1ff:fe8b:850e
             DNS: 80.67.169.12
                  80.67.169.40
                  2001:910:800::40
                  2001:910:800::12

Bonjour,
Je suis loin d’être un spécialiste, mais il serait peut-être envisageable :

  • que ton FAI t’ attribue une plage d’adresses IPv6,
  • et/ou, que tu ais un serveur DHCP toujours actif sur ton installation.

Mais, j’imagine que tu as déjà vérifié tout ça !

J’avais fait une petit démo avec networkd + resolved en ip static, mais la documentation pour le dhcp est abondante :wink:

Bonjour,

Tu as bien l’adresse IPv6 statique configurée avec systemd-networkd

Tu as en plus l’adresse IPv6 en auto-configuration (SLAAC). Cette adresse est auto-configurée par le noyau lorsque un routeur sur le réseau (ta box) envoie des trames NDP RA (cf. https://fr.wikipedia.org/wiki/Neighbor_Discovery_Protocol).

Or, tu as bien précisé IPv6AcceptRA=no (ou false) et tu peux aussi vérifier avec :

sysctl -a | grep accept_ra

Mais pour une raison que j’ignore (bug systemd, noyau ou problème routeur) l’adresse est tout de même configurée en SLAAC.
J’ai le même comportement sur une Debian ou sur une Ubuntu derrière une Freebox. Et je pense avoir essayé tous les paramètres possibles pour sysctl et pour le fichier .network, rien n’y fait…

Et est ce que par hasard net.ipv6.conf.eth0.autoconf est bien à 0 ?
Et net.ipv6.conf.all.autoconf ?

Erratum : en fait j’arrive bien à avoir uniquement l’IPv6 statique et pas de SLAAC.
Dans mon cas, j’ai un fichier sous /etc/sysctl.d qui contient :

# Disable IPv6 autoconf
net.ipv6.conf.all.autoconf = 0
net.ipv6.conf.all.accept_ra = 0
net.ipv6.conf.all.accept_ra_defrtr = 0
net.ipv6.conf.all.accept_ra_pinfo = 0
net.ipv6.conf.default.autoconf = 0
net.ipv6.conf.default.accept_ra = 0
net.ipv6.conf.default.accept_ra_defrtr = 0
net.ipv6.conf.default.accept_ra_pinfo = 0
net.ipv6.conf.eth0.autoconf = 0
net.ipv6.conf.eth0.accept_ra = 0
net.ipv6.conf.eth0.accept_ra_defrtr = 0
net.ipv6.conf.eth0.accept_ra_pinfo = 0

Un fichier /etc/systemd/network/10-default.network qui contient :

[Match]
MACAddress=xx:xx:xx:xx:xx:xx

[Network]
Description=Ethernet interface
DHCP=no
Address=192.168.1.100/24
Gateway=192.168.100.1
IPv6AcceptRA=false
DNS=192.168.100.100
DNS=80.67.169.12
DNS=80.67.169.40
DNS=2a01:xxxx:xxxx:xxxx::100
DNS=2001:910:800::12

# passerelle IPv6 de la box
Gateway=2a01:xxxx:xxxx:xxxx::1

[Address]
Address=2a01:xx:xxxx:xxxx::100/128

# nécessaire pour obtenir la bonne route IPv6
[Route]
Destination=2a01:xx:xxxx:xxxx::1

Et cela à l’air de résister au redémarrage.

EDIT : avec cette configuration la machine n’est plus joignable en IPv6 depuis une autre machine utilisant le me préfixe :confused:

Bon et bien je ne sais pas par quel miracle, mais cela semble être résolu :

● 235: eth0
       Link File: n/a
    Network File: /etc/systemd/network/2-eth0.network
            Type: ether
           State: routable (configured)
      HW Address: 00:16:3e:89:20:d9
         Address: 192.168.78.88
                  2a01:aaaa:bbbb:cccc::::91
                  fe80::216:3eff:fe89:20d9
         Gateway: 192.168.78.254
                  2a01:aaaa:bbbb:cccc::::
             DNS: 80.67.169.12
                  80.67.169.40
                  2001:910:800::40
                  2001:910:800::12

Je marque comme résolu sans pour autant savoir comment résoudre cette bizarrerie…

@Albert
Mon FAI fournit bien de l’IPv6 et bien entendu par le DHCP de la box. Heureusement d’ailleurs parce configurer une IP fixe sur un téléphone n’est pas toujours simple.

@anon70622873
Tu confirme ce que j’avais compris et ça me fait plaisir. Malheureusement comme tu le dis, rien y fait…

@mattotop
J’ai effectivement essayer ça sans le moindre succès…