Linux PC WLAN AP
Allgemeines
Manchmal kommt es vor, dass man zum Testen von WLAN-Clients mal eben schnell einen AccessPoint nutzen muss. Um nicht die Zugangsparameter im HeimWLAN anpassen zu muessen, empfiehlt es sich einen LINUX-PC als WLAN-ACCESS-PONIT arbeiten zu lassen. In einem konkreten Fall will sich das WLAN-Modul der RD6006 automatisch mit dem stärksten WLAN-AP verbinden. Da hilft es auch nix irgendwo irgendeinen AP zu aktivieren, wenn ein "falscher" AP naeher dran ist. Man will ja auch mit dem Geraffel nicht den Standort wechseln, nur um einen Client dazu zu bewegen, sich endlich mit dem gewuenschten AP zu verbinden. Ein ganz schlechte Idee ist dafuer einen ausgedienten AP (siehe WRT54GL Revival) verwenden zu wollen. Spaetestens bei der Analyse mittels tcpdump oder gar wireshark ist der Oldie ueberfordert.
Einstieg
Ein brauchbaren Einstieg bietet folgender Artikel: PCWelt
Die Anleitung fuer Ubuntu mit dem NetworkManager und den Raspi mit Debian und hostapd deckt ein breites Spektrum von Anforderungen ab. Leider sind ein paar Abweichungen zu OpenSuSE (15.3) festzustellen.
Da ich ein Kind der Console bin, fand ich diesen Artikel ganz hilfreich.
Inbetriebnahme
Erst habe ich es, wie im PCWelt-Artikel beschrieben, ueber die grafische Oberflaeche (Grrrr!) mit dem Menuepunkt "Create New Wi-Fi Network..." probiert. Allerdings ohne Erfolg.
Die Datei des neu eingerichteten APs befand sich zwar in /etc/NetworkManager/system-connections aber sonst tat sich nichts.
Der Befehl aus dem zweiten Artikel
nmcli dev wifi hotspot ifname wlan0 ssid RIDEN_NM [password "test1234"]
fuehrte dagegen direkt zum Erfolg. Beim ersten Versuch habe ich den Passwortteil weggelassen.
Ein Verbinden mit einem Client (Smartphone) war mir allerdings nicht gegoennt. Trotz des folgenden Tasks wurde dem Smartphone keine IP-Adresse zuteil.
ps aux|grep dnsmasq|grep -v grep
ALternativ kann man auch
ps aux| grep "[v]i"
benutzen, damit grep sich nicht selbst findet.
Der erste Befehl hat den Vorteil, dass man ihn leicht, z.B. als psgrep als Alias anlegen kann.
alias psgrep='ps ax|grep -v grep|grep'
Dauerhaft bekommt man den Alias, in dem man den o.g. Befehl in die Datei Ressourcen-Datei der Shell eintraegt. Bei der Bash in .bashrc, oder die .bash_aliases benutzen/anlegen. Bei xfce (xfce-terminal) befindet sich die Datei unter ~/inst-sys und nennt sich .profile.
localhost:~ # psgrep Netwo 1077 ? Ssl 3:24 /usr/sbin/NetworkManager --no-daemon 11710 ? S 0:02 /usr/sbin/dnsmasq --conf-file=/dev/null --no-hosts --keep-in-foreground --bind-interfaces --except-interface=lo --clear-on-reload --strict-order --listen-address=192.168.1.254 --dhcp-range=192.168.1.1,192.168.1.245,60m --dhcp-option=option:router,192.168.1.254 --dhcp-lease-max=50 --dhcp-leasefile=/var/lib/NetworkManager/dnsmasq-wlan0.leases --pid-file=/var/run/nm-dnsmasq-wlan0.pid localhost:~ #
Mit
nmcli device wifi show-password
localhost:~ # nmcli dev wifi list IN-USE BSSID SSID MODE CHAN RATE SIGNAL BARS SECURITY * 18:F4:6A:XX:XX:XX RIDEN_NM Infra 1 0 Mbit/s 0 ____ -- localhost:~ # localhost:~ # nmcli dev show wlan0 GENERAL.DEVICE: wlan0 GENERAL.TYPE: wifi GENERAL.HWADDR: 18:F4:6A:XX:XX:XX GENERAL.MTU: 1500 GENERAL.STATE: 100 (connected) GENERAL.CONNECTION: RIDEN_NM GENERAL.CON-PATH: /org/freedesktop/NetworkManager/ActiveConnection/8 IP4.ADDRESS[1]: 192.168.1.254/24 IP4.GATEWAY: 192.168.178.14 IP4.ROUTE[1]: dst = 192.168.1.0/24, nh = 0.0.0.0, mt = 600 IP4.ROUTE[2]: dst = 192.168.178.14/32, nh = 0.0.0.0, mt = 20600 IP4.ROUTE[3]: dst = 0.0.0.0/0, nh = 192.168.178.14, mt = 20600 IP6.GATEWAY: --
Mit
nmcli con up RIDEN_NM
und
nmcli con down RIDEN_NM
kann man den AP an- und ausschalten.
Um noch Einfluss auf die Konfiguration zu nehmen ist die Kenntnis aller nmcli Optionen hilfreich. Im Zweifel kann man in der Manualpage von nmcli die genaue Syntax, bzw. die Funktion eines Befehls in 'mna nmcli' nachschlagen.
nmcli ist hierarchisch aufgebaut. Das heiszt man hangelt sich Stufe fuer Stufem aehnlich dem Datei-Verzeichnisbaum, zum gesuchten Parameter.
Um das besser zu erkennen, habe ich die Bereiche in den Kommandos von nmcli wirken einmal hervorgehoben.
- help kann hinter jedes Kommando angehaengt werden, um weitere Optionen zu erkennen.
- general {status | hostname | permissions | logging} genereller Status/Operationen
- networking {on | off | connectivity} umfassende Netzwerkeinstellungen
- radio {all | wifi | wwan} wireless-Schalter
- connection {show | up | down | modify | add | edit | clone | delete | monitor | reload | load | import | export} alle (Netzwerk-)Verbindungen handhaben
- device {status | show | set | connect | reapply | modify | disconnect | delete | monitor | wifi | lldp} alle (Netzwerk-)Geraete handhaben
- agent {secret | polkit | all} Networkmanager als Secret-/Polkit-Agent
- monitor siehe auch nmcli connection monitor and nmcli device monitor
nmcli accepts abbreviations, as long as they are a unique prefix in the set of possible options. As new options get added, these abbreviations are not guaranteed to stay unique. For scripting and long term compatibility it is therefore strongly advised to spell out the full option names.
Das heiszt fuer die o.g. Kommandos, dasz sie sich abkuerzen lassen. Im extremsten Fall zu:
- nmcli h
- nmcli g
- nmcli n
- nmcli r
- nmcli c
- nmcli d
- nmcli a
- nmcli m
Aber auch nmcli con oder nmcli dev sind oft anzutreffen.