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 route
Shows:
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 host
in 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 route
wider: 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: link
und 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_ra
Kerneloption auf 2 setzen, wodurch das Verhalten außer Kraft gesetzt wird.
Lesen Sie diesen Blog-Artikelfür weitere Informationen.