WLan Konfiguration in Abhängigkeit des Verfügbaren SSID Netzwerkes

  • Hallo,

    der Raspberry Pi soll die Einstellungen von

    • static ip_address
    • static routers
    • static domain_name_servers

    in Abhängigkeit des zu Verfügung stehenden WLan Netzes treffen.


    Als OS kommt Raspbian GNU/Linux 9 (stretch) lite 4.14.98-v7+ zum Einsatz.


    Um die oben gewünschten Einstellungen zu treffen wird die dhcpcd.conf entsprechend angepasst, was wenn man nur ein Wlan Netz zur Verfügung hat "immer wunderbar" funktioniert, jedoch muss ich die Einstellungen jetzt in Abhängigkeit einstellen, ob SSID1 oder SSID2 zur Verfügung steht.


    Code: /etc/dhcpcd.conf
    1. interface wlan0
    2. static ip_address=x
    3. static routers=y
    4. static domain_name_servers=z

    x, y, z ist der Teil der in Abhängigkeit der SSID passend zum Netzwerk gesetzt werden muss.


    Hierzu hätte ich hofft etwas passendes hier entdeckt zu haben:

    Punkt arping

    Quote from http://manpages.ubuntu.com/manpages/precise/man5/dhcpcd.conf.5.html

    arping address [address] dhcpcd will arping each address in order before attempting DHCP. If an address is found, we will select the replying hardware address as the profile, otherwise the ip address. Example:
    interface bge0

    arping 192.168.0.1
    profile 192.168.0.1

    static ip_address=192.168.0.10/24

    Wenn ich dies jedoch mit in die dhcpcd.conf mit einbaue, funktioniert nichts mehr und der Pi bekommt auch eine völlig unbrauchbare IP Adresse.

    Code
    1. interface wlan0
    2. arping 192.168.26.<x>
    3. profile <macadresse von x>
    4. static ip_address=x
    5. static routers=y
    6. static domain_name_servers=z


    :helpnew:Jetzt die Grundsatzfrage, wie löse ich mein Vorhaben?

  • Code
    1. interface wlan0
    2. arping 192.168.26.<x>
    3. profile <macadresse von x>
    4. static ip_address=x
    5. static routers=y
    6. static domain_name_servers=z


    :helpnew:Jetzt die Grundsatzfrage, wie löse ich mein Vorhaben?

    Versuch mal mit:

    Code
    1. interface wlan0
    2. arping 192.168.26.<a> 192.168.27.<b>
    3. profile 192.168.26.<a>
    4. static ip_address=192.168.26.<xy>/24
    5. static routers=192.168.26.<a>
    6. static domain_name_servers=192.168.26.<a>
  • arping 192.168.26.<a> 192.168.27.<b>

    profile 192.168.26.<a>

    und dann nochmals mit profile 192.168.17.<b> die Einstellungen für die 2. SSID treffen?



    Du meinst IP Adresse. ;)

    Nö, hätte schon die MAC Adresse gemeint aufgrund von: select the replying hardware address as the profile,

  • und dann nochmals mit profile 192.168.17.<b> die Einstellungen für die 2. SSID treffen?

    Nein, ich verstehe nicht so richtig wie Du es haben willst.


    Die 1. oder die 2. SSID entweder per arping und wenn das nicht geht, dann die 1. SSID (oder einer andere) per profile (mit der IP-Adresse und nicht mit der MAC-Adresse).


    EDIT:


    Wenn Du die Möglichkeit hast, dann teste mal auf deinem WLAN-Router, ob dort der arping (arp-request) vom dhcpcd (... nach Herstellung der WLAN-Verbindung und _vor_ dem Zuweisen der IP-Adresse an den PI per dhcp) ankommt.


    EDIT 2:


    Falls möglich (z. B. mit einer direkten Kabelverbindung zum PI oder Bildschirm/Tastatur am PI) mit tcpdump (oder gleichwertig) auch sniffen ob der dhcpcd den arping vom Pi aus (... d. h. mit wi-fi auf Layer 2), sendet.

  • Nein, ich verstehe nicht so richtig wie Du es haben willst.

    Ok, sorry für die Missverständliche Formulierung.

    Die Lösung nach dem ich suchte ist genau das, was hyle Link enthält. Funktioniert schon wie gewünscht (:




    (mit der IP-Adresse und nicht mit der MAC-Adresse).

    Lt. Dokumentation hätte ich das aber schon so verstanden, dass für das spezifische Netzwerk die MAC Adresse zu verwenden ist, und für beliebige Netzwerke die IP Adressen.



    nach Herstellung der WLAN-Verbindung und _vor_ dem Zuweisen der IP-Adresse an den PI per dhcp)

    Genau darüber machte ich mir auch Gedanken wie das funktionieren soll, das der Ping durchgeht, obwohl man noch keine IP Adresse hat.


    Für meinen Anwendungsfall ist das Problem jedoch gelöst! :danke_ATDE:Euch beiden für die Hilfe.

  • Die Lösung nach dem ich suchte ist genau das, was hyle Link enthält. Funktioniert schon wie gewünscht (:


    Lt. Dokumentation hätte ich das aber schon so verstanden, dass für das spezifische Netzwerk die MAC Adresse zu verwenden ist, und für beliebige Netzwerke die IP Adressen.


    Genau darüber machte ich mir auch Gedanken wie das funktionieren soll, das der Ping durchgeht, obwohl man noch keine IP Adresse hat.

    Was ist im Link anders als Du schon hattest (außer der MAC-Adresse statt der IP-Adresse)?

    Lt. Doku/Manpage ist schon die IP-Adresse und nicht die MAC-Adresse erforderlich.

    Der arping (arp) geht via Layer2 (MAC-Adressen) und braucht nicht zwingend die IP-Adresse. Aber das sollte man ja mit tcpdump evtl. feststellen/sehen (können). Oder mit broadcast-Paketen, wie ein dhcp-Client an den DHCP-Server das macht (... da ja zu dem Zeitpunkt auch noch keine zugewiesene IP-Adresse vorhanden ist).

  • Das sind ja bekannte SSIDs und hier die dazugehörigen DHCP Einträge für die jeweilige statische IP.

    Wenn ich ehrlich bin... so richtig verstehe ich den Lösungsweg nicht. Wieso braucht man überhaupt einen DHCPD, wenn man statische IPs verwendet? Und wenn man nicht so recht weiß, welches Netz gerade verfügbar ist, ist es doch eigentlich ein einfaches, mal eben die Netze zu scannen und auf seine eigenen SSIDs zu grep'n. Dementsprechend startet man einfach eine Service-Unit, die die passende wpa-supplicant.conf verwendet, mit statischer IP und fertig. Diesen ganzen unnützen Overhead mit DHCP braucht man dann doch eigentlich gar nicht. Allerdings bin ich im Moment unsicher, ob ich überhaupt das Problem richtig verstanden habe... nicht, das meine Idee vielleicht doch nicht passt. :conf:

  • Quote

    Wieso braucht man überhaupt einen DHCPD, wenn man statische IPs verwendet?

    Das Frage ich mich auch. :lol: Die Antwort kennen nur die Maintainer von Debian. Früher hat man das noch in der /etc/network/interfaces eingetragen.


    Btw. Klar könnte man scannen und dem entsprechend die Configs setzen, aber wozu, wenn man die Netzwerke kennt, diese einträgt und den wpa_supplicant die Arbeit machen lassen kann.

  • Letztendlich ist es wie mehrere network Blöcke bei der wpa_supplicant.conf. Das sind ja bekannte SSIDs und hier die dazugehörigen DHCP Einträge für die jeweilige statische IP.

    Ich verstehe nur nicht, warum man für _jede_ SSID auch eine statische IP brauchen soll.


    Quote

    dhcpcd will arping each address in order before attempting DHCP. If an address is found, we will select

    the replying hardware address as the profile, otherwise the ip address.

    D. h. wenn dhcpcd keine einzige IP-Adresse (Router mit (oder ohne) DHCP-Server) per arping zwecks Zuweisung per dhcp erreichen kann, beginnt er mit der statischen Konfiguration (ohne dhcp) von oben nach unten, bis ein Router (mit oder ohne aktivem DHCP-Server), der auf arping _nicht_ geantwortet hat, jetzt mit der statischen Konfiguration aber erreichbar ist?

    Dann stellt sich die Frage wie zuverlässig bzw. wie geeignet diese arping Option überhaupt ist. Denn auf welcher Schicht findet der arping statt und auf welcher Schicht die erfolgreiche Verbindung nach der statischen Konfiguration durch den dhcpcd? Warum sollte arping im Vorfeld nicht möglich und nach der statischen (ohne dhcp) Zuweisung plötzlich funktionieren?

  • Quote

    Ich verstehe nur nicht, warum man für _jede_ SSID auch eine statische IP brauchen soll.

    Diese Frage verstehe ich nun nicht. ^^(Soweit die an mich gerichtet war.)


    Man braucht das ja nicht. Das macht nur Sinn, wenn der User aus welchen Gründen auch immer eine statische IP will.

    Quote

    Dann stellt sich die Frage wie zuverlässig bzw. wie geeignet diese arping Option überhaupt ist.

    Gute Frage! Ich hab keine Ahnung wozu ein arping gemacht wird, wenn die Liste eh von oben nach unten abgearbeitet wird.

  • Man braucht das ja nicht. Das macht nur Sinn, wenn der User aus welchen Gründen auch immer eine statische IP will.

    Gute Frage! Ich hab keine Ahnung wozu ein arping gemacht wird, wenn die Liste eh von oben nach unten abgearbeitet wird.

    Doch, ich denke schon, dass man auch ein (oder mehrere?) Profil mit statischer IP-Adresse benötigt für den Fall, dass der PI sich mit einem WLAN-Verbunden hat das keinen DHCP-Server hat.

    arping soll doch für den dhcpcd feststellen mit welchem WLAN-Router (mit oder ohne DHCP-Server) sich der wpa_supplicant verbunden hat. Wenn arping das festgestellt hat und der WLAN-Router einen DHCP-Server hat, warum wird dann in diesem Fall noch das "profil" zum zuweisen einer statischen IP-Adresse benötigt, denn es wird doch per dhcp zugewiesen?

    Mit dem "Abarbeiten von oben nach unten" meinte ich den Fall, wenn arping nicht möglich ist. Es muss dann ja, ein "Abarbeiten" aller Einträge erforlgen, denn nach welchen Kriterium sonst sollte sich der dhcpcd für eines der statischen Profile entscheiden?

  • Quote

    denn nach welchen Kriterium sonst sollte sich der dhcpcd für eines der statischen Profileentscheiden?

    Vermutlich nach einer der erreichbaren SSID, die in der wpa_supplicant.conf eingetragen sind, ist aber nur geraten. Nur was wenn mehrere eingetragene Netzwerke verfügbar sind? :conf:


    Ich sehe schon, das wird ein kurzes Wochenende.

  • Vermutlich nach einer der erreichbaren SSID, die in der wpa_supplicant.conf eingetragen sind, ...

    Nein, das ist nicht möglich, denn der wpa_supplicant stellt lediglich eine WLAN-Verbindung her, so wie ein Kabel eine LAN-Verbindung herstellt.


    Das zuweisen der IP-Adresse (statisch oder per dhcp) ist unabhängig von der hergestellten WLAN-Verbindung.

    Wenn die Zuweisung statisch ist (d. h. nicht per dhcp), dann kann diese sogar schon vor dem Herstellen der WLAN-Verbindung statt finden.


    EDIT:


    Es steht so nicht in der manpage, aber ich denke arping soll/kann verwendet werden, zum konfigurieren von _mehreren/verschiedenen_ statischen IP-Adressen mit Hilfe der dhcpcd.conf. Es sind keine fall-back Profile und hat auch nichts mit dem WLAN zu tun, denn man kann diese Konfiguration mit arping auch bei einer Kabelverbindung benutzen.

  • Nein, das ist nicht möglich, denn der wpa_supplicant stellt lediglich eine WLAN-Verbindung her, so wie ein Kabel eine LAN-Verbindung herstellt.


    Das zuweisen der IP-Adresse (statisch oder per dhcp) ist unabhängig von der hergestellten WLAN-Verbindung.

    Wenn die Zuweisung statisch ist (d. h. nicht per dhcp), dann kann diese sogar schon vor dem Herstellen der WLAN-Verbindung statt finden.

    Ich glaube, genau das ist das Phänomen, auf welches viele mit falschem Blickwinkel gucken. Das eine ist die technische Verbindung, entweder via Kabel oder per Funk, eben so wie Du es beschrieben hast .... das andere ist die logische Netzwerk-Verbindung, die eine IP-Adresse benötigt. Aber der Zeitpunkt, wann einem Interface eine IP-Adresse zugewiesen (wodurch auch immer) wird oder werden kann, ist losgelöst von dem Zeitpunkt, wann ein Interface eine technische Verbindung herstellt oder hergestellt hat.


    Derwegen meinte ich ja... WLAN-Interface starten, eben nach SSID suchen, via Service-Unit mit SSID verbinden... und gut is... und warum der gleiche Rechner unterschiedliche statisch IP bei verschiedenen SSID haben soll, verstehe ich auch nicht.... noch nicht mal, welchen Vorteil überhaupt eine statische IP-Adresse hier bietet, wenn es sich um ein mobiles Gerät handelt. Warum nicht einfach per DHCP eine Adresse vom Router vergeben lassen?

  • .. und warum der gleiche Rechner unterschiedliche IP bei verschiedenen SSID haben soll, verstehe ich auch nicht.... noch nicht mal, welchen Vorteil überhaupt eine statische IP-Adresse hier bietet, wenn es sich um ein mobiles Gerät handelt.

    Ich denke die statische IP-Adresse hängt mit der Verwendung von arping zusammen (siehe mein EDIT oben).

    Ohne statische IP-Adresse wird m. E. das mit arping nicht funktionieren.

  • Nein, das ist nicht möglich, denn der wpa_supplicant stellt lediglich eine WLAN-Verbindung her, so wie ein Kabel eine LAN-Verbindung herstellt.

    Ok. Da hatte ich einen Denkfehler durch "Altlasten". :blush: In der /etc/network/interfaces wurde ja damals beides vermischt