Stefan's Weblog Blog über alle möglichen Dinge rund um den Computer

21Jun/070

Konfiguration von verschiedenen WLAN-Zugängen

Konfiguration von verschiedenen WLAN-Zugängen unter (K)Ubuntu Feisty Fawn

Ich wollte meinen Laptop so konfigurieren, dass folgende Eigenschaften erfüllt werden:

  • automatisches Starten der erforderlichen Netzwerkarten,
  • automatisches Suchen eines LANs oder WLANs
  • automatisches Verbinden nach Priorität (wenn mehrere bekannte WLANs an einem Ort verfügbar)
  • automatisches Verbinden eines WLANs, wenn WLAN in der Näher
  • und Berücksichtigung von LAN-Netzwerken, wenn Kabel angeschlossen,
  • außerdem sollte eine Verbindung zu einem VPN-Netzwerk möglich sein.

Als erstes habe ich das mitgelieferte Tool KNetworkmanager ausprobiert. Laut Anleitung soll es möglich sein, sich über ein grafisches Frontend in verschiedene LAN- und WLAN-Netzwerke einzuwählen. Bei mir trat nun das Problem auf, sobald eine Verschlüsselung oder Passwort für den Zugang verlangt wurde, brach der Networkmanager die Verbindung ab. Man konnte im Ladebalken genau verfolgen, wann es soweit war und zwar genau an dem Punkt als der Rechner versuchte eine IP-Adresse per DHCP zu bekommen. Daher versuchte ich das ganze nochmal mit einer statischen IP, hatte aber den gleichen Erfolg, nämlich kein Zugang zum Netz.
Die einzige Möglichkeit mit dem KNetworkmanager einen Zugang zu einem WLAN-Netzwerk zu erhalten funktionierte nur, wenn das Netzwerk keine Verschlüsselung und kein Passwort verlangte. Leider ist das aus Sicherheitsgründen nicht akzeptabel.
Deshalb begab ich mich in den Weiten des WWW auf die Suche nach eine Lösung. Zuerst stieß ich dabei auf die Lösung, die /etc/network/interfaces zu bearbeiten.
Das Problem war dabei nur, dass ich bei jedem Wechsel in ein anderes Netz, die Datei an die erforderlichen Gegebenheiten anpassen musste. Außerdem erhielt man keinen Zugang zuWPK-, und VPN-Netzwerken.

Alternative 1

:!: Die Alternative fordert nur einen geringen Konfigurationsaufwand und wenig Hintergrundwissen. Sie ist jedoch im Funktionsumfang eingeschränkt :!:

auto lo
iface lo inet loopback

auto eth0
iface eth0 inet dhcp

#auto eth1
#iface eth1 inet static
#wireless-essid WLAN
#address xxx.xxx.xxx.xxx
#netmask xxxx.xxx.xxx.xxx
#gateway xxx.xxx.xxx.xxx

iface eth1 inet dhcp
wireless-essid Name
wireless-key 1111111111 open

Erläuterung der einzelnen Passagen

auto eth0
iface eth0 inet dhcp

:arrow: Startet beim Booten des Rechners automatisch die eth0-Karte, bezieht eine IP-Adresse vom DHCP-Server und stellt eine Verbindung zum Netzwerk her.

#auto eth1
#iface eth1 inet static
#wireless-essid WLAN
#address xxx.xxx.xxx.xxx
#netmask xxxx.xxx.xxx.xxx
#gateway xxx.xxx.xxx.xxx

:arrow: Beim einem Wechsel in ein anderes Netzwerk mit fester IP-Adresse muss die Konfiguration abgeändert werden, d.h. die # entfernen. Es können auch beide Einstellungen in der gleichen Datei gespeichert werden, dann kann mit den Befehlen sudo ifdown eth0 und sudo ifup eth1 die jeweilige Netzwerkkarte de- bzw. aktiviert werden.

iface eth1 inet dhcp
wireless-essid Name
wireless-key 1111111111 open

:arrow: Die WLAN-Netzwerkkarte eht1 bezieht ebenfalls über DHCP die IP-Adresse vom DHCP-Server und verbindet sich automatisch mit dem Netzwerk.
wireless-essid: Name des WLANs
wireless-key: Passwort für das Drahtlosenetzwerk. :!: open nicht vergessen :!:

Mit dieser Lösung war ich aber nicht zufrieden, da es noch zuviel Aufwand war, die Datei interfaces ständig an die wechselnden Netzwerke anzupassen, deshalb machte ich mich weiter auf die Suche nach einer besseren Lösung.

Alternative 2

Bei meiner Suche stieß ich auf folgende Stichworte guessnet, wpasupplicent, ifplugd, usw.
Im Internet stößt man aber auf die unterschiedlichsten Lösungsansätze und man muss sich seinen eigenen zusammenbasteln.
Im den nachfolgenden Absätzen ist meine Lösungen dargestellt.

