Wifi Roaming

Started by bluelupo, 2011/03/08, 18:13:14

Previous topic - Next topic

bluelupo

Hi zusammen,
mein Roaming im Zusammenspiel mit ifplugd funktioniert nicht so wie ich mir das vorstelle. Es soll folgendes eingerichtet werden:

* Am NB soll wenn ein LAN-Kabel an eth0 angesteckt ist diese standardmäßig hochgefahren werden.
* Wenn kein LAN-Kabel (eth0) am NB angesteckt ist soll das WLAN Interface (wlan0) benutzt werden.

So ist meine Ausgangslage:
1. LAN und WLAN funktionieren korrekt
2. Ist am NB ein LAN-Kabel angeschlossen fährt trotzdem das WLAN Interface hoch.

So sieht es aus nachdem Hochfahren (wie unter 2. beschrieben):

# ifconfig
lo        Link encap:Lokale Schleife  
         inet Adresse:127.0.0.1  Maske:255.0.0.0
         inet6-Adresse: ::1/128 Gültigkeitsbereich:Maschine
         UP LOOPBACK RUNNING  MTU:16436  Metrik:1
         RX packets:161 errors:0 dropped:0 overruns:0 frame:0
         TX packets:161 errors:0 dropped:0 overruns:0 carrier:0
         Kollisionen:0 Sendewarteschlangenlänge:0
         RX bytes:10676 (10.4 KiB)  TX bytes:10676 (10.4 KiB)

wlan0     Link encap:Ethernet  Hardware Adresse 00:18:de:65:19:0a  
         inet Adresse:192.168.178.59  Bcast:192.168.178.255  Maske:255.255.255.0
         inet6-Adresse: fe80::218:deff:fe65:190a/64 Gültigkeitsbereich:Verbindung
         UP BROADCAST RUNNING MULTICAST  MTU:1500  Metrik:1
         RX packets:1923 errors:0 dropped:0 overruns:0 frame:0
         TX packets:835 errors:0 dropped:0 overruns:0 carrier:0
         Kollisionen:0 Sendewarteschlangenlänge:1000
         RX bytes:753303 (735.6 KiB)  TX bytes:171725 (167.7 KiB)


Wenn ich nun per wpa_gui auf das WLAN ein Disconnect mache, fährt das wlan0 herunter aber das LAN Interface (eth0) nicht wieder hoch. So schaut es dann aus:

# ifconfig
lo        Link encap:Lokale Schleife  
         inet Adresse:127.0.0.1  Maske:255.0.0.0
         inet6-Adresse: ::1/128 Gültigkeitsbereich:Maschine
         UP LOOPBACK RUNNING  MTU:16436  Metrik:1
         RX packets:161 errors:0 dropped:0 overruns:0 frame:0
         TX packets:161 errors:0 dropped:0 overruns:0 carrier:0
         Kollisionen:0 Sendewarteschlangenlänge:0
         RX bytes:10676 (10.4 KiB)  TX bytes:10676 (10.4 KiB)

wlan0     Link encap:Ethernet  Hardware Adresse 00:18:de:65:19:0a  
         UP BROADCAST MULTICAST  MTU:1500  Metrik:1
         RX packets:2511 errors:0 dropped:0 overruns:0 frame:0
         TX packets:1228 errors:0 dropped:0 overruns:0 carrier:0
         Kollisionen:0 Sendewarteschlangenlänge:1000
         RX bytes:936899 (914.9 KiB)  TX bytes:250470 (244.5 KiB)


Meine /etc/network/interfaces. Ich brauche jeweils eine mauelle Konfiguaration der IP-Adresse (feste IP kein DHCP)
auto lo
iface lo inet loopback

# kabelgebundenes LAN
iface eth0 inet static
       address 192.168.178.59
       broadcast 192.168.178.255
       gateway 192.168.178.1
       netmask 255.255.255.0
       network 192.168.178.0
       dns-nameservers 192.168.178.1

# Hotplugging fuer wlan0 aktivieren
allow-hotplug wlan0
# Mehrfachkonfiguration aktivieren
iface wlan0 inet manual
# Roaming aktivieren
wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf
# feste IP fuers WLAN
iface AtHomeWlan inet static
       address 192.168.178.59
       broadcast 192.168.178.255
       gateway 192.168.178.1
       netmask 255.255.255.0
       network 192.168.178.0
       dns-nameservers 192.168.178.1


Den ifplugd habe ich nach Handbuch konfiguriert.
/etc/default/ifplugd:

INTERFACES=""
HOTPLUG_INTERFACES="eth0"
ARGS="-q -f -u0 -d10 -w -I"
SUSPEND_ACTION="stop"


Hat jemand von euch so eine Konstellation zum Laufen gebracht?

