Bug 28467 - Fehlerhafte zufällige Zeroconf/APIPA-IP-Adresse
Fehlerhafte zufällige Zeroconf/APIPA-IP-Adresse
Status: CLOSED FIXED
Product: UCS
Classification: Unclassified
Component: UCS Installer
UCS 3.0
Other Linux
: P5 normal (vote)
: UCS 3.1
Assigned To: Felix Botner
Stefan Gohmann
: interim-2
Depends on:
Blocks: 28468
  Show dependency treegraph
 
Reported: 2012-09-11 16:13 CEST by Sönke Schwardt-Krummrich
Modified: 2014-09-12 18:59 CEST (History)
1 user (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):
Max CVSS v3 score:


Attachments

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-11 16:13:18 CEST
In univention-installer/sbin/univention-installer-network-startup wird versucht, eine zufällige Zeroconf-Adresse zu erzeugen:

	r1=$((RANDOM % 255))
	r2=$((RANDOM % 255))
	eval $interface\_ip="169.254.$r1.$r2"

Hier gibt es mehrere Probleme:
r1 und r2 sind im Schnitt bei jedem 65025. Fall beide 0 und ergeben damit das Subnetz selbst: 169.254.0.0

Zudem dürfen die ersten 256 IP-Adressen gar nicht automatisch gewählt werden:

"""Wenn ein Rechner eine Link-Local-IP-Adresse konfigurieren will, wählt er mit Hilfe eines Zufallszahlengenerators eine IP-Adresse zwischen 169.254.1.0 und 169.254.254.255 aus. Die ersten 256 und die letzten 256 Adressen sind von der IANA für zukünftige Anwendungen reserviert und dürfen unter keinen Umständen ausgewählt werden. Auch muss bei der Auswahl der IP-Adresse rechnerspezifische Information einfließen, wie etwa die MAC-Adresse der Netzwerkschnittstelle, um sicherzustellen, dass – soweit möglich – jedes Mal dieselbe IP-Adresse generiert wird (sie wird damit also pseudozufällig gewählt)."""
Quelle: http://de.wikipedia.org/wiki/APIPA

Eine Konflikterkennung findet auch nicht statt. Ggf. haben somit zwei Systeme die gleiche IP-Adresse.
Comment 1 Sönke Schwardt-Krummrich univentionstaff 2012-09-11 16:25:59 CEST
Bitte in dem Zusammenhang auch versuchen, die ganzen "eval" statements zu reduzieren/entfernen. Da die bash schon verwendet wird, kann dafür das Konstrukt ${!var} verwendet werden.
Comment 2 Felix Botner univentionstaff 2012-10-04 16:39:36 CEST
(a) RANDOM r1 r2

r1 wird nun aus $((RANDOM % 254 + 1)) (also eine Zahl zw. 1 und 254) ermittelt
r2 wie bisher zw 0 und 254
Eine Konflikterkennung findet nicht statt

(b) eval

eval wurde durch ${!var} ersetzt bzw. entfernt.

Changelog nicht notwendig, da diese Änderungen am Script erst zu 3.1 kamen.
Comment 3 Stefan Gohmann univentionstaff 2012-10-16 10:12:51 CEST
(In reply to comment #2)
> (a) RANDOM r1 r2
> 
> r1 wird nun aus $((RANDOM % 254 + 1)) (also eine Zahl zw. 1 und 254) ermittelt
> r2 wie bisher zw 0 und 254
> Eine Konflikterkennung findet nicht statt
> 
> (b) eval
> 
> eval wurde durch ${!var} ersetzt bzw. entfernt.
> 
> Changelog nicht notwendig, da diese Änderungen am Script erst zu 3.1 kamen.

Es gibt noch eine solche Berechnung in installer/modules/70_net.py. Die müsste auch noch angepasst werden.
Comment 4 Felix Botner univentionstaff 2012-10-16 11:07:48 CEST
ist behoben
Comment 5 Stefan Gohmann univentionstaff 2012-10-16 11:57:10 CEST
OK, eine Anpassung fehlt noch, es müsste eine /16er Adresse sein, also Class B. Aktuell wird Class C verwendet:
 http://tools.ietf.org/html/rfc3927
Comment 6 Felix Botner univentionstaff 2012-10-16 13:54:57 CEST
ok, in 

univention-installer/installer/modules/70_net.py
univention-installer/sbin/univention-installer-network-startup

wird nun die Netzmaske 255.255.0.0 verwendet.
Comment 7 Stefan Gohmann univentionstaff 2012-10-16 15:06:54 CEST
OK
Comment 8 Stefan Gohmann univentionstaff 2012-12-12 21:08:21 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".