1. Schritt: Installation benötigter Packete:

  1. guessnet (universe): "Guessnet is a network detection tool to use when moving a machine among networks which don't necessarily provide DHCP." (http://guessnet.alioth.debian.org/)
  2. ifplugd (universe): "ifplugd is a Linux daemon which will automatically configure your ethernet device when a cable is plugged in and automatically unconfigure it if the cable is pulled. This is useful on laptops with onboard network adapters, since it will only configure the interface when a cable is really connected." (http://0pointer.de/lennart/projects/ifplugd/)
  3. resolvconf (universe): "Resolvconf is a proposed standard framework for updating the
    system's information about currently available nameservers." (http://lists.debian.org/debian-devel/2003/07/msg00438.html)
  4. wpasupplicant: "wpa_supplicant is a WPA Supplicant for Linux, BSD, Mac OS X, and Windows with support for WPA and WPA2 (IEEE 802.11i / RSN). It is suitable for both desktop/laptop computers and embedded systems. Supplicant is the IEEE 802.1X/WPA component that is used in the client stations. It implements key negotiation with a WPA Authenticator and it controls the roaming and IEEE 802.11 authentication/association of the wlan driver." (http://hostap.epitest.fi/wpa_supplicant/)

2. Schritt: Anlegen von ifplugd

Die Datei /etc/default/ifplugd muss mit ROOT-Rechten angelegt werden, falls sie noch nicht vorhanden ist. Dort müssen die Netzwerkkarteninformationen geschrieben werden, die überwacht werden soll. Es dürfen aber nur LAN-Karten in die Datei geschrieben werden. Das Programm Guessnet kann keine WLAN-Karten handhaben. Konfigurationsbeispiel von /etc/default/ifplugd

INTERFACES="eth0"

3. Schritt: Bearbeiten der Datei /etc/network/interfaces

Ich habe zwei Alternativen ausprobiert, die auch beide funktionieren.

Konfigurationsmöglichkeit 1

auto lo
#####################################################
### Definition des Loopback-Interfaces ##############

iface lo inet loopback

#####################################################
### Definition der bekannten eth0-Umgebungen ########

mapping eth0
script guessnet-ifupdown
map default: none
map timeout: 20

iface LAN1 inet static
address xxx.xxx.xxx.xxx
netmask 255.255.255.0
gateway xxx.xxx.xxx.xxx
dns-nameservers xxx.xxx.xxx.xxx
dns-search STROBEL.NET
test1 peer address xxx.xxx.xxx.xxx mac ff:ff:ff:ff:ff:ff

iface LAN2 inet dhcp
test1 peer address xxx.xxx.xxx.xxx mac ff:ff:ff:ff:ff:ff

iface keinnetz inet manual
test missing-cable

iface unbekannt inet dhcp

#####################################################
### Definition der bekannten wlan0-Umgebungen #######

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

# no id_str, 'default' is used as the fallback mapping target
iface default inet dhcp

iface WLAN1 inet static
address xxx.xxx.xxx.xxx
netmask 255.255.255.0
network xxx.xxx.xxx.xxx

broadcast xxx.xxx.xxx.xxx
gateway xxx.xxx.xxx.xxx

iface WLAN2 inet dhcp

iface WLAN3 inet dhcp

 

Konfigurationsmöglichkeit 2

auto lo
#####################################################
### Definition des Loopback-Interfaces ##############

iface lo inet loopback

#####################################################
### Definition der bekannten eth0-Umgebungen ########

mapping eth0
script /usr/sbin/guessnet-ifupdown
map LAN1
map LAN2
map unbekannt
map keinnetz
map default: unbekannt
map timeout: 20

iface LAN1 inet static
address xxx.xxx.xxx.xxx
netmask 255.255.255.0
gateway xxx.xxx.xxx.xxx
dns-nameservers xxx.xxx.xxx.xxx
test1 peer address xxx.xxx.xxx.xxx mac 12:34:56:78:90:AB

iface LAN2 inet dhcp
test1 peer address xxx.xxx.xxx.xxx mac 00:00:00:00:00:00

iface unbekannt inet dhcp

iface keinnetz inet manual
test missing-cable

#####################################################
### Definition der bekannten eth1-Umgebungen #######
####################################################

auto eth1
iface eth1 inet manual
wpa-driver wext
wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf
wpa-roam-default-iface default-wparoam
wpa-mapping-script guessnet-ifupdown
wpa-map default: default-guessnet
wpa-map0 WLAN1
wpa-map1 WLAN2
wpa-map3 WLAN3

iface WLAN1 inet static
address xxx.xxx.xxx.xxx
netmask 255.255.255.0
network xxx.xxx.xxx.0
broadcast xxx.xxx.xxx.255
gateway xxx.xxx.xxx.xxx
test1 peer adress xxx.xxx.xxx.xxx mac 00:00:00:00:00:00

iface WLAN2 inet dhcp
test1 peer adress xxx.xxx.xxx.xxx mac 00:00:00:00:00:00

iface WLAN3 inet dhcp
test1 per wireless-essid ESSID-NAME

iface default-guessnet inet dhcp

iface default-wparoam inet dhcp

4. Schritt: bearbeiten von /etc/wpa_supplicant/wpa_supplicant.conf

#Datei speichern in /etc/wpa-supplicant

ctrl_interface=/var/run/wpa_supplicant
eapol_version=1
# 0: Der Treiber des Interfaces kümmert sich um das Scannen von Netzen und die AP Auswahl.
# Dieser Mode sollte benutzt werden, wenn man eine Verschlüsselung auf ein Kabelnetzwerk legt.
# 1: wpa_supplicant kümmert sich um das Scannen von Netzen und die AP Auswahl.
# 2: Fast wie 0, es wird aber mit Hilfe von Sicherheitsrichtlinien und der SSID zu APs verbunden (BSSID wird nicht unterstützt)
#
# Normalerweise funktioniert entweder Mode 1 oder Mode 2.
ap_scan=1

#ohne Verschlüsselung
#network={
# ssid="Netzwerkname"
# key_mgmt=NONE
# priority=10
#}

#WPA2-Verschlüsselung
#network={
# ssid="Netzwerkname"
# scan_ssid=1
# proto=RSN
# key_mgmt=WPA-PSK
# pairwise=CCMP
# group=TKIP CCMP
# psk="meinschluessel"
#}

#WPA-Verschlüsselung
#network={
# ssid="Netzwerkname"
# scan_ssid=1
# proto=WPA
# key_mgmt=WPA-PSK
# pairwise=TKIP
# group=TKIP
# psk="meinschluessel"
#}

#WEP-Verschlüsselung:
#network={
# ssid="Netzwerkname"
# scan_ssid=1
# key_mgmt=NONE
# wep_tx_keyidx=0
# wep_key0="Netzwerkschlüssel"
#}

network={
ssid="WLAN1"
key_mgmt=NONE
id_str="WLAN1"
priority=10
scan_ssid=1
}

network={
ssid="WLAN2"
key_mgmt=NONE
id_str="WLAN2"
wep_key0=xxxxxxxxxx
wep_tx_keyidx=0
priority=6
scan_ssid=1
}

network={
ssid="WLAN3"
key_mgmt=NONE
id_str="WLAN3"
priority=2
scan_ssid=1
}

#Der Parameter priority legt fest, welches Netzwerk bevorzugt genutzt werden soll, sofern Mehrere vorhanden sind. Umso höher die #Zahl, desto höher die Priorität.
#Der Parameter scan_ssid ist dann nötig, wenn der Accesspoint auf einen ESSID Broadcast verzichtet.

5. Schritt: /etc/default/wpa_supplicant

ENABLED=1
OPTIONS="-i eth1 -D wext -c /etc/wpa_supplicant/wpa_supplicant.conf -w"

:!: Die id_str="[b]WLAN3[/b]" und iface [b]WLAN3[/b] inet dhcp müssen übereinstimmen. Nach der Bearbeitung und dem speichern der bearbeiteten Daten, kann man die Konfiguration laden, dazu folgendes eingeben:

sudo ifdown eht1
sudo ifup eth1

Der Zugang zu den unterschiedlichen Netzwerken sollte nun reibungslos funktionieren.

Weitere Informationen:

Man kann zusätzlich noch das Packet KWifimanager installieren, das eine grafische Benutzeroberfläche mitbringt. Das Programm gibt spezifische Informationen über vorhandene WLAN-Netze aus.
Den KNetworkmanager kann man deinstallieren, sofern das nicht schon bei der Installation bei einer der oben aufgeführten Programme geschehen ist.

Um ausführliche Informationen zu den Konfigurationen zu erhalten, folgt den untengenannten Links und werft einen Blick in das sehr gute wiki.ubuntuusers.de.

Diese Anleitung soll als Hilfe für die eure Konfiguration dienen. Ihr könnt die oben genannten getrost bearbeiten und verändern. Legt aber zuvor eine Sicherheitskopie dieser Dateien an.
Wenn nun eure neu Konfiguration, nach dem obigen Beispiel, nicht funktionieren sollte, dann kopiert einfach die Orginaldateien wieder an den dafür vorgesehenen Platz und euer Netzwerk läuft wieder.

Links:

Tags: guessnet, ifplugd, Netzwerk, WLAN

hat dir dieser Artikel gefallen?

Dann abonniere doch diesen Blog per RSS Feed!

Kommentare (0) Trackbacks (0)

Zu diesem Artikel wurden noch keine Kommentare geschrieben.


Leave a comment

Noch keine Trackbacks.

%d Bloggern gefällt das: