IPv6-Standardroute wird NICHT festgelegt Netplan Ubuntu 18.04.2 LTS

IPv6-Standardroute wird NICHT festgelegt Netplan Ubuntu 18.04.2 LTS

Ich kann die Standardroute auf einem Ubuntu 18.04.2-System nicht konfigurieren netplan. Die Route funktioniert, wenn explizite ip -6 route add ...Befehle ausgegeben werden.

Datenschutzerweiterungen wurden deaktiviert:/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 und RA wurden deaktiviert, IPv4/IPv6-Weiterleitung ist eine davon (Maschine dient als OpenVPN-Server)

/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"

Dadurch werden der Schnittstelle die Adressen wie unten gezeigt zugewiesen:

$ 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

Die Routen mitip -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

Es gibtNEINStandardroute konfiguriert und das Pingen externer Sites funktioniert NICHT:

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

Ausführen der folgenden beiden Befehle:

$ 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

Derzeit laufende ip -6 routeShows:

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

Eine Standardroute istJetztkonfiguriert und pingt externe SitesWerke:

$ 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

Was ist also falsch an der Netplan-Konfiguration? Warum werden die Standard-IPv6-Routen nicht konfiguriert?

Bearbeitet nach Durchführung der von @slangasek vorgeschlagenen Änderungen:

 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

Dies bedeutet jedochnichtArbeit. Ich bekomme Nachrichten wie ens18: Could not set route: No route to hostin den Journalprotokollen.

Aus der Antwort beihttps://askubuntu.com/a/1014683, ich habe die zusätzliche Route zum Router hinzugefügt mit 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

Aber dennochnichtArbeiten!

Antwort1

Ihre Konfiguration zeigt, dass Sie ein lokales Netzwerk von 2001:0db8:0004:4a1a::/64 haben, aber Sie versuchen, ein Gateway von 2001:0db8:0004::0001 zu konfigurieren, das nicht Teil dieses Netzwerks ist. Daher weigert sich networkd, eine Standardroute über einen Router hinzuzufügen, zu dem Sie keine Route haben.

Dies spiegelt sich auch in Ihrer manuellen Konfiguration ip routewider: Sie fügen zunächst eine Route für die Adresse des Routers hinzu, geben an, dass dieser lokal mit Ihrem Ethernet verbunden ist, und legen anschließend die Standardroute fest.

Sie müssen also mit netplan das Äquivalent tun, d. h. zwei Einträge in routes: deklarieren, einen, der ist, scope: linkund einen, der festlegt 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

Antwort2

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

Zum Zeitpunkt des Schreibens dieses Artikels funktioniert dies bei mir unter Ubuntu 18.04.4 LTS (mit verschiedenen Netblocks, aber getestet).

Antwort3

Ich bin gerade auf dieses Problem gestoßen. Die eigentliche Ursache steht direkt in /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

Wenn die IPv6-Weiterleitung deaktiviert ist, hört der Host nicht auf Router-Anzeigen, wodurch normalerweise die Standardroute bestimmt wird. Daher müssen Sie die Standardroute (und DNS-Server und alles andere, was Sie aus dem RA erhalten haben) manuell hinzufügen oder die accept_raKerneloption auf 2 setzen, wodurch das Verhalten außer Kraft gesetzt wird.

Lesen Sie diesen Blog-Artikelfür weitere Informationen.

verwandte Informationen