Archiv/Guessnet

Archivierte Anleitung

Dieser Artikel wurde archiviert. Das bedeutet, dass er nicht mehr auf Richtigkeit überprüft oder anderweitig gepflegt wird. Der Inhalt wurde für keine aktuell unterstützte Ubuntu-Version getestet. Wenn du Gründe für eine Wiederherstellung siehst, melde dich bitte in der Diskussion zum Artikel. Bis dahin bleibt die Seite für weitere Änderungen gesperrt.

Artikel für fortgeschrittene Anwender

Dieser Artikel erfordert mehr Erfahrung im Umgang mit Linux und ist daher nur für fortgeschrittene Benutzer gedacht.

Zum Verständnis dieses Artikels sind folgende Seiten hilfreich:

  1. Installation von Programmen

  2. Einen Editor öffnen

  3. Aufbau der /etc/network/interfaces

  4. Ein Terminal öffnen

Inhaltsverzeichnis
  1. Installation
  2. Verkabelte Netzwerke - guessnet/ifplugd
  3. Wireless LAN: wpa_supplicant als Roaming D...
    1. Ohne guessnet
    2. Mit guessnet
  4. Routing-Probleme verhindern
  5. Problembehandlung
  6. Links

Guessnet 🇬🇧 ist ein kleines Hilfsprogramm, dass in Kombination mit anderen Hilfsprogrammen wie ifplugd und wpa-supplicant die Konfiguration der Netzwerkschnittstellen übernimmt, wenn sich ein Rechner, z.B. ein Laptop, zwischen verschiedenen Netzen bewegt.

Vorteile gegenüber dem Network-Manager, der eine ähnliche Funktion erfüllt, sind u.a. die Möglichkeit auch statische IP-Adressen oder gar PPPoE-Verbindungen mit einzubeziehen und die nahtlose Integration in das Debian-Netzwerkmanagement, das auch von Ubuntu verwendet wird. Außerdem benötigt man keine grafische Oberfläche.

Installation

Folgende Pakete müssen auf jeden Fall installiert werden [1]:

Wiki/Vorlagen/Installbutton/button.png mit apturl

Paketliste zum Kopieren:

sudo apt-get install guessnet ifplugd resolvconf 

sudo aptitude install guessnet ifplugd resolvconf 

Verkabelte Netzwerke - guessnet/ifplugd

Als erstes muss ifplugd mitgeteilt werden, welche Schnittstellen überhaupt beobachtet werden sollen. Dazu trägt man in einem Editor[2] mit Root-Rechten diese in die Datei /etc/default/ifplugd ein :

INTERFACES="eth0"

Dann muss die Datei /etc/network/interfaces[3], das Herzstück der Netzwerkkonfiguration angepasst werden [4]. Das Loopback-Interface bleibt, wie es ist:

auto lo
iface lo inet loopback

Nun kommt der neue Abschnitt, der die Kontrolle an Guessnet übergibt:

mapping eth0
        script /usr/sbin/guessnet-ifupdown
        map timeout: 3
        map default: unbekannt

Wenn Guessnet Schwierigkeiten bekommt, das Netz innerhalb von drei Sekunden zu erkennen, muss der Timeout-Wert entsprechend erhöht werden.

Nun kommen beliebig viele Netzwerkdefinitionen. Diese sehen im Großen und Ganzen genauso aus, wie bisher. Allerdings werden die Definitionsblöcke jetzt nicht mehr über den Namen der Schnittstelle (eth0, etc.) unterschieden, sondern bekommen beliebige Namen. Außerdem bekommen sie Teststatements, über die Guessnet ermittelt, welche Beschreibung zur Anwendung kommen soll. auto-Deklarationen sind überflüssig, da sich ifplugd um die Aktivierung der Schnittstelle(n) kümmert.

Hat man bspw. zu Hause feste IP-Adressen und eigene Nameserver, sieht der Abschnitt etwa so aus:

iface zuhause inet static
        address 192.168.1.6
        netmask 255.255.255.0
        gateway 192.168.1.1
        dns-nameservers 192.168.1.1 192.168.1.2
        dns-search home.lan
        test1 peer address 192.168.1.1 mac 12:34:56:78:90:AB source 192.168.1.6
        test2 peer address 192.168.1.5 mac AB:CD:EF:AB:CD:EF

Hierbei überprüft Guessnet das Vorhandensein eines der Rechner 192.168.1.1 und 192.168.1.5 mit der jeweils angegebenen MAC-Adresse im lokalen Netz. Hat einer der Tests Erfolg, geht Guessnet davon aus, dass der Rechner gerade "zuhause" angeschlossen wurde, und weist über den Debian-/Ubuntu-ifupdown-Mechanismus die angegebenen Netzwerkdaten zu. Die dns-Optionen werden von den Programmen und Skripten des Pakets resolvconf verarbeitet, welche daraufhin die Namensauflösung entsprechend umkonfigurieren.

