La ruta predeterminada IPv6 NO está configurada netplan Ubuntu 18.04.2 LTS

La ruta predeterminada IPv6 NO está configurada netplan Ubuntu 18.04.2 LTS

No puedo configurar la ruta predeterminada netplanen un sistema Ubuntu 18.04.2. La ruta funciona cuando ip -6 route add ...se emiten comandos explícitos.

Las extensiones de privacidad han sido deshabilitadas:/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 y RA se han desactivado, el reenvío IPv4/IPv6 es uno (la máquina sirve como servidor 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"

Esto asigna las direcciones a la interfaz como se muestra a continuación:

$ 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

Las rutas que utilizanip -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

HayNoLa ruta predeterminada configurada y hacer ping a sitios externos NO funciona:

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

Ejecutando los siguientes dos comandos:

$ 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

Ahora en ejecución ip -6 routemuestra:

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

Una ruta predeterminada esahoraconfigurado y haciendo ping a sitios externosobras:

$ 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

Entonces, ¿qué hay de malo en la configuración de netplan? ¿Por qué no se configuran las rutas IPv6 predeterminadas?

Editado después de realizar los cambios sugeridos por @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

Sin embargo, esto nonotrabajar. Recibo mensajes como ens18: Could not set route: No route to hosten los registros del diario.

De la respuesta enhttps://askubuntu.com/a/1014683, agregué la ruta adicional al enrutador usando 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

Pero aúnno¡laboral!

Respuesta1

Su configuración muestra que tiene una red local de 2001:0db8:0004:4a1a::/64 pero está intentando configurar una puerta de enlace de 2001:0db8:0004::0001 que no forma parte de esa red. Por lo tanto, networkd se niega a agregar una ruta predeterminada a través de un enrutador al que usted no tiene una ruta.

Su configuración manual ip routetambién refleja esto: primero agrega una ruta para la dirección del enrutador, declara que está conectado localmente a su Ethernet y luego configura la ruta predeterminada.

Entonces debes hacer el equivalente con netplan, que es declarar dos entradas en rutas:, una que sea scope: linky otra que establezca 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

Respuesta2

network:
  version: 2
  renderer: networkd
  ethernets:
    ens19:
      dhcp6: no
      accept-ra: no
      addresses: ["2001:0db8:0004:4a1a::dead:dead/64"]
      gateway6: "2001:0db8:0004::0001"
      routes:
         - to: "2001:0db8:0004::0001/128"
           scope: link

Esto funciona para mí al momento de escribir este artículo en Ubuntu 18.04.4 LTS (usando diferentes bloques de red pero probados)

Respuesta3

Me acabo de encontrar con este problema. La causa real está escrita directamente en /etc/sysctl.conf

# Uncomment the next line to enable packet forwarding for IPv6
#  Enabling this option disables Stateless Address Autoconfiguration
#  based on Router Advertisements for this host
#net.ipv6.conf.all.forwarding=1

Cuando el reenvío de IPv6 está deshabilitado, el host no escuchará los anuncios del enrutador, que es como generalmente se determina la ruta predeterminada. Por lo tanto, debe agregar manualmente la ruta predeterminada (y los servidores DNS y cualquier otra cosa que obtenga de RA) o configurar la accept_raopción del kernel en 2, que anula el comportamiento.

Ver este artículo de blogpara más información.

información relacionada