wenn eth0 down, dann fall-back zu wlan0

Einrichten des lokalen Netzes, Verbindung zu anderen Computern und Diensten.
Antworten
Benutzeravatar
pangu
Beiträge: 1400
Registriert: 15.11.2011 20:50:52
Lizenz eigener Beiträge: GNU General Public License
Wohnort: /proc/1

wenn eth0 down, dann fall-back zu wlan0

Beitrag von pangu » 15.03.2014 20:22:55

Hi Leute,

ich möchte gerne folgendes erreichen und krieg das noch nicht gebacken:

mein System hat zwei Schnittstellen, und zwar eth0 und wlan0.

- Wenn eth0 kein Netzwerkkabel eingesteckt hat, oder eben kein Link vorhanden ist, dann soll wlan0 aktiviert werden.

- Wenn eth0 einen Link hat, soll wlan0 komplett deaktiviert bleiben und nicht auftauchen im System.

Ich hab mittels Google recherchiert, aber nix brauchbares gefunden, dass mich weitergebracht hat. Diese Seite war die einzige, die ich für möglichen Lösungsbeitrag gefunden habe.

Ich habe mir das Paket "ifplugd" installiert und mit "dpkg-reconfigure ifplugd" folgende settings erstellt: bei den static interfaces habe ich alles leer gelassen, und für die hotplug-Frage habe ich eth0 und wlan0 eingetragen. Deshalb habe ich bei der /etc/network/interfaces das "auto eth0" oder "allow-hotplug eth0" entfernt, damit das von ifplugd gemanaged werden kann.

Meine /etc/network/interfaces sieht aktuell so aus:

Code: Alles auswählen

auto lo
iface lo inet loopback

#auto eth0
#allow-hotplug eth0
iface eth0 inet static
 address 192.168.0.123
 netmask 255.255.255.0
 gateway 192.168.0.200

#auto wlan0
allow-hotplug wlan0
#iface wlan0 inet manual
iface wlan0 inet dhcp
 wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf

#iface default inet dhcp
Wenn ich das Netzwerkkabel in eth0 einstecke, sind beide interfaces ab, eth0 hat die 192.168.0.123 und wlan0 erhält per DHCP die 192.168.0.222. Ich möchte aber das in diesem Fall wlan0 gar nicht vorhanden ist. Andersrum: wenn ich das Netzwerkkabel rausziehe und boote, dann ist eth0 natürlich ohne Konfiguration, wlan0 ist vorhanden, aber nicht assoziiert oder ohne Verbindung. Komischerweise: wenn ich dann das Netzwerkkabel in eth0 einstecke, sind beide interfaces wieder online, sowohl eth0 als auch wlan0 mit 'ner gültigen IP.

Kann mir jemand erklären, wie man das richtig konfigurieren muss? danke im Voraus.
Man gibt Geld aus, das man nicht hat, um damit Dinge zu kaufen, die man nicht braucht, um damit Leute zu beeindrucken, die man nicht mag.

rendegast
Beiträge: 15041
Registriert: 27.02.2006 16:50:33
Lizenz eigener Beiträge: MIT Lizenz

Re: wenn eth0 down, dann fall-back zu wlan0

Beitrag von rendegast » 15.03.2014 21:12:57

#auto eth0
#allow-hotplug eth0
->

Code: Alles auswählen

#auto eth0
allow-hotplug eth0

Code: Alles auswählen

$ ll /etc/network
..
drwxr-xr-x 2 root root  4096 Mär 13 03:20 if-down.d
drwxr-xr-x 2 root root  4096 Aug  5  2013 if-post-down.d
drwxr-xr-x 2 root root  4096 Aug  5  2013 if-pre-up.d
drwxr-xr-x 2 root root  4096 Mär 13 03:20 if-up.d
..
Ich schlage zwei Skripte vor in if-down.d/ (oder if-post-down.d/) und if-up.d/,
in der Art

Code: Alles auswählen

#!/bin/sh

[ "x$IFACE" != "xeth0" ] && exit 0
[ "x$MODE" != "xstart" ] && exit 0

ifconfig wlan0 down
#ifdown wlan0
und entsprechend für 'wlan0 up'.
mfg rendegast
-----------------------
Viel Eifer, viel Irrtum; weniger Eifer, weniger Irrtum; kein Eifer, kein Irrtum.
(Lin Yutang "Moment in Peking")

dirk11
Beiträge: 2854
Registriert: 02.07.2013 11:47:01

Re: wenn eth0 down, dann fall-back zu wlan0

Beitrag von dirk11 » 15.03.2014 21:28:34

