Ich möchte meinen so konfigurieren, /etc/network/interfaces
dass er verschiedene Zugriffspunkte erkennt und sich entsprechend mit ihnen verbindet. Dies ist der aktuelle Status dieser Datei:
source /etc/network/interfaces.d/*
# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
allow-hotplug eth0
iface eth0 inet dhcp
auto ra0
iface ra0 inet dhcp
wpa-ssid MyNet
wpa-psk 00d8f778e1e86be0961aa767564d7364ee44fcbd704e4e31ee6c4af0f855c32f
Dies erkennt erfolgreich eine Ethernet-Verbindung und stellt eine Verbindung zu MyNet her, wenn es verfügbar ist. Wie konfiguriere ich es, damit es mehrere Zugriffspunkte erkennen kann?
Hierscheint die Antwort zu sein, aber ich konnte die Anweisungen nicht verstehen.
Ich habe mehrere GUIs ausprobiert (nm, wicd usw.), aber keine davon scheint auf meinem Laptop zu funktionieren. Ich bevorzuge es jedenfalls, es über die Befehlszeile zu tun.
Antwort1
Um mehrere WLAN-Konfigurationen/SSIDs anzusprechen, sollten Sie besser auf dieser wpa_supplicant
Ebene arbeiten.
Belassen Sie Ihre Schnittstelle einfach wie folgt:
auto ra0
iface ra0 inet dhcp
Installieren Sie wpa_supplicant mit:
apt get install wpasupplicant
Sie können in mehrere Standorte angeben wpa_supplicant.conf
, wobei die SSID bestimmt, welche Konfiguration verwendet wird. Wie in:
network={
ssid="ssid2"
psk="ssid2 PASSWORD"
}
network={
ssid="ssid1"
psk="ssid1 PASSWORD"
}
Starten Sie den Dienst jedes Mal neu, wenn Sie eine Konfiguration für eine neue SSID hinzufügen.
Beim Verbinden mit einem AP wird, abhängig vom SSID-Namen, wpa_supplicant
automatisch die entsprechende Konfiguration ausgewählt.
Antwort2
Um /etc/network/interfaces
die Arbeit mit mehreren Standorten zu konfigurieren, müssen Sie den Unterschied zwischen logischen und physischen Schnittstellen verstehen. Physische Schnittstellen entsprechen den Hardwaregeräten, die Sie in Ihrem System installiert haben, und werden durch ein bestimmtes Benennungsschema identifiziert (wlan0, wlan1, eth0, ra0 usw.).
In Ihrer /etc/network/interfaces
können Sie für jede physische Schnittstelle nur eine Konfiguration angeben, daher kommen hier logische Schnittstellen ins Spiel. Sie können mehrere logische Schnittstellen für eine physische Schnittstelle haben. Dies wird als Zuordnung bezeichnet. Um eine logische Schnittstelle einer physischen Schnittstelle zuzuordnen, fügen Sie dies zu/etc/network/interfaces
mapping ra0 # map physical interface ra0...
map home work # ...to 'home' and 'work' logical interfaces
Anschließend schreiben Sie die Konfiguration für jede dieser Schnittstellen:
iface home inet dhcp # configuration stanza for 'home' logical interface
wpa-ssid Home
wpa-psk 00d8f778e1e86be0961aa767564d7364ee44fcbd704e4e31ee6c4af0f855c32f
iface work inet dhcp # configuration stanza for 'work' logical interface
wpa-ssid Work
wpa-psk 00d8f778e1e86be0961aa767564d7364ee44fcbd704e4e31ee6c4af0f855c32f
Dies wird natürlich nicht funktionieren, da das System nicht weiß, welche Schnittstelle es verwenden soll. Daher verwenden wir , guessnet
um dem System bei der Auswahl einer Konfiguration zu helfen.
sudo apt-get install guessnet
Anschließend verwenden wir guessnet
in der Mapping-Strophe:
mapping ra0
script /usr/sbin/guessnet-ifupdown # <-- We added this
map home work
Guessnet
testet die Netzwerke anhand bestimmter Kriterien (IP, ESSID, MAC-Adressen) und wählt die Konfiguration aus, die diese Tests nicht besteht. Im folgenden Beispiel wird, wenn ein Netzwerk mit der ESSID „Work“ verfügbar ist, die ra0
zuvor definierte Schnittstelle eine Verbindung zu diesem herstellen und diese Konfiguration anwenden:
iface work inet dhcp
test wireless essid Work # We test if the ESSID of the network is 'Work'
wpa-ssid Work
wpa-psk 00d8f778e1e86be0961aa767564d7364ee44fcbd704e4e31ee6c4af0f855c32f
Antwort3
In unserem Fall wollten wir verschiedene WLANs bestimmten Geräten zuordnen. Dazu haben wir eine systemd-Vorlage erstellt:
# cat /usr/lib/systemd/system/wpa_supplicant\@.service
[Unit]
Description=WPA supplicant for %i
Before=network.target
After=dbus.service
Wants=network.target
IgnoreOnIsolate=true
[Service]
ExecStart=/sbin/wpa_supplicant -s -O /run/wpa_supplicant-%i -c/etc/wpa_supplicant/wpa_supplicant-%i.conf -i%i
[Install]
WantedBy=multi-user.target
Dann habe ich die Konfigurationen wie folgt erstellt:
==> /etc/wpa_supplicant/wpa_supplicant-wlan0.conf <==
network={
ssid="net0"
psk="secretpass0"
}
==> /etc/wpa_supplicant/wpa_supplicant-wlan1.conf <==
network={
ssid="net1"
psk="secretpass1"
}
und startete sie wie folgt:
systemctl enable --now wpa_supplicant@wlan0
systemctl enable --now wpa_supplicant@wlan1
Vorbehalt:
Seltsamerweise scheint es meinen Dienst ignoriert und unter folgendem ausgeführt zu haben dhcpcd
:
# ps ax|grep wpa
653 ? Ss 0:00 wpa_supplicant -B -c/etc/wpa_supplicant/wpa_supplicant-wlan1.conf -iwlan1
668 ? Ss 0:00 wpa_supplicant -B -c/etc/wpa_supplicant/wpa_supplicant-wlan0.conf -iwlan0
# systemctl status 668
● dhcpcd.service - DHCP Client Daemon
Loaded: loaded (/lib/systemd/system/dhcpcd.service; enabled; vendor preset: enabled)
Drop-In: /etc/systemd/system/dhcpcd.service.d
└─wait.conf
Active: active (running) since Sat 2023-07-08 21:16:25 BST; 1min 23s ago
Docs: man:dhcpcd(8)
Process: 545 ExecStart=/usr/sbin/dhcpcd -w -q (code=exited, status=0/SUCCESS)
Tasks: 3 (limit: 1993)
Memory: 4.3M
CPU: 775ms
CGroup: /system.slice/dhcpcd.service
├─653 wpa_supplicant -B -c/etc/wpa_supplicant/wpa_supplicant-wlan1.conf -iwlan1
├─668 wpa_supplicant -B -c/etc/wpa_supplicant/wpa_supplicant-wlan0.conf -iwlan0
└─701 /usr/sbin/dhcpcd -w -q
dhclient
Vielleicht unterstützt der Debian-Netzwerkstapel wpa_supplicant-<device>.conf
Dateien direkt und erledigt dies automatisch (beachten Sie, dass meine /etc/network/interfaces*-Dateien leer sind). Wenn dies der Fall ist, benötigen Sie lediglich unterschiedliche Konfigurationen für unterschiedliche Geräte ... aber bei uns funktioniert es trotzdem. Bitte kommentieren Sie, wenn Sie herausfinden, warum das so ist.