Bug 28473 - IPv6-Stack im Installer defekt
IPv6-Stack im Installer defekt
Status: CLOSED FIXED
Product: UCS
Classification: Unclassified
Component: Network
UCS 3.0
Other Linux
: P1 normal (vote)
: UCS 3.1
Assigned To: Sönke Schwardt-Krummrich
Lukas Walter
: interim-4
Depends on: 29216
Blocks:
  Show dependency treegraph
 
Reported: 2012-09-12 11:12 CEST by Sönke Schwardt-Krummrich
Modified: 2012-12-12 21:10 CET (History)
2 users (show)

See Also:
What kind of report is it?: ---
What type of bug is this?: ---
Who will be affected by this bug?: ---
How will those affected feel about the bug?: ---
User Pain:
Enterprise Customer affected?:
School Customer affected?:
ISV affected?:
Waiting Support:
Flags outvoted (downgraded) after PO Review:
Ticket number:
Bug group (optional): IPv6
Max CVSS v3 score:


Attachments
IPv6 settings (16.58 KB, image/png)
2012-09-12 11:20 CEST, Sönke Schwardt-Krummrich
Details
ipconfig (12.31 KB, image/png)
2012-09-12 11:30 CEST, Sönke Schwardt-Krummrich
Details

Note You need to log in before you can comment on or make changes to this bug.
Description Sönke Schwardt-Krummrich univentionstaff 2012-09-12 11:12:22 CEST
Aktuell ist es mind. mit amd64 nicht möglich, eine Dualstack-Master-Installation durchzuführen. Eine reine IPv6-Installation wurde noch nicht getestet.

IPv4-Adresse: 10.200.18.16/255.255.255.0
IPv6-Adresse: 2001:4dd0:ff00:8c42:ff18::16/80
Gateway: 2001:4dd0:ff00:8c42:ff18::1
DNS-Server: 2001:4dd0:ff00:8c42:ff18::1
(siehe auch Screenshot)

Unser IPv6-Gateway (2001:4dd0:ff00:8c42:ff18::1) ist erreichbar und antwortet auch auf DNS-Anfragen (getestet mit meinem Notebook).

Während der Installation benötigt der Joinvorgang plötzlich SEHR lange. Alle UDM-Aufrufe benötigen sehr viel Zeit. Bei der Untersuchung ist aufgefallen, dass es nicht möglich ist, das IPv6-Gateway anzupingen oder DNS-Anfragen zu stellen.

Anscheinend funktioniert die Neighbour-Discovery nicht. Es wurde per tcpdump auf dem IPv6-Gateway UND auf der joinenden Master-Instanz mitgeschnitten, welcher ICMPv6-Pakete über eth0 wandern. Man kann dabei sehen, dass die Instanz ständig versucht, die MAC-Adresse des Gateways aufzulösen. Der Neighbour-Eintrag wird auch als "INCOMPLETE" angezeigt (Screenshot: ip neigh).
Neighbor solicitation und neighbor advertisement werden von tcpdump sowohl auf dem IPv6-Gateway als auch auf der betroffenen Instanz aufgezeichnet. D.h. die Pakete gehen korrekt hin und her, werden aber nicht in der lokalen Neighbor Tabelle eingetragen.

10:53:23.416425 IP6 2001:4dd0:ff00:8c42:ff18::16 > ff02::1:ff00:16: ICMP6, neighbor solicitation, who has 2001:4dd0:ff00:8c42:ff18::16, length 32
10:53:23.440366 IP6 2001:4dd0:ff00:8c42:ff18::16 > ff02::1:ff00:1: ICMP6, neighbor solicitation, who has ipv6.knut.univention.de, length 32
10:53:23.440396 IP6 ipv6.knut.univention.de > 2001:4dd0:ff00:8c42:ff18::16: ICMP6, neighbor advertisement, tgt is ipv6.knut.univention.de, length 32

Sogar das Anpingen des eigenen, lokalen Interfaces schlägt fehl.
Comment 1 Sönke Schwardt-Krummrich univentionstaff 2012-09-12 11:20:36 CEST
Created attachment 4648 [details]
IPv6 settings
Comment 2 Sönke Schwardt-Krummrich univentionstaff 2012-09-12 11:30:16 CEST
Created attachment 4649 [details]
ipconfig
Comment 3 Sönke Schwardt-Krummrich univentionstaff 2012-09-12 11:35:22 CEST
Man beachte den hohen Wert an dropped RX packets.
Comment 4 Janek Walkenhorst univentionstaff 2012-10-26 14:09:25 CEST
Dies lässt sich reproduzieren:
Während der Installation funktioniert v6 nicht mehr.
Symptom:
 ip -6 route list table local