ralv

Ja...hab ich auf meinem Firmenlaptop so laufen. Die Konfig hab ich damals hier ins Wiki getippt...was ja leider immer noch nicht wieder funkst. Ich schau mal, was ich davon noch rekonstruieren kann...

ralv

/etc/default/ifplugd:
INTERFACES=""
HOTPLUG_INTERFACES="eth0 wlan0"
ARGS="-b -f -u0 -d10 -w -I"
SUSPEND_ACTION="stop"


/etc/network/interfaces:
# The loopback network interface
auto lo
iface lo inet loopback

iface eth0 inet dhcp
       dns-nameservers xxx.xxx.xxx.xxx
       dns-search uni-muenster.de

allow-hotplug wlan0
iface wlan0 inet manual
       wpa-roam /etc/wpa_supplicant/wpa-roam.conf

# this line must alway be here
iface default inet dhcp

iface wwu inet dhcp
iface uni-ms inet dhcp
iface eduroam inet dhcp
iface home inet dhcp
iface other inet dhcp

bluelupo

Hi ralv,
Danke das war's, jetzt funktioniert es. Das entscheidende war die Config des ifplugd, der muss beide Netzwerkdevices eth0 und wlan0 überwachen. Übrigens ist gibt ein Klone vom Wiki unter http://wiki.cobrasbyte.de/index.php?title=Hauptseite

Artikel bearbeiten würde allerdings dort nicht ;-)

hubi

@bluelupo

Ich habe - wie du im Eingangsbeitrag - nur eth0 in der ifplugd-Überwachung.

Als ich den Beitrag fürs Handbuch geschrieben habe, dachte ich an physisches "Hotpluggen": Kabel anstecken, Kabel ausstecken. Wenn Kabel dran: dann Verbindung über Kabel. Wenn Kabel nicht dran: dann Verbindung über wlan.

Genau dies bewirkt die Konfiguration, die im Handbuch vorgestellt ist (und soll auch so sein: Wechsel der Verbindung ohne Benutzerintervention via Software).

Wenn ich deinen Beitrag richtig verstehe, hast du das Kabel angesteckt, die Verbindung aber übers wlan, und willst mit "wpa_action wlan0 stop" wechseln. Das ist eine etwas andere Zielsetzung als mein "Hotplugging"-Beitrag im Handbuch.

hubi

ralv

@hubi

Mit der Handbuch-Konfiguration sind bei eingestecktem Kabel beide Interfaces aktiv, sowohl eth als auch wlan. Erst wenn beide Interfaces von ifplugd überwacht werden, findet ein automatischer Wechsel statt. So war es jedenfalls, als ich das konfiguriert habe.
Übrigens, es gibt im Wiki 2 nahezu identische Beiträge von dir zum WPA-Roaming, ist das so gewollt? ;)

hubi

Quote from: "ralv"Mit der Handbuch-Konfiguration sind bei eingestecktem Kabel beide Interfaces aktiv, sowohl eth als auch wlan.
Du meinst aber nicht, dass der Netzwerkverkehr über beide geht?
Quote from: "ralv"Erst wenn beide Interfaces von ifplugd überwacht werden, findet ein automatischer Wechsel statt. So war es jedenfalls, als ich das konfiguriert habe.
Ich werde das mal austesten. Vielleicht ist deine Methode sauberer und dann ändere ich das Handbuch.

Mein Ausgangspunkt war wahrscheinlich dieser Beitrag, in dem auch nur die Ethernetkarte von ifplugd gesteuert wird:
http://www.bralug.de/wiki/Automatische_Auswahl_der_Netzwerkkarte_mittels_ifplugd

Quote from: "ralv"Übrigens, es gibt im Wiki 2 nahezu identische Beiträge von dir zum WPA-Roaming, ist das so gewollt?
Der Wiki-Artikel ist älter, er wurde ins Handbuch aufgenommen. Darum ist es doppelt gemoppelt ;)

hubi

bluelupo

Quote from: "hubi"
[...]
Wenn ich deinen Beitrag richtig verstehe, hast du das Kabel angesteckt, die Verbindung aber übers wlan, und willst mit "wpa_action wlan0 stop" wechseln. Das ist eine etwas andere Zielsetzung als mein "Hotplugging"-Beitrag im Handbuch.

hubi
Hi hubi,
meine Zielvorstellung ist so, daß ein evtl. angstecktes LAN-Kabel (eth0) schon beim Booten die bevorzugte Verbindung sein soll. Im laufenden Betrieb des NB soll jeweils, ohne Benutzerinteraktion, auf das Ein- und Ausstecken des LAN-Kabels reagiert werden, d.h. stecke ich ein LAN-Kabel (eth0) an dann soll das eth0 Interface aktiv werden. Nehme ich das LAN-Kabel wieder heraus soll das WLAN-Interface (wlan0) aktiv werden.

