web-dev-qa-db-fra.com

Route par défaut IPv6 NON définie Netplan Ubuntu 18.04.2 LTS

Je ne parviens pas à configurer la route par défaut à l'aide de netplan sur un système Ubuntu 18.04.2. La route fonctionne lorsqu'elle est explicite ip -6 route add ... des commandes sont émises.

Les extensions de confidentialité ont été désactivées: /etc/sysctl.d/10-ipv6-privacy.conf

net.ipv6.conf.all.use_tempaddr = 0
net.ipv6.conf.default.use_tempaddr = 0
net.ipv6.conf.ens192.use_tempaddr = 0

SLACC et RA ont été désactivés, le transfert IPv4/IPv6 en est un (la machine sert de serveur OpenVPN)

/etc/sysctl.d/10-ipv6-router.conf

net.ipv6.conf.default.autoconf = 0
net.ipv6.conf.all.accept_ra = 0

net.ipv6.conf.all.proxy_ndp = 1

/etc/sysctl.conf

net.ipv4.ip_forward=1
...
net.ipv6.conf.all.forwarding=1

/etc/netplan/01-netcfg.yaml

network:
  version: 2
  renderer: networkd
  ethernets:
    ens18:
      dhcp4: no
      addresses:
        - a.b.c.d/24
      gateway4: a.b.c.e

      dhcp6: no
      accept-ra: no
      addresses:
        - "2001:0db8:0004:4a1a::dead:beef/64"
      gateway6: "2001:0db8:0004::0001"

    ens19:
      dhcp6: no
      accept-ra: no
      addresses:
        - "2001:0db8:0004:4a1a::dead:dead/64"
      gateway6: "2001:0db8:0004::0001"

Cela affecte les adresses à l'interface comme indiqué ci-dessous:

$ ip -6 addr show

2: ens18: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 state UP qlen 1000
    inet6 2001:0db8:0004:4a1a::dead:beef/64 scope global 
       valid_lft forever preferred_lft forever
    inet6 fe80::abcd:efff:fea3:2a03/64 scope link 
       valid_lft forever preferred_lft forever
3: ens19: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 state UP qlen 1000
    inet6 2001:0db8:0004:4a1a::dead:dead/64 scope global 
       valid_lft forever preferred_lft forever
    inet6 fe80::defc:deff:fe98:7c74/64 scope link 
       valid_lft forever preferred_lft forever

Les itinéraires utilisant ip -6 route show

2001:0db8:0004:4a1a::/64 dev ens19 proto kernel metric 256 pref medium
2001:0db8:0004:4a1a::/64 dev ens18 proto kernel metric 256 pref medium

fe80::/64 dev ens19 proto kernel metric 256 pref medium
fe80::/64 dev ens18 proto kernel metric 256 pref medium

Il n'y a aucun itinéraire par défaut configuré et le ping des sites externes ne fonctionne PAS:

$ ping -6 -c3 ipv6.google.com
connect: Network is unreachable

Exécution des deux commandes suivantes:

$ Sudo ip -6 route add 2001:0db8:0004::0001 dev ens18 metric 1
$ Sudo ip -6 route add default via 2001:0db8:0004::0001 dev ens18 metric 1

En cours d'exécution ip -6 route montre:

2001:0db8:4::1 dev ens18 metric 1 pref medium

2001:0db8:4:4a1a::/64 dev ens19 proto kernel metric 256 pref medium
2001:0db8:4:4a1a::/64 dev ens18 proto kernel metric 256 pref medium

fe80::/64 dev ens19 proto kernel metric 256 pref medium
fe80::/64 dev ens18 proto kernel metric 256 pref medium

default via 2001:0db8:4::1 dev ens18 metric 1 pref medium

Un itinéraire par défaut est maintenant configuré et le ping des sites externes fonctionne :

$ ping -6 -c3 ipv6.google.com
PING ipv6.google.com(ord38s18-in-x0e.1e100.net (2607:f8b0:4009:804::200e)) 56 data bytes
64 bytes from ord38s18-in-x0e.1e100.net (2607:f8b0:4009:804::200e): icmp_seq=1 ttl=56 time=23.2 ms
64 bytes from ord38s18-in-x0e.1e100.net (2607:f8b0:4009:804::200e): icmp_seq=2 ttl=56 time=23.2 ms
64 bytes from ord38s18-in-x0e.1e100.net (2607:f8b0:4009:804::200e): icmp_seq=3 ttl=56 time=23.2 ms

--- ipv6.google.com ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2002ms
rtt min/avg/max/mdev = 23.274/23.283/23.293/0.176 ms

Alors, quel est le problème avec la configuration de netplan? Pourquoi les routes IPv6 par défaut ne sont-elles pas configurées?

Modifié après avoir apporté les modifications suggérées par @slangasek:

 ethernets:
    ens18:
     ...

      dhcp6: no
      accept-ra: no
      addresses:
        - "2001:0db8:0004:4a1a::dead:beef/64"

      routes:
        - to: "::/0"
          via: "2001:0db8:0004::1"
          metric: 1
          on-link: true

Cependant, cela ne fonctionne pas . Je reçois des messages comme ens18: Could not set route: No route to Host dans les journaux de journal.

D'après la réponse à https://askubuntu.com/a/101468 , j'ai ajouté l'itinéraire supplémentaire vers le routeur en utilisant scope: link:

  routes:
    - to: "2001:0db8:0004::1/128"
      via: "2001:0db8:0004::1"
      metric: 1
      scope: link
    - to: "::/0"
      via: "2001:0db8:0004::1"
      metric: 1
      on-link: true

Mais, ne fonctionne toujours pas !

2
Sachin Garg

Votre configuration montre que vous avez un réseau local de 2001: 0db8: 0004: 4a1a ::/64 mais vous essayez de configurer une passerelle de 2001: 0db8: 0004 :: 0001 qui ne fait pas partie de ce réseau. Ainsi, networkd refuse d'ajouter une route par défaut via un routeur vers lequel vous n'avez pas de route.

Votre configuration manuelle avec ip route reflète également cela: vous ajoutez d'abord un itinéraire pour l'adresse du routeur, déclarez qu'il est connecté localement à votre Ethernet, puis définissez l'itinéraire par défaut.

Vous devez donc faire l'équivalent avec netplan, qui consiste à déclarer deux entrées dans les routes :, une qui est scope: link et celui qui définit on-link: true:

  addresses:
    - "2001:0db8:0004:4a1a::dead:dead/64"
  routes:
    - to: "2001:0db8:0004::0001/128"
      scope: link
    - to: "::/0"
      via: "2001:0db8:0004::0001"
      on-link: true
3
slangasek