hat keinen Eintrag für die eigene v6-Adresse obwohl
 ip a
sie als konfiguriert listet.
Im chroot funktioniert
 ifdown eth0
nicht, weil "interface not configured", und
 ifup eth0
funktioniert nicht, weil die Adresse nicht zugewiesen werden kann.
Repariert werden kann es mit
 ip a flush eth0
 ifup eth0
Dann funktioniert wieder alles wie vorher.

Vermutung: Der Installer konfiguriert die Schnittstelle, aber im chroot ist nicht bekannt, dass eth0 konfiguriert ist. Darum wird beim ifdown nichts getan, insbesondere nicht die Adresse entfernt, weshalb ifup fehl schlägt.
(ifdown/ifup wird bei der Installation durch den interfaces.py-UCR-Hook durchgeführt)
Comment 5 Sönke Schwardt-Krummrich univentionstaff 2012-11-13 15:12:48 CET
Während der Installation des Pakets univention-base-files wird versucht, das IPv6-Interface erneut zu konfigurieren. Da die IPv6-Adresse bereits am Interface
vorhanden ist, schlägt ein Befehl im Skript ifup fehl, so dass dieses abbricht und ein halb-konfiguriertes IPv6-Interface übrig bleibt. Wie von Janek beschrieben ist die lokale Routingtabelle defekt.
Workaround wäre "ifconfig $interface down; ifup $interface". Da Probleme in Verbindung mit dem Netinstaller zu erwarten wären, wird stattdessen in
25_install_config_registry.sh die Rekonfiguration von Netz-Interfaces über die
UCR-Variable interfaces/restart/auto=no via --force deaktiviert. Dies sollte keine Defaultwerte beeinflussen. In 95_cleanup.sh wird der forcierte Wert anschließend wieder entfernt.

Vermutete Ursache: 
anderes Verhalten von Kernel 3.2; mit UCS 3.0 ist das Problem nicht aufgetreten.

Nebenänderung: 
neben der base.conf wird jetzt auch die base-ldap.conf und die base-forced.conf von der Installer-Ramdisk in das zu installierende System kopiert.

Für die QA:
IPv6-only-System konfigurieren und nach der Netzconfiguration auf zweites Terminal wechseln und dort die Adresse unseres IPv6-Gateways daueranpingen. Es sollte während der Installation keine Aussetzer geben.

Changelogeintrag wurde erstellt
univention-installer (8.0.33-1) unstable; urgency=low
Comment 6 Felix Botner univentionstaff 2012-11-19 12:12:19 CET
Kann erst sinnvoll getestet werden, wenn Bug #29216 durch ist.
Comment 7 Lukas Walter univentionstaff 2012-11-27 10:13:30 CET
(In reply to comment #5)
> Für die QA:
> IPv6-only-System konfigurieren und nach der Netzconfiguration auf zweites
> Terminal wechseln und dort die Adresse unseres IPv6-Gateways daueranpingen. Es
> sollte während der Installation keine Aussetzer geben.

OK: Funktioniert jetzt.


Changelogeintrag passt,
Verified.
Comment 8 Stefan Gohmann univentionstaff 2012-12-10 22:59:22 CET
Ich habe jetzt zusätzlich noch interfaces/restart/auto für den normalen UCR Layer zurückgesetzt. Ansonsten wird der Wert während der DHCP Konfiguration zwischengespeichert und gesetzt. also

ucr set -force interfaces/restart/auto=no
...
old="$(ucr get interfaces/restart/auto)"
ucr set interfaces/restart/auto=foo

do stuff

ucr set interfaces/restart/auto="$old"
...
ucr unset -force interfaces/restart/auto

Würde das per ucr CLI gemacht, dann würde das vielleicht sogar noch funktionieren, es wird aber IMHO über das Python Interface gemacht.

In der QA sollte nochmal IPv6 und System Setup getestet werden.
Comment 9 Lukas Walter univentionstaff 2012-12-12 11:07:23 CET
Im Installer funktioniert es, daher VERIFIED.

Nach der Installation durch das System Setup hat auf einem DC Master die DNS/RDNS Auflösung für IPv6 jedoch nicht funktioniert -> ausgelagert nach Bug #29769.
Comment 10 Stefan Gohmann univentionstaff 2012-12-12 21:10:08 CET
UCS 3.1-0 has been released: 
 http://forum.univention.de/viewtopic.php?f=54&t=2125

If this error occurs again, please use "Clone This Bug".