Das NB soll von meiner Freundin ohne irgendwelche Kommandoeinagaben auf das ein Ein- und Ausstecken des LAN-Kabels zuverlässig und automatisch reagieren.

hubi

@bluelupo

Das ist dann eh die gleiche Zielsetzung. Was ich noch nicht probiert habe: mit eingestecktem Kabel zu booten (brauche das immer nur vor der Firmware-Installation). Im laufenden Zustand funktioniert bei mir das hin- und herstecken.

Ich werde das mal bei mir durchtesten, um eine Lösung zu haben, die auch deine Zielsetzung mit abgedeckt. Falls dies eine Änderung der Anleitung im Handbuch erfordert, wird diese natürlich adaptiert.

Vielen Dank (auch an ralv) für den Input.

hubi

bluelupo

@hubi: Danke für's testen. Bin schon gespannt ob du das so hin bekommst.

hubi

@bluelupo @ralv

Hab's ausprobiert und es stimmt: um ein ordentliches Verhalten beim Booten zu kriegen, müssen beide Schnittstellen eingetragen sein. Ich habe die Anleitung für Hotplugging im Handbuch bereits geändert. Müsste dann ab morgen online sein.

Danke an euch beide!

hubi

bluelupo

Hi hubi,
ich habe noch ein seltsames Verhalten vom ifplugd Daemon festgestellt. Auf meinen Thinkpads läuft der ifplugd nach dem Booten nicht, klar das dann ein Umschalten der Netzwerkdevices nicht funktioniert.

Starten kann man den ifplugd mit dem Initscript ebenfalls nicht. Es läuft kein Prozess. Sobald man das Teil über dpkg-reconfigure erneut einrichtet läuft alles wie gewünscht.

Warum das so ist kann ich nur vermuten, evtl. ist die Netzwerkdevice Initialisierung zu langsam und der ifplugd meint es wären überhaupt keine zu überwachende Schnittstellen vorhanden (zumindest im Fall des Bootvorgangs).

Daraufhin habe ich ein bisschen experimentiert über die Einrichtung des ifplugd mit dpkg-rekonfigure und festgestellt wenn ich in ersten Maske eth0 angebe startet mein ifplugd beim Booten. Wäre vielleicht gut wenn du das nochmal verifizieren könntest ob du auch so ein Verhalten des Daemon feststellen kannst.

@ralv: schau mal bei deinen NB ob dort nach dem Booten der ifplugd läuft.

Evtl. ist das Verhalten des ifplugd auch einen Bugreport wert.

ralv

@bluelupo: bei mir läuft der ifplugd seit dem booten. schau mal nach, ob du in der /etc/network/interfaces ein "auto" vor eth0 oder wlan0 stehen hast. das darf nicht sein.

bluelupo

Hi ralv,
nur ein "auto" vorm Loopbackdevive sonst keines. Hier meine interfaces:

auto lo
iface lo inet loopback

# kabelgebundenes LAN
iface eth0 inet static
       address 192.168.178.59
       broadcast 192.168.178.255
       gateway 192.168.178.1
       netmask 255.255.255.0
       network 192.168.178.0
       dns-nameservers 192.168.178.1

# Hotplugging fuer wlan0 aktivieren
allow-hotplug wlan0

# Mehrfachkonfiguration aktivieren
iface wlan0 inet manual

# Roaming aktivieren
wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf

# feste IP fuers WLAN
iface AtHomeWlan inet static
       address 192.168.178.59
       broadcast 192.168.178.255
       gateway 192.168.178.1
       netmask 255.255.255.0
       network 192.168.178.0
       dns-nameservers 192.168.178.1
#EOF


EDIT: Bei dieser /etc/default/ifplugd kommt kein ifplugd-Prozess beim Booten hoch.

INTERFACES=""
HOTPLUG_INTERFACES="eth0 wlan0"
ARGS="-q -f -u0 -d10 -w -I"
SUSPEND_ACTION="stop"



root@tweety:~# uptime
18:40:13 up 1 min,  2 users,  load average: 0.60, 0.30, 0.12
root@tweety:~# /etc/init.d/ifplugd status
eth0: ifplugd not running.
wlan0: ifplugd not running.


Setze ich der Variablen INTERFACES den Wert eth0 (via dpkg-reconfigure) ein kommt der ifplugd Prozesse hoch.

ralv

ah...okay...obwohl, bei meinem laptop stehen auch beide unter hotplug.
du kannst übrigens alternativ unter INTERFACES "all" einsetzen...dann startet ifplugd automatisch für alle erkannten interfaces. bei meinem laptop klappt auch das einwandfrei, habs grad getestet