wpa_supplicant
A wpa_supplicant egy kérelmező program. (Kérő, kéregető, szuplikáció, szuplikáns). A Wi-Fi hitelesítést bonyolítja le (ami a Wi-Fi kapcsolatunk létrejötte előtt szokott megtörténni), így ő maga is a teljes hálózatkezelés részét képezi. Opcionálisan képes az interfészek megjelenítésére is.
Telepítés
Előfeltételként előfordulhat, hogy a vezeték nélküli támogatást aktiválni kell a kernelben az IEEE 802.11 szakaszban leírtak szerint, valamint a szükséges vezeték nélküli eszköz-illesztőprogramokat.[1]
USE jelölőzászlók
USE flags for net-wireless/wpa_supplicant IEEE 802.1X/WPA supplicant for secure wireless transfers
+ap
|
Add support for access point mode |
+fils
|
Add support for Fast Initial Link Setup (802.11ai) |
+hs2-0
|
Add support for 802.11u and Passpoint for HotSpot 2.0 |
+mbo
|
Add support Multiband Operation |
+mesh
|
Add support for mesh mode |
broadcom-sta
|
Flag to help users disable features not supported by broadcom-sta driver |
dbus
|
Enable dbus support for anything that needs it (gpsd, gnomemeeting, etc) |
eap-sim
|
Add support for EAP-SIM authentication algorithm |
eapol-test
|
Build and install eapol_test binary |
fasteap
|
Add support for FAST-EAP authentication algorithm |
macsec
|
Add support for wired macsec |
p2p
|
Add support for Wi-Fi Direct mode |
privsep
|
Enable wpa_priv privledge separation binary |
ps3
|
Add support for ps3 hypervisor driven gelic wifi |
qt6
|
Add support for the Qt 6 application and UI framework |
readline
|
Enable support for libreadline, a GNU line-editing library that almost everyone wants |
selinux
|
!!internal use only!! Security Enhanced Linux support, this must be set by the selinux profile or breakage will occur |
smartcard
|
Add support for smartcards |
tdls
|
Add support for Tunneled Direct Link Setup (802.11z) |
tkip
|
Add support for WPA TKIP (deprecated due to security flaws in 2009) |
uncommon-eap-types
|
Add support for GPSK, SAKE, GPSK_SHA256, IKEV2 and EKE |
wep
|
Add support for Wired Equivalent Privacy (deprecated due to security flaws in 2004) |
wimax
|
Add support for Wimax EAP-PEER authentication algorithm |
wps
|
Add support for Wi-Fi Protected Setup |
Emerge
A USE jelölőzászlók áttekintése után telepítse a net-wireless/wpa_supplicant programcsomagot a Portage csomagkezelő emerge parancsával:
root #
emerge --ask net-wireless/wpa_supplicant
Közvetlen kapcsolódás
Gyors kapcsolódás
Azért, hogy ne tároljon egyértelmű szöveges jelszót az előzményekben, az előzmények le vannak tiltva. Ezt ideiglenesen kell használni annak tesztelésére, hogy lehetséges-e csatlakozni a hozzáférési ponthoz.
root #
set +o history
root #
wpa_supplicant -i wlp0s20f3 -c <(wpa_passphrase ssid password) &
root #
set -o history
Folyamatkimenet közvetlen csatlakozáskor: 'wpa_supplicant -iwlan0 -c /dev/fd/63'
Csatlakozás két interfészhez
A wpa_supplicant több interfészt (rádiót) vezérelhet úgy, hogy minden egyes interfészhez külön-külön egy folyamatot futtat, vagy csak egy folyamatot és opciók listáját futtatja a parancssorban. Minden interfész -N argumentummal van elválasztva. A következő parancs elindítja a wpa_supplicant programot két interfész számára:
user $
wpa_supplicant -c wpa1.conf -i wlan0 -D nl80211 -N -c wpa2.conf -i ath0 -D wext
Konfiguráció
Fájlok
Minimális konfiguráció
A wpa_supplicant magába foglal egy eszközt (wpa_passphrase), amely segítségével a parancssorból gyorsan írhat hálózati blokkot az előre megosztott kulcsú (WPA-PSK, más néven jelszóval védett) hálózatokhoz. A wpa_passphrase használata:
root #
wpa_passphrase ssid password >> /etc/wpa_supplicant/wpa_supplicant.conf
Ha a jelszót hash-ként tárolják tiszta szöveg helyett, akkor hozzá kell adni a key_MGMT=WPA-EAP és a eap=PEAP paramétereket a konfigurációs fájlhoz, amely alapértelmezés szerint nem jön létre.
Vezeték nélküli interfész beállítása
Egyetlen vezeték nélküli interfésszel való használathoz csak egy konfigurációs fájlra lesz szükség.
/etc/wpa_supplicant/wpa_supplicant.conf
# Allow users in the 'wheel' group to control wpa_supplicant
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=wheel
# Make this file writable for wpa_gui / wpa_cli
update_config=1
Azért, hogy a jogosultság nélküli felhasználók is kontrollálhassák a kapcsolatot a wpa_gui / wpa_cli segítségével, győződjön meg arról, hogy ezek a felhasználók benne vannak a wheel csoportban.
Ez a fájl alapértelmezés szerint nem létezik. Egy jól dokumentált sablon konfigurációs fájl átmásolható a /usr/share/doc/${P}/wpa_supplicant.conf.bz2 fájlból, ahol a P változó értéke a jelenleg emerge-vel összeállított wpa_supplicant neve és verziója:
root #
bzcat /usr/share/doc/${P}/wpa_supplicant.conf.bz2 > /etc/wpa_supplicant/wpa_supplicant.conf
WPA2 with wpa_supplicant
Csatlakozni bármely vezeték nélküli hozzáférési ponthoz, amely az AzÖnSSIDNeve szöveget mutatja:
/etc/wpa_supplicant/wpa_supplicant.conf
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=wheel
#ap_scan=0
#update_config=1
network={
ssid="AzÖnSSIDNeve"
psk="your-secret-key"
scan_ssid=1
proto=RSN
key_mgmt=WPA-PSK
group=CCMP TKIP
pairwise=CCMP TKIP
priority=5
}
Konfigurációs fájl dinamikus WEP kulcsokkal
/etc/wpa_supplicant/wpa_supplicant_wired.conf
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=wheel
network={
ssid="1x-test"
scan_ssid=1
key_mgmt=IEEE8021X
eap=TLS
identity="user@example.com"
ca_cert="/etc/cert/ca.pem"
client_cert="/etc/cert/user.pem"
private_key="/etc/cert/user.prv"
private_key_passwd="password"
eapol_flags=3
}
Többé-kevésbé minden konfigurációs módot engedélyez
A konfigurációs beállítások a kiválasztott SSID-ben használt biztonsági házirend alapján kerülnek felhasználásra. Ez többnyire tesztelésre szolgál, normál használatra nem ajánlott.
/etc/wpa_supplicant/wpa_supplicant_wired.conf
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=wheel
network={
ssid="example"
scan_ssid=1
key_mgmt=WPA-EAP WPA-PSK IEEE8021X NONE
pairwise=CCMP TKIP
group=CCMP TKIP WEP104 WEP40
psk="very secret passphrase"
eap=TTLS PEAP TLS
identity="user@example.com"
password="foobar"
ca_cert="/etc/cert/ca.pem"
client_cert="/etc/cert/user.pem"
private_key="/etc/cert/user.prv"
private_key_passwd="password"
phase1="peaplabel=0"
ca_cert2="/etc/cert/ca2.pem"
client_cert2="/etc/cer/user.pem"
private_key2="/etc/cer/user.prv"
private_key2_passwd="password"
}
Vezetékes 802.1x beállítás
A vezetékes kapcsolatokat kezelheti a wpa_supplicant segítségével, ami hasznos a 802.1X-et használó hálózatoknál. Hozzon létre egy külön konfigurációs fájlt, amely tartalmazza a vezetékes konfigurációt. Az alábbiakban példaként használjon tanúsítványokat a hitelesítéshez, és nézze meg a wpa_supplicant.conf man kézikönyvoldalt, ahol példákat találhat más módszerekre.
Ez használható vezetékes vagy roboswitch interfésszel (-Dwired vagy -Droboswitch parancssorban).
/etc/wpa_supplicant/wpa_supplicant_wired.conf
ctrl_interface=/var/run/wpa_supplicant
eapol_version=1
ap_scan=0
fast_reauth=1
network={
key_mgmt=IEEE8021X
eap=TLS
identity="COMPUTERAACT$@DOMAIN"
ca_cert="/etc/wpa_supplicant/ca.pem"
client_cert="/etc/wpa_supplicant/COMPUTERACCT.pem"
private_key="/etc/wpa_supplicant/COMPUTERAACT.key"
private_key_passwd="secret_password"
eapol_flags=0
}
Mivel a konfigurációs fájl bizalmas információkat tartalmaz, ezért ennek megfelelően használja a chmod -ot.
root #
chmod 600 /etc/wpa_supplicant/wpa_supplicant_wired.conf
A wpa_supplicant programnak szüksége van néhány extra paraméterre azért, hogy a fenti konfigurációt alkalmazza a vezetékes interfészen (eth0) Vegye figyelembe, hogy az alábbi wpa_supplicant argumentumok feltételezik, hogy a wpa_supplicant verziója >=2.6-r2 (-M, CONFIG_MATCH_IFACE=y)
/etc/conf.d/wpa_supplicant
wpa_supplicant_args="-ieth0 -Dwired -c/etc/wpa_supplicant/wpa_supplicant_wired.conf -M -c/etc/wpa_supplicant/wpa_supplicant.conf"
Hagyja, hogy a wpa_supplicant kezelje az interfészek indítását/leállítását az /etc/init.d fájlból való eltávolítással és a wpa_supplicant szolgáltatás engedélyezésével.
root #
/etc/init.d/net.eth0 stop
root #
/etc/init.d/net.wlan0 stop
root #
rm /etc/init.d/net.wlan0 /etc/init.d/net.eth0
root #
rc-update add wpa_supplicant
root #
/etc/init.d/wpa_supplicant start
Ellenőrizze a vezetékes interfész állapotát a wpa_cli segítségével.
Csatlakozzon közvetlenül a vezeték nélküli hozzáférési ponthoz a parancssorból:
root #
wpa_cli
wpa_cli v2.8 Copyright (c) 2004-2019, Jouni Malinen <j@w1.fi> and contributors This software may be distributed under the terms of the BSD license. See README for more details. Selected interface 'p2p-dev-wlan0' Interactive mode > interface eth0 Connected to interface 'eth0. > status bssid=00:00:00:00:00:00 freq=0 ssid= id=0 mode=station pairwise_cipher=NONE group_cipher=NONE key_mgmt=IEEE 802.1X (no WPA) wpa_state=COMPLETED ip_address=10.10.10.100 p2p_device_address=bb:bb:bb:bb:bb:bb address=aa:aa:aa:aa:aa:aa Supplicant PAE state=AUTHENTICATED suppPortStatus=Authorized EAP state=SUCCESS selectedMethod=13 (EAP-TLS) eap_tls_version=TLSv1 EAP TLS cipher=ECDHE-RSA-AES256-SHA ...
A hálózatkezelő beállítása
A Hálózatkezelésben felsorolt megoldások általában nem működnek együtt. Győződjön meg arról, hogy egyszerre csak az egyik szolgáltatás fut. Egynél több hálózatkezelési szolgáltatás elindítása beláthatatlan eredményekhez vezet!
Feltétlenül válassza ki a megfelelő beállítást.
A dhcpcd beállítása hálózatkezelőként
First follow the setup guide for dhcpcd.
Emerge wpa_supplicant (Version >=2.6-r2 is needed in order to get the CONFIG_MATCH_IFACE option added in April 2017):
root #
emerge --ask net-wireless/wpa_supplicant
Using OpenRC
Complete its conf.d file with the -M
option for the wireless network interface:
/etc/conf.d/wpa_supplicant
wpa_supplicant_args="-B -M -c /etc/wpa_supplicant/wpa_supplicant.conf"
In case authentication for the wired interface is needed, this configuration file should look like:
/etc/conf.d/wpa_supplicant
wpa_supplicant_args="-ieth0 -Dwired -c/etc/wpa_supplicant/wpa_supplicant_wired.conf -B -M -c/etc/wpa_supplicant/wpa_supplicant.conf"
With the configuration done, run it as a service:
root #
rc-update add wpa_supplicant default
root #
rc-service wpa_supplicant start
Using Systemd
Systemd allows a simpler per-device setup without needing to create the above conf.d files. As explained under wpa_supplicant item in the Native services section, a service symlink such as wpa_supplicant@wlan0.service
looks for a separate configuration file to manage the device wlan0
in this case.
To configure a specific device this way, first copy or rename the /etc/wpa_supplicant/wpa_supplicant.conf file as /etc/wpa_supplicant/wpa_supplicant-DEVNAME.conf where DEVNAME
should be the name of the device, such as wlan0
.
Then, navigate to /etc/systemd/system/multi-user.target.wants and create the symlink:
root #
ln -s /lib/systemd/system/wpa_supplicant@.service wpa_supplicant@DEVNAME.service
where DEVNAME
is same device name as in the conf file above.
Note the @ signs on both arguments in the symlink step.
Test the system:
root #
systemctl daemon-reload
root #
systemctl start wpa_supplicant@DEVNAME
root #
systemctl status wpa_supplicant@DEVNAME
Abban az esetben, ha szükség van az elavult WEXT illesztőprogramra, a vezeték nélküli illesztőprogram megváltoztatása segíthet megoldani azokat az eseteket, amikor az összekapcsolódik, majd azonnal megszakad a 3. ok miatt. Futtassa a wpa_supplicant -h parancsot, hogy megtekinthesse a fordításkor felépített, elérhető illesztőprogramok listáját.
/etc/conf.d/wpa_supplicant
set the driver to wextwpa_supplicant_args="-D wext"
Beállítás a netifrc számára
A Netifrc konfigurálása, hogy használja wpa_supplicant programot:
/etc/conf.d/net
modules_wlan0="wpa_supplicant"
config_wlan0="dhcp"
A fenti konfigurálás után érdemes megváltoztatni az engedélyeket, hogy a WiFi jelszavakat ne lássák egyszerű szövegben a számítógépet használók:[2]
root #
chmod 600 /etc/wpa_supplicant/wpa_supplicant.conf
A NetworkManager beállítása
A wpa_supplicant WiFi háttérként beállított NetworkManager a D-Bus segítségével szükség esetén elindítja a wpa_supplicant programot. Ezért ajánlott magát a wpa_supplicant szolgáltatást leállítva tartani a rendszerindításkor.
Használat
A wpa_gui használata
A wpa_supplicant használatának legegyszerűbb módja a wpa_gui interfész használata. Az engedélyezéséhez állítsa be a wpa_supplicant programot úgy, hogy a qt5
USE jelölőzászló engedélyezve van.
A wpa_cli használata
A wpa_supplicant program parancssori felhasználói felülettel is rendelkezik. A wpa_cli begépelése a parancssorba elindítja az interaktív módot a tabulátor-kiegészítéssel. Ha ebbe a parancssorba be írja a help
parancsot, akkor megjelenik az elérhető parancsok listája. (Kattintson a "Kibontás" gombra a wpa_cli parancs alábbi kimenetének megtekintéséhez):
user $
wpa_cli
wpa_cli v2.5 Copyright (c) 2004-2015, Jouni Malinen <j@w1.fi> and contributors This software may be distributed under the terms of the BSD license. See README for more details. Selected interface 'wlan0' Interactive mode > scan OK > scan_results bssid / frequency / signal level / flags / ssid 01:23:45:67:89:ab 2437 0 [WPA-PSK-CCMP+TKIP][WPA2-PSK-CCMP+TKIP][ESS] hotel-free-wifi > add_network 0 > set_network 0 ssid "hotel-free-wifi" OK > set_network 0 psk "password" OK > enable_network 0 OK <3>CTRL-EVENT-SCAN-RESULTS <3>WPS-AP-AVAILABLE <3>Trying to associate with 01:23:45:67:89:ab (SSID='hotel-free-wifi' freq=2437 MHz) <3>Associated with 01:23:45:67:89:ab <3>WPA: Key negotiation completed with 01:23:45:67:89:ab [PTK=CCMP GTK=TKIP] <3>CTRL-EVENT-CONNECTED - Connection to 01:23:45:67:89:ab completed [id=0 id_str=] > save_config OK > quit
Másik Wi-Fi rádióadóra váltáshoz:
user $
wpa_cli
wpa_cli v2.5 Copyright (c) 2004-2015, Jouni Malinen <j@w1.fi> and contributors This software may be distributed under the terms of the BSD license. See README for more details. > list_networks network id / ssid / bssid / flags 0 TAMO any 1 ORBI705 any 2 ORBI any 3 Tangerine any 4 271 any 5 POCO X3 Pro any 6 Orbi Guest any 7 hackerspace any 8 HUAWEI-25 a-2 any 9 A1-13 any > select_network 1
További részletek a kapcsolódásról az Arch Linux wikiben olvashat.[3]
Szerkesztés manuálisan
Természetesen a /etc/wpa_supplicant/wpa_supplicant.conf konfigurációs fájl manuálisan is szerkeszthető. Ez azonban nagyon munkaigényes lehet, ha a számítógépnek sok különböző hozzáférési ponthoz kell csatlakoznia.
Példák találhatók a wpa_supplicant.conf(5) kézikönyvoldalon és a /usr/share/doc/wpa_supplicant-2.4-r3/wpa_supplicant.conf.bz2-ban.
/etc/wpa_supplicant/wpa_supplicant.conf
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=wheel
ap_scan=1
network={
bssid=00:50:17:31:1a:11
ssid="YourSSID"
psk="your-secret-key"
scan_ssid=1
proto=RSN
key_mgmt=WPA-PSK
group=CCMP TKIP
pairwise=CCMP TKIP
priority=5
}
Automatikus csatlakozás bármely nem biztonságos hálózathoz
/etc/wpa_supplicant/wpa_supplicant.conf
network={
key_mgmt=NONE
priority=-999
}
Hibaelhárítás
Abban az esetben, ha nem a várt módon működik, akkor próbálkozzon az alábbiakkal, és elemezze a kimenetet.
Ellenőrizze az ismert hibákat
Ellenőrizze az USE jelölőzászlókat
Két USE jelölőzászló alapértelmezés szerint le van tiltva a régebbi wifi protokolloknál az ismert biztonsági hibák miatt: A tkip és a wep. Engedélyezze az USE jelölőzászlók használatát a régebbi Wi-Fi útválasztókhoz, és telepítse újra a wpa_supplicant programot.
rfkill: WLAN soft blocked
Ha az rfkill blokkolja az interfészt, akkor először keresse meg az interfész számát a következővel:
user $
rfkill list
0: ideapad_wlan: Wireless LAN Soft blocked: yes Hard blocked: no 1: ideapad_bluetooth: Bluetooth Soft blocked: yes Hard blocked: no 2: hci0: Bluetooth Soft blocked: yes Hard blocked: no 3: phy0: Wireless LAN Soft blocked: yes Hard blocked: no
Majd az interfész a következő módon oldható fel:
root #
rfkill unblock 3
Futtassa a wpa_supplicant programot hibakeresési módban
Feltétlenül állítsa le a wpa_supplicant minden futó példányát:
root #
killall wpa_supplicant
A következő opciók használhatók a hibakereséshez (kattintson a "Kibontás" gombra az alábbi kimenet megtekintéséhez):
root #
wpa_supplicant -Dnl80211 -iwlan0 -C/var/run/wpa_supplicant/ -c/etc/wpa_supplicant/wpa_supplicant.conf -dd
wpa_supplicant v2.2 random: Trying to read entropy from /dev/random Successfully initialized wpa_supplicant Initializing interface 'wlp8s0' conf '/etc/wpa_supplicant/wpa_supplicant.conf' driver 'nl80211' ctrl_interface '/var/run/wpa_supplicant' bridge 'N/A' Configuration file '/etc/wpa_supplicant/wpa_supplicant.conf' -> '/etc/wpa_supplicant/wpa_supplicant.conf' Reading configuration file '/etc/wpa_supplicant/wpa_supplicant.conf' ctrl_interface='DIR=/var/run/wpa_supplicant GROUP=wheel' update_config=1 Line: 6 - start of a new network block
Naplózás engedélyezése
Naplózás engedélyezése a Gentoo net.* szkriptek számára
/etc/conf.d/net
for usage with the setup for Gentoo net.* scriptsmodules_wlan0="wpa_supplicant"
wpa_supplicant_wlan0="-Dnl80211 -d -f /var/log/wpa_supplicant.log"
config_wlan0="dhcp"
Most az egyik parancssorban adjon ki egy tail parancsot a kimenet figyeléséhez. Egy másik parancssorban indítsa újra a net.wlan0 eszközt:
root #
tail -f /var/log/wpa_supplicant.log
root #
/etc/init.d/net.wlan0 restart
Hivatkozások
További olvasnivaló a témában
- iwd — a wireless daemon intended to replace wpa_supplicant
Külső források
- wpa_supplicant / hostapd Developers' documentation for wpa_supplicant and hostapd
- sample config for wpa_supplicant
- HOWTO: Remote access point with wpa_supplicant (Gentoo Forums)
- Extensible Authentication Protocol (Wikipedia)
- Extensible Authentication Protocol (wiki.freeradius.org)
- wpa_supplicant upstream just accepted patch to allow interface matching
- https://www.kb.cert.org/vuls/id/CHEU-AQNN3Z