Hinweis:

Die MAC-Adressen der anderen Rechner kann man sehr leicht mit dem Befehl arp -a herausfinden. Evtl. muss man vorher noch ein wenig Datenverkehr zum gewünschten Gerät erzeugen, bspw. mit ping -c 1 RECHNER.

Hinweis:

Manche Geräte machen Probleme, wenn Guessnet seine Tests durchführt, ohne selber eine IP-Adresse zu besitzen. In diesem Fall kann man mit source ip eine IP angeben, die für die Tests benutzt werden soll. Diese sollte natürlich am besten nicht in Gebrauch durch andere Rechner sein, um deren Netzverbindung nicht zu beeinträchtigen. Wenn man keine statische Adresse zur Verfügung hat, sollte man deshalb erst einmal die allgemeine Netzwerkadresse (meist mit '0' am Ende) verwenden.

Für den Fall, dass der Rechner gar nicht verbunden ist, sollte man eine "leere" Konfiguration verwenden, und außerdem fehlt noch die Standardeinstellung unbekannt, falls alle Tests fehlschlagen:

iface keinnetz inet manual
        test missing-cable

iface unbekannt inet dhcp

Wireless LAN: wpa_supplicant als Roaming Daemon

Ohne guessnet

Um dieselbe Wirkung in einem drahtlosen Netzwerk zu erzielen, muss man leider komplett anders vorgehen, da ifplugd nicht mit verschlüsselten Netzen umgehen kann. Zum Glück stellt der wpa-supplicant eine ähnliche Funktionsweise namens "Roaming" bereit.

wpa_supplicant.conf

Hierzu muss man erst eine passende Datei /etc/wpa_supplicant/wpa_supplicant.conf erstellen, wo die Informationen über die bekannten WLAN-Netze hinterlegt werden - wie es im Artikel WLAN/wpa supplicant beschrieben ist. Zusätzlich kann man dort jedem einzelnen Netz ein Attribut id_str zuweisen, womit dann später die verschiedenen Profile unterschieden werden, wie folgender Auszug zeigt:

network={
        ssid="MeinWLAN"
        id_str="wlan-home"
        # sonstige Angaben, z.B. Schlüssel
}

interfaces

Nun muss ein entsprechender Block in der /etc/network/interfaces[5] erstellt bzw. umgeändert werden [4]. Im Gegensatz zur o.a. Kabelkonfiguration mit ifplugd braucht man dieses Mal zwingend ein auto-Statement, damit das WPA-Roaming gleich beim Systemstart mitstartet:

auto eth1
iface eth1 inet manual
        wpa-driver wext
        wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf
        wpa-roam-default-iface unknown-wlan

Wichtig ist, dass der Typ der Schnittstelle auf manual gesetzt wird, denn die Konfiguration wird nicht mehr direkt von ifupdown erledigt, sondern vom wpa-supplicant und seinen Helferprogrammen. Als Treiber sollte der generische Treiber der Wireless Extensions, wext, in den meisten Fällen funktionieren. Die wpa-roam-Zeile gibt einerseits den Befehl überhaupt Roaming durchzuführen und gibt gleichzeitig die Konfigurationsdatei des wpa-supplicant an. wpa-roam-default-iface gibt den Namen des Profils an, der bei Netzen ohne id_str verwendet werden soll.

Die einzelnen Profile werden in benannten Abschnitten festgelegt, wie weiter oben erläutert. test-Statements sind natürlich nicht nötig, da die Identifizierung über die SSID des WLANs stattfindet.

Mit guessnet

Experten-Info:

Wer die Flexibilität der Guessnet-Tests schätzt, (weil er bspw. oft in verschiedenen Netzen verkehrt, die alle "linksys" oder "Fritz!Box-Fon" heißen) der kann zusätzlich Guessnet über den wpa-supplicant ausführen. Hierfür sei auf die Informationen in der Datei /usr/share/doc/wpasupplicant/README.modes.gz verwiesen.

Routing-Probleme verhindern

Leider gibt es keine einfache Möglichkeit Ubuntu herausfinden zu lassen, welche Default-Route verwendet werden soll, falls mehrere davon konfiguriert sind. Wer z.B. an einem verkabelten LAN angeschlossen ist, sich aber auch in Reichweite eines der konfigurierten WLANs befindet, sendet seinen Traffic nur über ein Interfaces, welches zufällig bestimmt wird. Das ist lästig, wenn dies dummerweise gerade das 10MBit-WLAN und nicht das 1GBit-LAN ist.

Um das zu verhindern, kann man sich entweder einen Routing-Daemon installieren (was nicht Thema dieses Artikels ist) oder man deaktiviert zur LAN-Benutzung die WLAN-Schnittstelle.

Problembehandlung

Sollte die automatische Erkennung nicht funktionieren, kann mittels folgendem Befehl eine Debug-Ausgabe zur Fehlersuche erzeugt werden.

guessnet -i --verbose --debug