====== Wireless LAN (WLAN) ======
===== WiFi =====
* [[https://de.wikipedia.org/wiki/IEEE_802.11]]
WiFi 1 (2,4 GHz) -> IEEE 802.11a -> A (6-54 Mbit/s)
WiFi 2 (2,4 GHz) -> IEEE 802.11b -> A (5,5-11 Mbit/s)
WiFi 3 (2,4 GHz) -> IEEE 802.11g -> G (6-54 Mbit/s)
WiFi 1 (5 GHz) -> IEEE 802.11h -> H (6-54 Mbit/s)
IEEE 802.11-2007 -> Zusammenfassung der Version von 1999 mit den 8 Erweiterungen (802.11a, b, d, e, g, h, i, j) zu einem einzigen Standard.
WiFi 4 (2,4/5 GHz) -> IEEE 802.11n -> N (72–600 MBit/s)
IEEE 802.11-2012 -> Zusammenfassung der 10 Erweiterungen (802.11k, r, y, n, w, p, z, v, u, s) mit dem Basis-Standard 802.11-2007 zu einem einzigen Standard.
WiFi 5 (5,0 Ghz) -> IEEE 802.11ac -> AC (433–6933 MBit/s)
WiFi 6 (5,0 Ghz) -> IEEE 802.11ax -> AX (600–9608 MBit/s)
WiFi ? (60 GHz) -> IEEE 802.11ad -> AD (26–9630 MBit/s)
WiFi ? (900 MHz) -> IEEE 802.11ah -> AH (16-256 MBit/s)
IEEE 802.11-2016 -> Zusammenfassung der 5 Erweiterungen (802.11ae, aa, ad, ac, af) mit dem Basis-Standard 802.11-2012.
IEEE 802.11be -> BE Der Standard soll ab 2024 nicht nur Kommunikation ermöglichen, sondern auch Wi-Fi Sensing (SENS) unterstützen und Bewegungsdaten messen und auswerten können.
WiFi ? (5,0 Ghz) -> IEEE 802.11p -> P (27 MBit/s) -> Erweiterung zu 802.11a für den Einsatz in Fahrzeug-zu-Fahrzeug-Netzen, 2010, auch unter DSRC bekannt
===== WIFI URI / QR Code =====
* siehe WPA3 Specification: [[https://wi-fi.org/system/files/WPA3%20Specification%20v3.5.pdf#%5B%7B%22num%22%3A108%2C%22gen%22%3A0%7D%2C%7B%22name%22%3A%22XYZ%22%7D%2C33%2C734%2C0%5D|https://wi-fi.org/system/files/WPA3%20Specification%20v3.5.pdf]] (7 WIFI URI)
command -v qrencode > /dev/null 2>&1 || sudo apt -yU install qrencode
ssid=""
password=""
qrencode -s 12 -o "${ssid,,}.png" "WIFI:T:WPA;R:3;S:${ssid};P:${password};;"
Achtung: SSID und Passwort sind case sensitiv (Groß-/Kleinschreibung ist wichtig)
===== ab Ubuntu 20.04 LTS =====
* [[https://www.serverlab.ca/tutorials/linux/administration-linux/how-to-configure-networking-in-ubuntu-20-04-with-netplan/|How to set WiFi Authentication / Configuring WPA and EAP WiFi Connections]]
root@ubuntu:~# apt install wpasupplicant
### WPA 2
ctrl_interface=/var/run/wpa_supplicant
ctrl_interface_group=0
eapol_version=1
ap_scan=1
fast_reauth=1
network={
ssid="WLAN-1"
proto=RSN
group=CCMP
pairwise=CCMP
key_mgmt=WPA-PSK
psk="geheim"
}
network:
version: 2
renderer: networkd
wifis:
wlan0:
dhcp4: yes
dhcp6: yes
access-points:
"WLAN-1":
password: "geheim"
root@ubuntu:~# wpa_supplicant -B -c/etc/wpa_supplicant/wpa_supplicant.conf -iwlan0
root@ubuntu:~# netplan generate
root@ubuntu:~# netplan apply
root@ubuntu:~# ip a
===== vor Ubuntu 20.04 =====
=== Atheros W-Lan-Karten ===
__Ubuntu:__
# aptitude -y install wpasupplicant wireless-tools
__Fedora:__
* [[http://www.fedorawiki.de/index.php/Atheros_Karten]]
===== Installation =====
* [[http://fedorawiki.de/index.php/Wpa_supplicant]]
Die Netzwerkkonfiguration sieht bei Wireless LAN so aus:
# vi /etc/sysconfig/wpa_supplicant
# vi /etc/network/interfaces
...
auto wlan0
iface wlan0 inet dhcp
wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf
==== Windowstreiber (NdisWrapper) ====
Wenn die W-LAN-Karte bzw. der W-LAN-USB-Stick nicht von einem Linux-Kerneltreiber unterstützt wird, dann muss man den Windoofs-Treiber mit Hilfe von [[NdisWrapper]] installieren.
==== WPA/WPA2-Konfiguration (allgemein) ====
um zu sehen ob die WLAN-NIC abgeschaltet ist:
# rfkill list
0: phy0: Wireless LAN
Soft blocked: no
Hard blocked: yes
...wie wir oben sehen ("//Hard blocked: __yes__//") ist die WLAN-NIC an unserem Laptop abgeschaltet.
Jetzt muss erst einmal der WLAN-Schalter wieder eingeschaltet werden, sonst können wir gleich aufhören.
Wenn das W-LAN-Gerät erkannt wird (mit oder ohne NdisWrapper), dann kann man sich den Namen des Wireless-LAN-Gerätes anzeigen lassen:
# iwconfig 2>&1 | awk '!/no wireless/ && /^[a-zA-Z]/ {print $1}'
wlan0
W-LAN-NIC aktivieren:
# ifconfig wlan0 up
oder
# ip link set wlan0 up
Alle verfühgbaren Kanäle von allen Netzwerkkarten auflisten:
# iwlist chan
Alle verfühgbaren Kanäle von wlan0 auflisten:
# iwlist wlan0 chan
wlan0 13 channels in total; available frequencies :
Channel 01 : 2.412 GHz
Channel 02 : 2.417 GHz
Channel 03 : 2.422 GHz
Channel 04 : 2.427 GHz
Channel 05 : 2.432 GHz
Channel 06 : 2.437 GHz
Channel 07 : 2.442 GHz
Channel 08 : 2.447 GHz
Channel 09 : 2.452 GHz
Channel 10 : 2.457 GHz
Channel 11 : 2.462 GHz
Channel 12 : 2.467 GHz
Channel 13 : 2.472 GHz
Current Frequency:2.412 GHz (Channel 1)
Jetzt können wir über das Wireless-Netzwerkgerät nach APs bzw. WLAN-Zellen scannen.
Wichtig sind hierbei die folgenden Ausgabezeilen:
bei WPA1:
- ESSID
- WPA Version 1
- Group Cipher
- Pairwise Ciphers
- Authentication Suites
bei WPA2:
- ESSID
- IEEE 802.11i/WPA2 Version 1
- Group Cipher
- Pairwise Ciphers
- Authentication Suites
In der Konfigurationsdatei werden sie mit folgenden Parametern angegeben:
- ssid=...
- proto=...
- group=...
- pairwise=...
- key_mgmt=WPA-...
Das **proto** für WPA2 heißt **RSN**. Wenn man möchte, kann man die MAC-Adresse (00:15:35:85:45:25) unter **bssid** auch noch angeben.
**WICHTIG:**
Die Optionen **''proto''**, **''group''**, **''pairwise''** und **''key_mgmt''** dürfen nicht in Anführungszeichen oder Hochkommatas eingefasst werden!
W-LAN-NICs anzeigen:
# iwconfig
lo no wireless extensions.
eth0 no wireless extensions.
wlan0 IEEE 802.11bgn ESSID:"AP-Name"
Mode:Managed Frequency:2.412 GHz Access Point: 40:41:13:15:C1:18
Bit Rate=18 Mb/s Tx-Power=20 dBm
Retry long limit:7 RTS thr:off Fragment thr:off
Encryption key:off
Power Management:off
Link Quality=50/70 Signal level=-60 dBm
Rx invalid nwid:0 Rx invalid crypt:0 Rx invalid frag:0
Tx excessive retries:0 Invalid misc:0 Missed beacon:0
==== /root/bin/wpa_conf_generator.sh ====
Dieses Script generiert für jede erreichbare WLAN-Zelle einen Konfigurationsblock,
den man in die Datei ///etc/wpa_supplicant/wpa_supplicant.conf// eintragen kann.
Man muss sich nur den Konfigurationsblock raussuchen, für den man das gültige
Passwort kennt. ;-)
#!/bin/bash
#
# Dieses Script generiert eine "wpa_supplicant.conf"-CFG
# für alle erreichbaren W-LAN-Zellen.
#
# Es muss nur noch das richtige Passwort eingegeben werden!
#
if [ -z "${1}" ] ; then
echo "$0 wlan0"
exit
else
WLANNIC="${1}"
fi
v1loeschen()
{
WLANESSID=""
WLANPROTO=""
}
v2loeschen()
{
WLANWPAV=""
WLANKEYMGMT=""
WLANGROUPCIPHER=""
WLANPAIRWISECIPHERS=""
}
ausgeben()
{
echo "#-----------------------------------------------------------------------------#
# /etc/wpa_supplicant/wpa_supplicant.conf
# ZELLE ${ZELLE}
# ${WLANWPAV}
ctrl_interface=/var/run/wpa_supplicant
ctrl_interface_group=0
eapol_version=1
ap_scan=1
fast_reauth=1
network={
scan_ssid=\"1\"
ssid=\"${WLANESSID}\"
proto=${WLANPROTO}
group=${WLANGROUPCIPHER}
pairwise=${WLANPAIRWISECIPHERS}
key_mgmt=${WLANKEYMGMT}
psk=\"\"
}
"
}
v1loeschen
v2loeschen
iwlist ${WLANNIC} scan | sed 's/IE://;s/[:]/ /' | while read WVAR WREST
do
case "${WVAR}" in
Unknown)
v2loeschen
;;
Cell)
v1loeschen
v2loeschen
ZELLE="$(echo "${WREST}"|awk '{print $1,"/",$NF}')"
;;
ESSID)
WLANESSID="$(echo "${WREST}"|awk '{gsub("\""," ");print $NF}')"
;;
WPA)
WLANWPAV="WPA-1"
WLANPROTO="${WVAR}"
;;
IEEE)
WLANWPAV="WPA-2"
WLANPROTO="$(echo "${WREST}"|awk '{print $1}'|awk -F'/' '{proto=$2;if ($2 == "WPA") proto="WPA";if ($2 == "WPA2") proto="RSN";print proto}')"
;;
Group)
WLANGROUPCIPHER="$(echo "${WREST}"|awk '{print $NF}')"
;;
Pairwise)
WLANPAIRWISECIPHERS="$(echo "${WREST}"|awk '{print $NF}')"
;;
Authentication)
WLANKEYMGMT="WPA-$(echo "${WREST}"|awk '{print $3}')"
;;
esac
if [ -n "${WLANESSID}" -a -n "${WLANPROTO}" -a -n "${WLANGROUPCIPHER}" -a -n "${WLANPAIRWISECIPHERS}" -a -n "${WLANKEYMGMT}" ] ; then
ausgeben
v2loeschen
fi
done
===== Konfiguration =====
==== FRITZ!Box - WPA+WPA2 ====
So sieht ein AP einer //FRITZ!Box Fon WLAN 7170// aus, die auf **WPA+WPA2** eingestellt ist:
# iwlist wlan0 scan
wlan0 Scan completed :
Cell 01 - Address: 00:15:0C:85:66:80
Channel:9
Frequency:2.452 GHz (Channel 9)
Quality=23/100 Signal level=23/100
Encryption key:on
ESSID:"AP-Name"
Bit Rates:1 Mb/s; 2 Mb/s; 5.5 Mb/s; 11 Mb/s
Bit Rates:6 Mb/s; 9 Mb/s; 12 Mb/s; 18 Mb/s; 24 Mb/s
36 Mb/s; 48 Mb/s; 54 Mb/s
Mode:Master
Extra:tsf=00000002261bb30a
Extra: Last beacon: 944ms ago
IE: Unknown: 0008574C414E2D44534C
IE: Unknown: 010482848B96
IE: Unknown: 030109
IE: Unknown: 2A0104
IE: IEEE 802.11i/WPA2 Version 1
Group Cipher : TKIP
Pairwise Ciphers (1) : CCMP
Authentication Suites (1) : PSK
IE: Unknown: 32080C1218243048606C
IE: WPA Version 1
Group Cipher : TKIP
Pairwise Ciphers (1) : TKIP
Authentication Suites (1) : PSK
IE: Unknown: DD180050F2020101800003A4000027A4000042435E0062322F00
=== WPA-Konfiguration ===
Dann würde die WPA-Konfiguration so aussehen:
# vi /etc/wpa_supplicant/wpa_supplicant.conf
ctrl_interface=/var/run/wpa_supplicant
ctrl_interface_group=0
eapol_version=1
ap_scan=1
fast_reauth=1
network={
scan_ssid=1
ssid="AP-Name"
proto=WPA
group=TKIP
pairwise=TKIP
key_mgmt=WPA-PSK
psk="123Dwxaf9352abwG"
}
=== WPA2-Konfiguration ===
Dann würde die WPA2-Konfiguration so aussehen:
# vi /etc/wpa_supplicant/wpa_supplicant.conf
ctrl_interface=/var/run/wpa_supplicant
ctrl_interface_group=0
eapol_version=1
ap_scan=1
fast_reauth=1
network={
scan_ssid=1
ssid="AP-Name"
proto=RSN
group=TKIP
pairwise=CCMP
key_mgmt=WPA-PSK
psk="123Dwxaf9352abwG"
}
==== FRITZ!Box - WPA2 ====
So sieht ein AP einer //FRITZ!Box Fon WLAN 7170// aus, die auf **WPA2** eingestellt ist:
# iwlist wlan0 scan
wlan0 Scan completed :
Cell 01 - Address: 00:15:0C:85:66:80
Channel:9
Frequency:2.452 GHz (Channel 9)
Quality=23/100 Signal level=23/100
Encryption key:on
ESSID:"AP-Name"
Bit Rates:1 Mb/s; 2 Mb/s; 5.5 Mb/s; 11 Mb/s
Bit Rates:6 Mb/s; 9 Mb/s; 12 Mb/s; 18 Mb/s; 24 Mb/s
36 Mb/s; 48 Mb/s; 54 Mb/s
Mode:Master
Extra:tsf=0000000017703539
Extra: Last beacon: 984ms ago
IE: Unknown: 0008574C414E2D44534C
IE: Unknown: 010482848B96
IE: Unknown: 030109
IE: Unknown: 2A0104
IE: IEEE 802.11i/WPA2 Version 1
Group Cipher : CCMP
Pairwise Ciphers (1) : CCMP
Authentication Suites (1) : PSK
IE: Unknown: 32080C1218243048606C
IE: Unknown: DD180050F2020101800003A4000027A4000042435E0062322F00
=== WPA2-Konfiguration ===
Dann würde die WPA2-Konfiguration so aussehen:
# vi /etc/wpa_supplicant/wpa_supplicant.conf
ctrl_interface=/var/run/wpa_supplicant
ctrl_interface_group=0
eapol_version=1
ap_scan=1
fast_reauth=1
network={
scan_ssid=1
ssid="AP-Name"
proto=RSN
group=CCMP
pairwise=CCMP
key_mgmt=WPA-PSK
psk="123Dwxaf9352abwG"
}
In diesem Fall unterscheiden sich nur die beiden Einstellungen zwischen //WPA+WPA2// und //WPA2// im **Group Cipher**.
==== FRITZ!WLAN-USB-Stick (mit Ubuntu 8.04) ====
=== Installation ===
Ich habe den AVM-Treiber Version 1.00.00p1 und Linux-Kernel 2.6.24-16 eingesetzt.
* [[http://wiki.ubuntuusers.de/FRITZ!WLAN_USB_Stick]]
* [[http://forum.ubuntuusers.de/topic/avm-usb-stick-8.04/4/#post-1402740]]
**Es müssen zwei Dateien im AVM-Linux-Treiber vor dem Übersetzen geändert (gepatcht) werden!
Sonst wird sich "iwconfig" immer mit einem Crash verabschieden.
Das führte auch zu einem nicht funktionierenden Network-Manager und anschließendem "Hänger" des gesamten Systems!**
AVM-Treiber auspacken:
# tar xzf fwlanusb-1.00.00p1.tar.gz
In der Datei //''fritz/src/defs.h''// diese Zeile suchen:
typedef unsigned long uintptr_t;
und dann auskommentieren (bzw. entfernen):
//typedef unsigned long uintptr_t;
In der Datei //''fritz/src/wext.c''// diese Zeile suchen:
strcpy(wrqu->name, "IEEE 802.11b/g");
und dann ersetzen durch:
snprintf(wrqu->name, IFNAMSIZ, "IEEE 802.11b/g");
Evtl. ist es notwendig, vorher das alte Modul zu entfernen:
# rmmod fwlanusb
reguläre Installationsanleitung lesen:
# links fritz/Liesmich.html
Nun mit dem regulären Install-Script neu übersetzen und installieren:
# cd fritz || exit
# ./install
jetzt kann man nachsehen ob das Modul erfolgreich geladen wurde:
# lsmod | fgrep fwlanusb
=== Beispiel-Konfigurationsdateien ===
Beispielkonfigurationen liegen in zwei Dateien bei:
== fritz/config-wpa ==
network={
ssid="hier die ESSID eintragen, wird beim eingangs gestarteten Scan ausgegeben"
proto=WPA
group=TKIP
pairwise=TKIP
key_mgmt=WPA-PSK
psk="hier steht der geheime Schluessel"
== fritz/config-wpa2 ==
network={
ssid="hier die ESSID eintragen, wird beim eingangs gestarteten Scan ausgegeben"
proto=RSN
group=CCMP
pairwise=CCMP
key_mgmt=WPA-PSK
psk="hier steht der geheime Schluessel"