Hallo,
in unserem Unternehmen verwenden wir Laptops, die häufig an wechselnden Standorten eingesetzt werden. Intern haben die Geräte nur Fast-Ethernet. Etwas schneller können wir uns per USB(2.0 )-Gigabit-Ethernet-Adapter an schnellere Intranets hängen. Nachdem wir festgestellt haben, daß die zum Standardumfang der Distribution gehörenden Netzwerkprogramme von Ubuntu im Prinzip immer nur die Bindung einer physikalischen an eine logische bzw. virtuelle Schnittstelle unterstützen, sind diese für uns nicht optimal geeignet. Was wir verwirklichen wollen, ist eine Art "plug-and-play".
Wir haben deshalb alle nicht nativen Bestandteile des Debian-Netzwerkmanagements "deimplementiert", arbeiten also nur noch mit /etc/network/interfaces, etc/resolv.conf und einigen Hardware- und Netzwerkerkennungstools, die für Ubuntu verfügbar sind und haben mittlerweile einen Entwicklungsstand erreicht, der wie folgt FUNKTIONIERT:
1. Beim Hochfahren (oder nach Anstecken eines USB-Adapters) werden alle vorhandenen LAN oder WLAN Adapter physikalisch erkannt (→ hwinfo).
2. Der Benutzer kann einzelne Adapter priorisieren, z.B. bei Vorhandensein eines Fast- und eines GBit-Ethernet-Adapters lieber den Gigabit-Adapter benutzen.
3. Die Prioritätenvergabe erfolgt z.Z. rein manuell, d.h. dem Nutzer muß bekannt sein, wie schnell sein Adapter ist.
4. Sind dem System alle Adapter bekannt, erfolgt keine Nachfrage nach der Priorität sondern es wird der letzte bekannte Prioritätenindex verwendet. Der Nutzer kann diesen allerdings jederzeit manuell ändern und das Netz neu starten.
5. Eine Prüfung auf eingestecktes Kabel bei LAN-Adaptern bzw. irgendein vorhandenes WLAN bei WLAN-Adaptern stellt sicher, daß nur "potentiell verbindbare" Adapter an Netze zu binden versucht werden und das System seine Bindungsversuche nicht auf kabellose Adapter erstreckt oder WLAN-Verbindungen versucht, obwohl Funkstille herrscht.
6. Eine weitere Grundeinstellung erlaubt z.B. beim Vorhandensein von zwei (gleichschnellen) Adaptern zu wählen, ob ggf. zwei Netze seriell aufgeschaltet werden (Adapter 1 wird z.B. eth0 mit Anbindung an Netz 1, Adapter 2 wird eth1 mit Netz2) oder nur auf die Schnittstelle mit der höchsten Priorität aufgeschaltet wird (Adapter1 mit höherer Priorität an eth0 und Netz1 an eth0, Netz2 an eth0:1).
7. Eine weitere Grundeinstellung erlaubt zum Beispiel WLAN-Adapter nicht zu benutzen, wenn ein angeschlossenes Kabel entdeckt wird (Priorisierung LAN vor WLAN).
8. Alle bekannten Netze (für LAN oder WLAN) erhalten ebenfalls einen (jederzeit änderbaren) Prioritätsindex. Z.B. haben die Netze in der Firma eine höhere Priorität als die bei den einzelnen Kollegen daheim. Der Scan nach bekannten Netzen erfolgt sehr schnell und gefundene Netze werden aufgeschaltet.
9. Sind Adapter physikalisch vorhanden und ein Kabelanschluss positiv gecheckt bzw. beim Scan ein WLAN-vorhanden aber KEIN bekanntes Netz entdeckt worden, wird eben bei Kabel mittels DHCP und bei WLAN ein Verbindungsversuch per DHCP ohne jedwede Verschlüsselung als letzter Versuch unternommen.
Mittlerweile funktioniert alles bereits sehr zufriedenstellend und wir arbeiten an einem graphischen Interface für die Nutzer. Eigentlich ein eierlegendes Wollmilchschwein.
Nun wollten wir gern noch als I-Tüpfelchen eine "automatische" Prioritätenbestimmung (mindestens) der LAN-Adapter einbauen. Dummerweise kennen wir keine Möglichkeit, die Geschwindigkeit eines Adapters zu prüfen, bevor dieser an ein Netz gebunden ist. Hardware-Erkennungsprogramme wie hwinfo liefern zwar für USB-Adapter Infos wie "480 MBit" aber für per PCI angebundene Ethernet-Adapter scheint es keine Möglichkeit zu geben, irgendwie herauszufinden oder zu testen, ob es sich um ein 10Mbit-, 100Mbit- oder 1000Mbit-Hardwarebauteil handelt.
Natürlich könnten wir versuchen, über irgendwelche Datenbanken auf Grund des verwendeten Treibers und/oder der Gerätebezeichnung Rückschlüsse zu ziehen. Vielleicht gibt es aber auch eine elegante andere Lösung.
Kann jemand helfen?