WLAN und WPA mit WPA_supplicant

Mein neuer WLAN-USB-Stick, ein Digitus DN-7003GT erzeugt mit lsusb folgende Ausgabe:

Bus 002 Device 003: ID 0bda:8189 Realtek Semiconductor Corp

Seit Kernel 2.6.27 funktioniert dieser Adapter tadellos mit dem Kernel-Modul RTL8187.

Das Programm iwconfig aus dem Paket net-wireless/wireless-tools listet den Stick unter dem Namen wlan0 auf.

Damit dieser sich auch mit einem WPA-Verschlüsselten Netzwerk verbinden kann sind folgende Schritte nötig:

Zunächst einmal muss das Paket net-wireless/wpa_supplicant installiert werden.

Anschließend wird die Datei /etc/conf.d/net.wlan0 mit folgendem Inhalt erstellt:

# wlan0 abschalten, wenn eine Netzwerkkabelverbindung gefunden wurde
# von http://www.gentoo-wiki.info/Wireless/Configuration#WPA
preup() {
if [[ ${IFACE} == „wlan0“ ]]; then
if ifplugstatus | grep -q ‚eth0: link beat detected‘; then
ewarn „Wired connection on eth0 detected, aborting configuration on ${IFACE}“
return 1
fi
fi
return 0
}

modules=( „wpa_supplicant“ )
wpa_supplicant_wlan0=“-D wext -c /etc/wpa_supplicant/wpa_supplicant.conf“


Zunächst Außerdem wird mit dem Befehl

ln -s /etc/init.d/net.lo /etc/init.d/net.wlan0

ein Init-Skript erzeugt.

Die Konfigurationsdatei für wpa_supplicant liegt unter /etc/wpa_supplicant/wpa_supplicant.conf

Sie erhält folgenden Inhalt:

ctrl_interface=/var/run/wpa_supplicant
ctrl_interface_group=users
update_config=1

network={
ssid=“WPA-AP“
psk=“DAS_WPA_PASSWORT“
priority=5
}

network={
ssid=“WEP-AP“
key_mgmt=NONE
wep_key0=11111111111111111111111111
wep_tx_keyidx=0
priority=5
# auth_alg=SHARED
}

Nun sollte sich der WLAN-Stick mittels

/etc/init.d/net.wlan0 start

mit dem konfigurierten Netzwerk verbinden können.

Netzwerk: WLAN nur aktivieren, wenn kein Netzwerkkabel eingesteckt ist

Um seine WLAN-Karte (oder WLAN-USB-Stick) nur zu aktivieren, wenn gerade kein Netzwerkkabel eingesteckt ist, kann man folgende Schritte ausführen.

(Annahme: die WLAN-Karte firmiert unter dem Namen wlan0)

Inhalt der Datei /etc/conf.d/net.eth0

# wlan0 einschalten, wenn das Netzwerkkabel nicht eingesteckt wurde
preup() {
if ethtool „${IFACE}“ | grep -q ‚Link detected: no‘; then
ewarn „No link on ${IFACE}, aborting configuration“
/etc/init.d/net.wlan0 start
fi
return 0
}

#config_eth0=( „dhcp“ )
config_eth0=( „192.168.0.10/24“ )
routes_eth0=(
„default via 192.168.0.1“ # IPv4 default route
)

Für den Inhalt der Datei /etc/conf.d/net.wlan0 siehe vorherigen Post.

Danach sollte man das Paket sys-apps/ifplugd installieren. Es ermöglicht es festzustellen, ob an der Netzwerkkarte ein Kabel angeschlossen ist und reagiert automatisch auf Veränderungen des Zustands.

Anschließend sollte man die Datei /etc/ifplugd/ifplugd.action dahingehend abändern, dass beim Entfernen des Netzwerkkabels automatisch das wlan0-Interface gestartet wird und entsprechend beim Einstecken des Netzwerkkabels wieder gestoppt wird.

Ausschnitt aus der Datei /etc/ifplugd/ifplugd.action (siehe dazu auch das gentoo-wiki.info)

case „$2“ in
up)
if [ „${INITNG}“ = „yes“ ]
then
ARGS=“-u net/$1″
else
ARGS=“–quiet start“
#wenn ein Netzwerkkabel eingesteckt wurde, soll wlan0 gestoppt werden
/etc/init.d/net.wlan0 –quiet stop
fi
;;
down)
if [ „${INITNG}“ = „yes“ ]
then
ARGS=“-d net/$1″
else
ARGS=“–quiet stop“
#wenn das Netzwerkkabel gezogen wurde, soll wlan0 gestartet werden
/etc/init.d/net.wlan0 –quiet start
fi
;;
*)
echo „$0: wrong arguments“ >&2
echo „Call with “ >&2
exit 1
;;
esac

Um zu verhindern, dass wlan0 automatisch beim Hochfahren gestartet wird, kann man in der Datei /etc/rc.conf die Zeile

rc_plug_services=“!net.wlan0″

einfügen.