Ob das, was du willst, wirklich im Wortsinne geht (also das WLAN deaktiviert wird), weiss ich nicht. Was aber geht ist, das eth0 priorisiert wird, sprich wenn eth0 einen link hat, wird das WLAN nicht benutzt. WiCD kann das.

Benutzeravatar
pangu
Beiträge: 1400
Registriert: 15.11.2011 20:50:52
Lizenz eigener Beiträge: GNU General Public License
Wohnort: /proc/1

Re: AW: wenn eth0 down, dann fall-back zu wlan0

Beitrag von pangu » 16.03.2014 02:02:24

ich möchte wirklich nicht mit Prioritäten arbeiten, sondern sauber trennen. Wieso soll wlan0 arbeiten/aktiv sein, wenn es nicht erwünscht/benötigt wird? nee, also Prio möchte ich echt nicht, sonst könnt ich ja auch "guessnet" nutzen, das ist aber nicht das Ziel. Also ich bin der Meinung, daß das Paket "ifplugd" hierfür schon der richtige Ansatz wäre, frage mich aber dennoch wie die entsprechende config dazu aussehen muss. Selber scripten halte ich demnach nicht für notwendig. Das hatte ich mir zu allererst auch überlegt, wollte aber nicht unbedingt in den ifup-skripten rumfuchteln. Als ich ifpludg durchlas, dacht ich mir: das muss es doch sein.
Man gibt Geld aus, das man nicht hat, um damit Dinge zu kaufen, die man nicht braucht, um damit Leute zu beeindrucken, die man nicht mag.

rendegast
Beiträge: 15041
Registriert: 27.02.2006 16:50:33
Lizenz eigener Beiträge: MIT Lizenz

Re: wenn eth0 down, dann fall-back zu wlan0

Beitrag von rendegast » 16.03.2014 09:33:44

rendegast hat geschrieben: Ich schlage zwei Skripte vor in
Ups, böser faux-pas.
Da passiert ja gar nichts in /etc/network/ bzgl. eth0, wenn ich plug/unplug.
Habe das wohl mit wlan0 (usb) verwechselt, wo udev beim unplug auch das Modul entlädt,
was dann ein 'ifdown wlan0' auslöst.
Sorry.




Nebenbei habe ich einen Bug entdeckt?
Ich habe br0:eth0 (r8169) (ein walkaround für die KVM-VM für Zugriff auf meinen apt-Proxy),
beim unplug wechselt der Treiber in einen undefinierten Status:
'ethtool eth0' zeigt nicht mehr die normale Ausgabe mit "Link detected: no", sondern

Code: Alles auswählen

# ethtool eth0
Settings for eth0:
Cannot get device settings: No such device
Cannot get wake-on-lan settings: No such device
Cannot get message level: No such device
Cannot get link status: No such device
No data available

(das br0 ist dabei immer noch definiert, nach plug ist/wäre Netzwerk auch wieder da)
Die normale Ausgabe mit "Link detected: no" erhalte ich bei Neuladen des Moduls.
Was sich dann beim plug wiederum nicht ändert, erst nach "Neustart" von br0 'ifdown br0; ifup br0'.

Insoweit ist Debianifplugd vielleicht auch was für mich (und die Netzwerkdienste),
weil ich damit dann in jedem plug-Zustand "sauberen" Netzwerk- und Treiberzustand setzen könnte.
(Könnte das Kabel aber auch einfach drin lassen ;) )
pangu hat geschrieben: Selber scripten halte ich demnach nicht für notwendig.
Aber um ein(?) Hilfsskript (/etc/ifplugd/action.d/ ? ) käme ich aber wohl dennoch nicht herum.
mfg rendegast
-----------------------
Viel Eifer, viel Irrtum; weniger Eifer, weniger Irrtum; kein Eifer, kein Irrtum.
(Lin Yutang "Moment in Peking")

wanne
Moderator
Beiträge: 7625
Registriert: 24.05.2010 12:39:42

Re: wenn eth0 down, dann fall-back zu wlan0

Beitrag von wanne » 16.03.2014 16:52:12

Wenn du keine schönere Lösung findest kansnt du dich in udev einlesen. Das bekommt das sicher irgend wie hin. Ist aber relativ kompliziert und erfahrungsgemäß tut es nie auf anhieb wie es soll.
rot: Moderator wanne spricht, default: User wanne spricht.

qgirl
Beiträge: 224
Registriert: 14.08.2005 09:04:50
Lizenz eigener Beiträge: MIT Lizenz

Re: wenn eth0 down, dann fall-back zu wlan0

Beitrag von qgirl » 16.03.2014 20:11:59

Bei meinem Rechner (Wheezy) funktioniert es mit folgenden Einträgen in /etc/network/interfaces:

Code: Alles auswählen

# The loopback network interface
auto lo
iface lo inet loopback

### eth0 _____________________________________________________________________

#auto eth0
iface eth0 inet static
  ...
  pre-up ifdown wlan0
  post-down ifup wlan0

### wlan0 ____________________________________________________________________

auto wlan0
iface wlan0 inet static
  ...
Und in /etc/default/ifplugd:

Code: Alles auswählen

INTERFACES="eth0"
HOTPLUG_INTERFACES=""
...
Wenn das Netzwerkkabel ausgesteckt wird, wechselt er auf WLAN und wenn es wieder eingesteckt wird zurück auf eth0.
wlan0 und eth0 haben bei mir die gleiche statische IP-Adresse.

Gruss
qgirl

Benutzeravatar
pangu
Beiträge: 1400
Registriert: 15.11.2011 20:50:52
Lizenz eigener Beiträge: GNU General Public License
Wohnort: /proc/1

Re: wenn eth0 down, dann fall-back zu wlan0

Beitrag von pangu » 16.03.2014 20:28:08

Hallo qgirl,

danke für die config. Hat astrein funktioniert! eth0 ist aktiv wenn ich das Netzwerkkabel drinstecken habe und wlan0 gibt es nicht .Sobald ich das Netzwerkkabel rausziehe, dauert es einige wenige Sekunden bis ich wieder Verbindung habe. Dann logg ich mich ein und sehe, dass wlan0 da ist. eth0 ist zwar auch noch aufgelistet wenn ich "ifconfig" eingebe, aber ohne IP-adresse. Damit kann ich leben. Steck ich das Netzwerkkabel wieder rein, ist eth0 wieder online und wlan0 gibt es nicht mehr.

Also nochmals DANKE !

:THX: :hail:
Man gibt Geld aus, das man nicht hat, um damit Dinge zu kaufen, die man nicht braucht, um damit Leute zu beeindrucken, die man nicht mag.

Benutzeravatar
pangu
Beiträge: 1400
Registriert: 15.11.2011 20:50:52
Lizenz eigener Beiträge: GNU General Public License
Wohnort: /proc/1

Re: wenn eth0 down, dann fall-back zu wlan0

Beitrag von pangu » 17.03.2014 00:45:10

Hallo nochmal,

leider funktioniert es doch nicht "so" wie ich ursprünglich erwartet hatte. Und zwar tritt folgendes Problem auf:

wenn man das System neu startet, ohne eingestecktes Netzwerkkabel, dann kommt wlan0 gar nicht erst zum Einsatz und das System bleibt ohne Verbindung. Warum? Meine Vermutung: Beim Systemboot wird ja erst eth0 aktiviert und genau in diesem Moment (also bevor eth0 hochgefahren wird, wird dabei wlan0 deaktiviert). Wlan0 bleibt somit aus und es kann keine WiFi-Verbindung hergestellt werden.

Meine config sieht so aus:

/etc/network/interfaces:

Code: Alles auswählen

auto lo
iface lo inet loopback

iface eth0 inet static
 address 192.168.0.5
 netmask 255.255.255.0
 gateway 192.168.0.200
 pre-up ifdown wlan0
 post-down ifup wlan0

auto wlan0
iface wlan0 inet static
 wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf
 address 192.168.0.5
 netmask 255.255.255.0
 gateway 192.168.0.200
/etc/default/ifplugd:

Code: Alles auswählen

INTERFACES="eth0"
HOTPLUG_INTERFACES=""
ARGS="-q -f -u0 -d10 -w -I -b"
SUSPEND_ACTION="stop"
Irgendeine Idee?
Man gibt Geld aus, das man nicht hat, um damit Dinge zu kaufen, die man nicht braucht, um damit Leute zu beeindrucken, die man nicht mag.

rendegast
Beiträge: 15041
Registriert: 27.02.2006 16:50:33
Lizenz eigener Beiträge: MIT Lizenz

Re: wenn eth0 down, dann fall-back zu wlan0

Beitrag von rendegast » 17.03.2014 10:26:33

pre-up ifdown wlan0
'man interfaces', vielleicht stattdessen

Code: Alles auswählen

 post-up ifdown wlan0
was dann (nominell) erst ausgeführt wird, wenn eth0 wirklich up wäre.
mfg rendegast
-----------------------
Viel Eifer, viel Irrtum; weniger Eifer, weniger Irrtum; kein Eifer, kein Irrtum.
(Lin Yutang "Moment in Peking")

Benutzeravatar
pangu
Beiträge: 1400
Registriert: 15.11.2011 20:50:52
Lizenz eigener Beiträge: GNU General Public License
Wohnort: /proc/1

