In deze tip maken we een WiFi-hotspot. Eerst controleren we of de WiFi-adapters hostapd ondersteunen. Vervolgens maken we een reservekopie van de huidige netwerkconfiguratie. Let op: de werking van een netwerk wordt door veel factoren beïnvloedt: het systeem, de router, gebruikte hardware, enz. M.a.w. wees voorbereidt. Daarna gebruiken we Network Manager om snel een hotspot-toegangspunt aan te maken en te verwijderen.
Voordat we beginnen met configureren, moeten we ervoor zorgen dat het systeem aan de volgende eisen voldoet:
Laten we beginnen met het controleren van de beschikbare interfaces in ons systeem:
dany@pindabook:~$ sudo iwconfig
[sudo] wachtwoord voor root:
lo no wireless extensions.
enx64d1a3294681 no wireless extensions.
wlp4s0 IEEE 802.11 ESSID:"Proximus-Home-388355-5GHz"
Mode:Managed Frequency:5.26 GHz Access Point: F0:4D:D4:0A:B6:D8
Bit Rate=866.7 Mb/s Tx-Power=20 dBm
Retry short limit:7 RTS thr:off Fragment thr:off
Encryption key:off
Power Management:on
Link Quality=70/70 Signal level=-40 dBm
Rx invalid nwid:0 Rx invalid crypt:0 Rx invalid frag:0
Tx excessive retries:0 Invalid misc:37 Missed beacon:0
We gebruiken de enx64d1a3294681
interface (op mijn test laptop ethernet via een USB adapter) om ons systeem van internet te voorzien terwijl we van wlp4s0
een toegangspunt maken.
Anders, als we geen tweede interface hebben die internet levert, zullen onze aangesloten apparaten geen toegang kunnen krijgen tot het internet.
Controleer vervolgens of de Wi-Fi-kaart de AP-modus ondersteunt:
dany@pindabook:~$ nmcli -f WIFI-PROPERTIES.AP device show wlp4s0
WIFI-PROPERTIES.AP: ja
Maar laten we voor we beginnen een reservekopie maken van de huidige NetworkManager configuratie.
Deze bevindt zich in de map /etc/NetworkManager/system-connections/
:
dany@pindabook:~$ ls -l /etc/NetworkManager/system-connections/
totaal 8
-rw------- 1 root root 320 12 jun 2023 Proximus-Home-388355
-rw------- 1 root root 315 20 okt 2023 Proximus-Home-388355-5GHz.nmconnection
Bij WiFi verbindingen moet je wel de inhoud bekijken.
Op sommige systemen (niet op Debian Bookworm) zijn de wachtwoorden versleuteld.
Bij het gebruik van versleutelde wachtwoorden zal een teruggezette reservekopie niet werken (dit heb ik echter niet getest).
Je kunt de inhoud van een connectie bekijken met een cat opdracht, bijvoorbeeld sudo cat /etc/NetworkManager/system-connections/Proximus-Home-388355
.
Een reservekopie maak je met de volgende kopieer opdracht:
dany@pindabook:~$ sudo cp -r /etc/NetworkManager/system-connections /etc/NetworkManager/system-connections.ori
Met NetworkManager kan je met één opdracht een Wi-Fi-toegangspunt maken.
Laten we de volgende opdracht uitvoeren om een toegangspunt aan te maken met de naam PindaNet
en het wachtwoord 12345678
:
dany@pindabook:~$ sudo nmcli d wifi hotspot ifname wlp4s0 ssid PindaNet password 12345678
Device 'wlp4s0' successfully activated with 'd3688b53-6b38-43e7-8ae3-aee58600be20'.
Hint: "nmcli dev wifi show-password" shows the Wi-Fi name and password.
In deze opdracht is wifi
een argument dat de naam van de verbinding instelt op hotspot
.
We gebruiken het ifname
-argument om de interface te selecteren die we zullen gebruiken, terwijl ssid
de naam van het toegangspunt specificeert dat we maken.
De SSID zal zichtbaar zijn voor apparaten die er verbinding mee maken.
Tot slot gebruiken we het argument password
om een wachtwoord aan te maken voor het toegangspunt.
NetworkManager zal een verbinding genaamd hotspot
aanmaken als de opdracht succesvol wordt uitgevoerd.
Dit toegangspunt zal de internetverbinding delen als de secundaire interface een netwerk heeft.
Dus de apparaten die ermee verbonden zijn, krijgen toegang tot het internet omdat het hostingapparaat verbonden is met het internet (er wordt in mijn voorbeeld een gedeelde verbinding gemaakt tussen wlp4s0
en enx64d1a3294681
).
Laten we vervolgens alle verbindingen bekijken die we in het systeem hebben:
dany@pindabook:~$ nmcli con show
NAME UUID TYPE DEVICE
Hotspot d3688b53-6b38-43e7-8ae3-aee58600be20 wifi wlp4s0
Bekabelde verbinding 1 60829195-3edb-30dd-b1cd-f5382909566b ethernet enx64d1a3294681
lo b78b7272-c234-425b-b689-820c89848b57 loopback lo
Proximus-Home-388355 340d0c5e-8f1e-4dbe-aa04-64628f03e963 wifi --
Proximus-Home-388355-5GHz 90987842-b49f-4256-a9e3-102b22c35902 wifi --
Uit het bovenstaande fragment blijkt dat zowel wifi
als ethernet
actief zijn (felgroene kleur).
We gebruiken ethernet om de computer van internet te voorzien.
Als we geen tweede interface hebben, zal de hotspot die we hebben gemaakt geen internettoegang hebben, maar hij kan wel worden gebruikt om lokaal bronnen te delen.
We kunnen verifiëren dat het toegangspunt actief is met:
dany@pindabook:~$ nmcli device wifi
IN-USE BSSID SSID MODE CHAN RATE SIGNAL BARS SECURITY
* AC:7B:A1:42:E0:5F PindaNet Infra 11 0 Mbit/s 0 ____ WPA2
Dit kan je testen met een tweede apparaat, bijvoorbeeld een Smartphone.
Alle eigenschappen van een NetworkManager verbinding (connection), kan je opvragen:
dany@pindabook:~$sudo nmcli connection show Hotspot
[sudo] wachtwoord voor root: connection.id: Hotspot connection.uuid: d3688b53-6b38-43e7-8ae3-aee58600be20 connection.stable-id: -- connection.type: 802-11-wireless connection.interface-name: wlp4s0 connection.autoconnect: nee connection.autoconnect-priority: 0 connection.autoconnect-retries: -1 (default) connection.multi-connect: 0 (default) connection.auth-retries: -1 connection.timestamp: 1742738096 connection.read-only: nee connection.permissions: -- connection.zone: -- connection.master: -- connection.slave-type: -- connection.autoconnect-slaves: -1 (default) connection.secondaries: -- connection.gateway-ping-timeout: 0 connection.metered: onbekend connection.lldp: default connection.mdns: -1 (default) connection.llmnr: -1 (default) connection.dns-over-tls: -1 (default) connection.mptcp-flags: 0x0 (default) connection.wait-device-timeout: -1 connection.wait-activation-delay: -1 802-11-wireless.ssid: PindaNet 802-11-wireless.mode: ap 802-11-wireless.band: -- 802-11-wireless.channel: 0 802-11-wireless.bssid: -- 802-11-wireless.rate: 0 802-11-wireless.tx-power: 0 802-11-wireless.mac-address: -- 802-11-wireless.cloned-mac-address: -- 802-11-wireless.generate-mac-address-mask:-- 802-11-wireless.mac-address-blacklist: -- 802-11-wireless.mac-address-randomization:default 802-11-wireless.mtu: automatisch 802-11-wireless.seen-bssids: AC:7B:A1:42:E0:5F 802-11-wireless.hidden: nee 802-11-wireless.powersave: 0 (default) 802-11-wireless.wake-on-wlan: 0x1 (default) 802-11-wireless.ap-isolation: -1 (default) 802-11-wireless-security.key-mgmt: wpa-psk 802-11-wireless-security.wep-tx-keyidx: 0 802-11-wireless-security.auth-alg: -- 802-11-wireless-security.proto: rsn 802-11-wireless-security.pairwise: ccmp 802-11-wireless-security.group: ccmp 802-11-wireless-security.pmf: 0 (default) 802-11-wireless-security.leap-username: -- 802-11-wireless-security.wep-key0:802-11-wireless-security.wep-key1: 802-11-wireless-security.wep-key2: 802-11-wireless-security.wep-key3: 802-11-wireless-security.wep-key-flags: 0 (geen) 802-11-wireless-security.wep-key-type: unknown 802-11-wireless-security.psk: 802-11-wireless-security.psk-flags: 0 (geen) 802-11-wireless-security.leap-password: 802-11-wireless-security.leap-password-flags:0 (geen) 802-11-wireless-security.wps-method: 0x0 (default) 802-11-wireless-security.fils: 0 (default) ipv4.method: shared ipv4.dns: -- ipv4.dns-search: -- ipv4.dns-options: -- ipv4.dns-priority: 0 ipv4.addresses: -- ipv4.gateway: -- ipv4.routes: -- ipv4.route-metric: -1 ipv4.route-table: 0 (unspec) ipv4.routing-rules: -- ipv4.replace-local-rule: -1 (default) ipv4.ignore-auto-routes: nee ipv4.ignore-auto-dns: nee ipv4.dhcp-client-id: -- ipv4.dhcp-iaid: -- ipv4.dhcp-timeout: 0 (default) ipv4.dhcp-send-hostname: ja ipv4.dhcp-hostname: -- ipv4.dhcp-fqdn: -- ipv4.dhcp-hostname-flags: 0x0 (none) ipv4.never-default: nee ipv4.may-fail: ja ipv4.required-timeout: -1 (default) ipv4.dad-timeout: -1 (default) ipv4.dhcp-vendor-class-identifier: -- ipv4.link-local: 0 (default) ipv4.dhcp-reject-servers: -- ipv4.auto-route-ext-gw: -1 (default) ipv6.method: ignore ipv6.dns: -- ipv6.dns-search: -- ipv6.dns-options: -- ipv6.dns-priority: 0 ipv6.addresses: -- ipv6.gateway: -- ipv6.routes: -- ipv6.route-metric: -1 ipv6.route-table: 0 (unspec) ipv6.routing-rules: -- ipv6.replace-local-rule: -1 (default) ipv6.ignore-auto-routes: nee ipv6.ignore-auto-dns: nee ipv6.never-default: nee ipv6.may-fail: ja ipv6.required-timeout: -1 (default) ipv6.ip6-privacy: -1 (unknown) ipv6.addr-gen-mode: default ipv6.ra-timeout: 0 (default) ipv6.mtu: automatisch ipv6.dhcp-duid: -- ipv6.dhcp-iaid: -- ipv6.dhcp-timeout: 0 (default) ipv6.dhcp-send-hostname: ja ipv6.dhcp-hostname: -- ipv6.dhcp-hostname-flags: 0x0 (none) ipv6.auto-route-ext-gw: -1 (default) ipv6.token: -- proxy.method: none proxy.browser-only: nee proxy.pac-url: -- proxy.pac-script: -- GENERAL.NAME: Hotspot GENERAL.UUID: d3688b53-6b38-43e7-8ae3-aee58600be20 GENERAL.DEVICES: wlp4s0 GENERAL.IP-IFACE: wlp4s0 GENERAL.STATE: geactiveerd GENERAL.DEFAULT: nee GENERAL.DEFAULT6: nee GENERAL.SPEC-OBJECT: /org/freedesktop/NetworkManager/AccessPoint/19 GENERAL.VPN: nee GENERAL.DBUS-PATH: /org/freedesktop/NetworkManager/ActiveConnection/4 GENERAL.CON-PATH: /org/freedesktop/NetworkManager/Settings/5 GENERAL.ZONE: -- GENERAL.MASTER-PATH: -- IP4.ADDRESS[1]: 10.42.0.1/24 IP4.GATEWAY: -- IP4.ROUTE[1]: dst = 10.42.0.0/24, nh = 0.0.0.0, mt = 600 IP4.ROUTE[2]: dst = 169.254.0.0/16, nh = 0.0.0.0, mt = 1000 IP6.ADDRESS[1]: fe80::ae7b:a1ff:fe42:e05f/64 IP6.GATEWAY: -- IP6.ROUTE[1]: dst = fe80::/64, nh = ::, mt = 256
Uit bovenstaande informatie blijkt, dat je de hotspot steeds manueel zult moeten activeren (connection.autoconnect: nee
).
Wil je bij het opstarten van het systeem (NetworkManager) de hotspot automatisch activeren, voer dan de volgende opdracht uit om de eigenschap van onze hotspot aan te passen:
dany@pindabook:~$ sudo nmcli connection modify Hotspot connection.autoconnect yes
Even controleren of de aanpassing is doorgevoerd:
dany@pindabook:~$ sudo nmcli connection show Hotspot | grep autoconnect
connection.autoconnect: ja
connection.autoconnect-priority: 0
connection.autoconnect-retries: -1 (default)
connection.autoconnect-slaves: -1 (default)
En bekijken we deze keer enkel de actieve verbindingen op ons systeem:
dany@pindabook:~$ nmcli con show --active
NAME UUID TYPE DEVICE
Hotspot d3688b53-6b38-43e7-8ae3-aee58600be20 wifi wlp4s0
Bekabelde verbinding 1 60829195-3edb-30dd-b1cd-f5382909566b ethernet enx64d1a3294681
lo b78b7272-c234-425b-b689-820c89848b57 loopback lo
Voor wie het nog niet had opgemerkt, we gebruiken geen sterk wachtwoord.
Het huidige wachtwoord kan je met de volgende opdracht vervangen door 87654321
(eveneens geen sterk wachtwoord, maar dit is maar een voorbeeld):
dany@pindabook:~$ sudo nmcli connection modify Hotspot wifi-sec.psk 87654321
Om het nieuwe wachtwoord te activeren, moeten we de verbinding stoppen en terug starten met de volgende twee opdrachten:
dany@pindabook:~$sudo nmcli connection down Hotspot
Verbinding ‘Hotspot’ is met succes gedeactiveerd (actief D-Bus-pad: /org/freedesktop/NetworkManager/ActiveConnection/4) dany@pindabook:~$sudo nmcli connection up Hotspot
Verbinding is met succes geactiveerd (actief D-Bus-pad: /org/freedesktop/NetworkManager/ActiveConnection/6)
Bij het testen, moet je nu wel rekening houden dat besturingssystemen aangepaste WiFi toegangspunten verdacht vinden waardoor je ze best eerst helemaal verwijdert (vergeet) en terug toevoegt. NetworkManager heeft ook een opdracht om het wachtwoord zichtbaar weer te geven in tekst en met een QR-code.
dany@pindabook:~$ sudo nmcli dev wifi show-password
SSID: PindaNet
Beveiliging: WPA
Wachtwoord: 87654321
█████████████████████████████████
██ ▄▄▄▄▄ █▀█ █▄ ▀ ▀█▀█ █ ▄▄▄▄▄ ██
██ █ █ █▀▀▀█ ▄▀█▀▀ ▀█ █ █ ██
██ █▄▄▄█ █▀ █▀▀██▀▀ ▀▄██ █▄▄▄█ ██
██▄▄▄▄▄▄▄█▄▀ ▀▄█ █▄█ █ █▄▄▄▄▄▄▄██
██ ▄▀▄▄ ▄▀▄▀▀▀█▄▄ ▀ ▄▀▄▀▄▀ ███
███▄▄ ▄▄▀▄█▄█▀ ▄▄█▄ █ ▄▀▄█▀▀██
██▀▀▀▄▀▀▄▀ ▄▄█▄█▄▄█ ▄▀▀██ ▄ ▀███
████ █▄▄▄▀▄█▄ ▄█▀ ▄█ ▀▀ █▄█▀▄████
██ ▀▀▀ ▄▀█ ▄▀▀▀▄▄▄▄▄▀▀▀▄▀ █ ▄██
██ █▀█ ▄▄█ ▄█▀ ▄▄█▄██▄▄▄▄ ███▀██
██▄██▄█▄▄▄▀ ██▄█▄▄▄▄▄█ ▄▄▄ ▄ ████
██ ▄▄▄▄▄ █▄ █ ▄█▀▄▄▄▀ █▄█ ▀▄▀███
██ █ █ █ ▄ ▄▀▀▀▄▄▄▄█▄▄▄▄ █▀▀██
██ █▄▄▄█ █ ▀▄█▀ ▄ ▀██▄▀▄ ▄ ▄ ███
██▄▄▄▄▄▄▄█▄█▄█▄█▄▄▄▄▄▄█▄▄█▄▄█████
█████████████████████████████████
Hoewel QtQR de QR code zonder problemen kon interpreteren, wilde Android deze niet aanvaarden. Na het verwijderen en terug toevoegen van de hotspot kon de Android smartphone terug verbinding maken.
De hotspot verbinding verwijder je met:
dany@pindabook:~$ sudo nmcli connection del Hotspot
Verbinding ‘Hotspot’ (d3688b53-6b38-43e7-8ae3-aee58600be20) is met succes verwijderd.
In het overzicht merk je dat de oorspronkelijke WiFi verbinding daardoor hersteld werd:
dany@pindabook:~$ sudo nmcli con show
NAME UUID TYPE DEVICE
Bekabelde verbinding 1 60829195-3edb-30dd-b1cd-f5382909566b ethernet enx64d1a3294681
Proximus-Home-388355-5GHz 90987842-b49f-4256-a9e3-102b22c35902 wifi wlp4s0
lo b78b7272-c234-425b-b689-820c89848b57 loopback lo
Proximus-Home-388355 340d0c5e-8f1e-4dbe-aa04-64628f03e963 wifi --
De automatische aangemaakte verbinding Bekabelde verbinding 1
voor de gedeelde internet verbinding via de ethernet aansluiting blijft echter aanwezig, deze verwijder je met:
dany@pindabook:~$ sudo nmcli connection del Bekabelde\ verbinding\ 1
Verbinding ‘Bekabelde verbinding 1’ (60829195-3edb-30dd-b1cd-f5382909566b) is met succes verwijderd.
Let op de speciale schrijfwijze van de verbindingsnaam Bekabelde\ verbinding\ 1
. De \
tekens voor de spaties zorgen ervoor dat de naam als één geheel wordt beschouwd.
Je kunt dit ook bereiken door de naam tussen aanhalingstekens te plaatsen ("Bekabelde verbinding 1"
).
Een klassiek WiFi Access Point zoals hierboven beschreven zorgt voor twee apparte netwerken. M.a.w. het LAN thuisnetwerk is gescheiden van het WiFi netwerk. Dit is veiliger daar de apparaten die verbonden zijn met het Access Point enkel de internet verbinding met het LAN thuisnetwerk kunnen gebruiken. Andere diensten op het LAN thuisnetwerk zoals een NAS en andere apparaten en diensten zijn niet bereikbaar. Dit is handig voor een WiFi netwerk voor gasten of een domoticasysteem.
Om de apparaten die verbonden zijn met het Access Point in het LAN netwerk op te nemen, moeten we gebruik maken van een Bridge. Een Bridge zorgt ervoor dat twee verschillende netwerkverbindingen (WiFi en ethernet) worden samengevoegd tot één netwerkverbinding, de Brigde.
Om dit te bereiken, verwijder je alle NetWorkManager verbindingen zoals hierboven geschreven. Je krijgt dan de volgende situatie:
dany@pindabook:~$ Na het verwijderen van alle netwerkverbindingen kunnen we een Bridge netwerkverbinding aanmaken: Dit kunnen we nagaan met: Daarna koppelen we de LAN ethernet verbinding aan de Bridge: We vervolledigen de Bridge door een WiFi hotspot verbinding eraan te koppelen: Om de opdracht overzichtelijker te maken, heb ik deze opgesplitst in verschillende regels.
Dit kan door op het einde van de regels een Nu de Bridge klaar is, activeren we deze met: En controleren we dit door een overzicht van de actieve NetWorkManager verbindingen op te vragen: dany@pindabook:~$ Ook hier moet je bij het testen op bijvoorbeeld een Android smartphone (herverbinden) soms het wachtwoord opnieuw manueel ingeven of zelfs de WiFi instelling voor het Access Point verwijderen (vergeten) en terug aanmaken. Na het herstarten van het systeem waarop je het Access Point hebt aangemaakt,wordt deze automatisch terug actief. Indien je zoals hierboven beschreven een reservekopie van de oorspronkelijke NetWorkManager netwerkconfiguratie hebt aangemaakt en de wachtwoorden niet versleuteld werden opgeslagen, kan je de netwerkconfiguratie herstellen door eerst de Wireless Access Point configuratie te verwijderen en daarna de reservekopie terug te zetten. Na een herstart van het systeem is de oorspronkelijke netwerkconfiguratie terug actief.sudo nmcli con show
NAME UUID TYPE DEVICE
lo b78b7272-c234-425b-b689-820c89848b57 loopback lo
dany@pindabook:~$
sudo nmcli connection add type bridge con-name 'Bridge' ifname br0
Connection 'Bridge' (205ee442-aee4-4fd5-8194-5db2bef785b3) successfully added.dany@pindabook:~$
ip a
1: lo: dany@pindabook:~$
sudo nmcli connection add type ethernet slave-type bridge con-name 'Ethernet' ifname enx64d1a3294681 master br0
Connection 'Ethernet' (eeae9ba0-daf0-4b43-a309-5beeae558407) successfully added.dany@pindabook:~$
sudo nmcli connection add con-name 'PindaNet' \
ifname wlp4s0 type wifi slave-type bridge master br0 \
wifi.mode ap wifi.ssid PindaNet wifi-sec.key-mgmt wpa-psk \
wifi-sec.proto rsn wifi-sec.pairwise ccmp \
wifi-sec.psk 87654321
Connection 'PindaNet' (45411b91-38ee-40bb-ace9-490328ec5063) successfully added.\
-teken te gebruiken, waardoor je de opdracht op de volgende regel verder kunt aanvullen.dany@pindabook:~$
sudo nmcli connection up Bridge
Connection successfully activated (master waiting for slaves) (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/5)dany@pindabook:~$
sudo nmcli connection up PindaNet
Verbinding is met succes geactiveerd (actief D-Bus-pad: /org/freedesktop/NetworkManager/ActiveConnection/8)nmcli con show --active
NAME UUID TYPE DEVICE
Bridge 205ee442-aee4-4fd5-8194-5db2bef785b3 bridge br0
lo ad087d22-c5f2-485d-bf47-4acf58a2fd7b loopback lo
Ethernet eeae9ba0-daf0-4b43-a309-5beeae558407 ethernet enx64d1a3294681
PindaNet 45411b91-38ee-40bb-ace9-490328ec5063 wifi wlp4s0 Wireless Access Point verwijderen
dany@pindabook:~$
sudo rm -r /etc/NetworkManager/system-connections
[sudo] wachtwoord voor root:
dany@pindabook:~$ sudo cp -r /etc/NetworkManager/system-connections.ori /etc/NetworkManager/system-connections