Re: wenn eth0 down, dann fall-back zu wlan0

Beitrag von pangu » 17.03.2014 12:22:32

hat leider auch nicht geholfen. Schade
Man gibt Geld aus, das man nicht hat, um damit Dinge zu kaufen, die man nicht braucht, um damit Leute zu beeindrucken, die man nicht mag.

rendegast
Beiträge: 15041
Registriert: 27.02.2006 16:50:33
Lizenz eigener Beiträge: MIT Lizenz

Re: wenn eth0 down, dann fall-back zu wlan0

Beitrag von rendegast » 17.03.2014 13:13:28

Anderer Ansatz, ermöglicht durch die identische Konfiguration beider Interfaces.
netzwerk-konfiguriert wird eine bridge, und deren Teilnehmer werden hinzugefügt/entfernt:

Code: Alles auswählen

auto lo
iface lo inet loopback

auto br0
iface eth0 inet static
 address 192.168.0.5
 netmask 255.255.255.0
 gateway 192.168.0.200
bridge-ports eth0 wlan0

allow-hotplug eth0
iface eth0 inet manual
 post-up /etc/network/eth0.sh up
 post-down /etc/network/eth0.sh down

allow-hotplug wlan0
iface wlan0 inet manual
 wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf
/etc/network/eth0.sh:

Code: Alles auswählen

#!/bin/sh

case "$1" in
    up)
      ethtool eth0 | grep -q "Link detected: yes" && {
      ifdown wlan0
      ip link set eth0 up
      brctl addif br0 eth0
      }
    ;;
    down)
      ifup wlan0
      ip link set wlan0 up
      brctl addif br0 wlan0
    ;;
esac
#ifdown br0; ifup br0
(das funktioniert hier nicht richtig, die (im Versuch alias-)Interfaces sind dann nicht up,
nur unter 'ifconfig -a' aufgeführt resp. 'ip link' DOWN.
Daher nochmal das 'ip link set ... up' oder auch 'ifconfig ... up'.
Die Alternative wäre das auskommentierte '#ifdown br0; ifup br0', was mir aber nicht gefällt.)

Funktioniert dann zumindest mit händischem 'ifup/ifdown eth0'.
Das eth0 wird dem ifplugd übergeben.

Eigentlich hat die Lösung das selbe Problem beim Start,
nur sind es nicht Interfaces sondern bridge-Komponenten.
Aber dafür ist obiges 'ethtool ... | grep ...', was sich halt innerhalb des Hilfsskriptes benutzen läßt.
mfg rendegast
-----------------------
Viel Eifer, viel Irrtum; weniger Eifer, weniger Irrtum; kein Eifer, kein Irrtum.
(Lin Yutang "Moment in Peking")

Benutzeravatar
pangu
Beiträge: 1400
Registriert: 15.11.2011 20:50:52
Lizenz eigener Beiträge: GNU General Public License
Wohnort: /proc/1

Re: wenn eth0 down, dann fall-back zu wlan0

Beitrag von pangu » 17.03.2014 15:25:16

sollte br0 nicht irgendwo in /etc/network/interfaces definiert werden?

EDIT: Oh, ich sehe du hast deinen letzten Beitrag vor kurzem editiert gehabt. Hab das erst jetzt gesehen. Nunja, wie auch immer. So richtig wie ich's mir eigentlich vorgestellt habe, funzt das noch nicht.

Wer weiß hierzu Abhilfe und Lösungsansatz? ich kann mir beim besten Willen nicht vorstellen, dass das nicht gehen soll. Geht nicht, gibt's nicht :)
Man gibt Geld aus, das man nicht hat, um damit Dinge zu kaufen, die man nicht braucht, um damit Leute zu beeindrucken, die man nicht mag.

qgirl
Beiträge: 224
Registriert: 14.08.2005 09:04:50
Lizenz eigener Beiträge: MIT Lizenz

Re: wenn eth0 down, dann fall-back zu wlan0

Beitrag von qgirl » 19.03.2014 06:53:47

Beim Systemboot wird ja erst eth0 aktiviert und genau in diesem Moment (also bevor eth0 hochgefahren wird, wird dabei wlan0 deaktiviert).
Mmmh, eth0 sollte eigentlich beim booten nur automatisch gestartet werden, wenn ein Eintrag "auto eth0" in /etc/network/interfaces enthalten wäre...

Bei mir verhält es sich wie erwartet.
wlan0 wird bei booten gestartet und erhält eine IP-Adresse (wegen "auto wlan0") und eth0 wird zwar angelegt, hat aber keine IP-Adresse.

Gruss
qgirl

Antworten