Bij mooi weer en één of andere samenkomst in open lucht (denk aan barbecue's e.d.m.) loopt het tegenwoordig vol met mensen met draagbare computers (smartphone's, netbooks en tablets). Een moderne gastheer of -vrouw zorgt dat de gasten gebruik kunnen maken van een WiFi-verbinding. Iedereen weet dat zo'n WiFi-hotspot een beperkte reikwijdte heeft. En je best niet het wachtwoord van uw WiFi-hotspot van alledag aan iedereen meedeelt. Met behulp van een computer met een vaste ethernet verbinding naar het internet en een draadloze netwerkkaart (al dan niet via USB) maken we een extra Access Point (WiFi Hotspot). Deze opzet kan gebruikt worden op alle plaatsen waar je het bereik van een WiFi netwerk wilt vergroten, of op plaatsen waar je tijdelijk een WiFi hotspot wilt opzetten (denk aan klaslokalen, vergaderruimte, cafetaria, enz.).
Om grote afstanden te overbruggen zonder het trekken van (ethernet)kabels kan je gebruik maken van het electriciteitsnet via Powerline adapters.
systemctl --failed list-units
UNIT LOAD ACTIVE SUB JOB DESCRIPTION
network-remotefs.service loaded failed failed LSB: Configure the remote-fs depending network interfaces
NetworkManager.service loaded failed failed Network Manager
LOAD = Reflects whether the unit definition was properly loaded.
ACTIVE = The high-level unit activation state, i.e. generalization of SUB.
SUB = The low-level unit activation state, values depend on unit type.
JOB = Pending job for the unit.
2 units listed. Pass --all to see inactive units, too.
Druk op de toets Q om de melding te verlaten.
Deze diensten kun je met de volgende opdrachten uit de opstartprocedure halen:
sudo systemctl disable NetworkManager.service
sudo systemctl disable network-remotefs.service
Om een SoftAP op te zetten, heb je het pakket hostapd nodig.
sudo zypper install hostapd
kdesu kwrite /tmp/hostapd.conf
of sudo joe /tmp/hostapd.conf
):
interface=wlan0 # te gebruiken stuurprogramma, nl80211 wordt voor alle moderne WiFi kaarten op Linux gebruikt driver=nl80211 channel=6 ssid=SoftAP hw_mode=g # bij auth_algs=0 wordt geen authentificatie gebruikt (geen beveiliging, open) auth_algs=1 # De volgende instellingen (extra) verhogen indien de WiFi hardware dit aankan de snelheid (test eerst zonder deze extra hardware mogelijkheden) # Wireless Multimedia Extension/Wi-Fi Multimedia needed for # IEEE 802.11n (HT) (extra) wmm_enabled=1 # 1 to enable 802.11n (extra) ieee80211n=1 # HT capabilities (list of flags) (extra) ht_capab=[HT40-][SHORT-GI-20][SHORT-GI-40] # WEP/WPA/WPA2 bitmask, 0 for open/WEP (zie ook auth_algs), 1 for WPA, 2 for WPA2 wpa=2 # WPA2 settings wpa_passphrase=snt+-456 wpa_key_mgmt=WPA-PSK wpa_pairwise=TKIP CCMP rsn_pairwise=CCMP # Voeg de aangemaakte hotspot toe aan de netwerkbrug br0 bridge=br0De volledige omschrijving van alle mogelijke instellingen kun je terugvinden op de webpagina van hostapd.conf. Veel van de hier gebruikte instellingen worden in het script wat verder in commentaar verduidelijkt.
ifconfig eth0 0.0.0.0
om de huidige netwerkverbinding met het internet te verbreken.brctl addbr br0
maakt een brug met de naam br0 aan waardoor we straks de netwerktrafiek van de WiFi verbinding rechtstreeks naar de vaste verbinding (en omgekeerd) kunnen doorgeven.brctl setfd br0 0
om de aangemaakte brug sneller te activeren.dhclient eth0
herstelt de vaste netwerkverbinding naar het internet.brctl addif br0 eth0
koppelt de vaste netwerkverbing vast aan de netwerkbrug.hostapd -B /tmp/hostapd.conf
start de SoftAP.ifconfig br0 up
activeer de netwerkbrug tussen de WiFi SoftAP verbinding en de vaste netwerkverbinding.dhclient br0
zorgt voor een IP adres voor de netwerkbrug, waardoor de als hotspot gebruikte computer ook toegang krijgt tot de brug en dus de vaste netwerkverbinding naar het internet.ifconfig eth0 0.0.0.0
verwijdert het IP adres van de vaste netwerkverbinding, die door de netwerkbrug werd overgenomen (anders ontstaat er verwarring: brug en vaste verbinding krijgen namelijk hetzelfde IP adres)route
om te testen of alles correct werkt.
Als deze opdracht snel de netwerkroutes kan vinden en er een standaard gateway (UG) aanwezig is, werkt alles naar behoren.#!/bin/bash # werkt enkel met de Traditionele methode ifup # Controleer of het script met root rechten is gestart if [[ $EUID -ne 0 ]]; then echo "Dit script heeft rootrechten nodig." 1>&2 exit 1 fi WANIF="eth0" # Netwerkverbinding naar het internet LANIF="wlan0" # Netwerkverbinding naar het LAN (WiFi). MODE="g" # WiFi mode a,b,g CHANNEL="6" # Te gebruiken WiFi kanaal ESSID="SoftAP" # SSID (zichtbare naam) van de Hotspot KEY="snt+-456" # Wachtwoord # SoftAP starten if [ $1 = start ]; then ifconfig $WANIF 0.0.0.0 brctl addbr br0 brctl setfd br0 0 dhclient $WANIF brctl addif br0 $WANIF cat > /tmp/hostapd.conf <<:end interface=$LANIF driver=nl80211 channel=$CHANNEL ssid=$ESSID hw_mode=$MODE auth_algs=1 # Wireless Multimedia Extension/Wi-Fi Multimedia needed for # IEEE 802.11n (HT) wmm_enabled=1 # 1 to enable 802.11n ieee80211n=1 ht_capab=[HT40-][SHORT-GI-20][SHORT-GI-40] # WEP/WPA/WPA2 bitmask, 0 for open/WEP, 1 for WPA, 2 for WPA2 wpa=2 # WPA2 settings wpa_passphrase=$KEY wpa_key_mgmt=WPA-PSK wpa_pairwise=TKIP CCMP rsn_pairwise=CCMP bridge=br0 :end hostapd -B /tmp/hostapd.conf ifconfig br0 up dhclient br0 ifconfig $WANIF 0.0.0.0 route exit else # SoftAP stoppen ifconfig br0 down killall hostapd rm /tmp/hostapd.conf killall dhclient brctl delbr br0 dhclient $WANIF route exit fiDe hotspot SoftAP wordt gestart door de volgende opdracht uit te voeren:
sudo sh SoftAP.sh start
De hotspot SoftAP wordt uit de ether genomen door de volgende opdracht uit te voeren:
sudo sh SoftAP.sh stop
ip
is in feite de nieuwe opdracht om een netwerk te configureren en vervangt daarbij onder andere ifconfig
.
dany@linux-ezca:~> ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 brd 127.255.255.255 scope host lo
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master br0 state UP qlen 1000
link/ether 00:23:26:fb:17:0e brd ff:ff:ff:ff:ff:ff
inet6 fe80::223:26ff:fefb:170e/64 scope link
valid_lft forever preferred_lft forever
3: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq master br0 state UP qlen 1000
link/ether b4:82:fe:3e:3d:22 brd ff:ff:ff:ff:ff:ff
inet6 fe80::b682:feff:fe3e:3d22/64 scope link
valid_lft forever preferred_lft forever
8: br0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP
link/ether 00:23:26:fb:17:0e brd ff:ff:ff:ff:ff:ff
inet 192.168.1.7/24 brd 192.168.1.255 scope global br0
inet6 fe80::223:26ff:fefb:170e/64 scope link
valid_lft forever preferred_lft forever
9: mon.wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UNKNOWN qlen 1000
link/ieee802.11/radiotap b4:82:fe:3e:3d:22 brd ff:ff:ff:ff:ff:ff
dany@linux-ezca:~> sudo /sbin/brctl show
bridge name bridge id STP enabled interfaces
br0 8000.002326fb170e no eth0
wlan0
dany@linux-ezca:~> sudo /usr/sbin/iw list
Wiphy phy0
Band 1:
Capabilities: 0x11ee
HT20/HT40
SM Power Save disabled
RX HT20 SGI
RX HT40 SGI
TX STBC
RX STBC 1-stream
Max AMSDU length: 3839 bytes
DSSS/CCK HT40
Maximum RX AMPDU length 65535 bytes (exponent: 0x003)
Minimum RX AMPDU time spacing: 8 usec (0x06)
HT TX/RX MCS rate indexes supported: 0-15
Frequencies:
* 2412 MHz [1] (13.0 dBm)
* 2417 MHz [2] (13.0 dBm)
* 2422 MHz [3] (13.0 dBm)
* 2427 MHz [4] (13.0 dBm)
* 2432 MHz [5] (13.0 dBm)
* 2437 MHz [6] (13.0 dBm)
* 2442 MHz [7] (13.0 dBm)
* 2447 MHz [8] (13.0 dBm)
* 2452 MHz [9] (13.0 dBm)
* 2457 MHz [10] (13.0 dBm)
* 2462 MHz [11] (13.0 dBm)
* 2467 MHz [12] (13.0 dBm) (passive scanning)
* 2472 MHz [13] (13.0 dBm) (passive scanning)
* 2484 MHz [14] (disabled)
Bitrates (non-HT):
* 1.0 Mbps
* 2.0 Mbps (short preamble supported)
* 5.5 Mbps (short preamble supported)
* 11.0 Mbps (short preamble supported)
* 6.0 Mbps
* 9.0 Mbps
* 12.0 Mbps
* 18.0 Mbps
* 24.0 Mbps
* 36.0 Mbps
* 48.0 Mbps
* 54.0 Mbps
max # scan SSIDs: 4
max scan IEs length: 2257 bytes
Coverage class: 0 (up to 0m)
Available Antennas: TX 0 RX 0
Supported interface modes:
* IBSS
* managed
* AP
* AP/VLAN
* WDS
* monitor
* mesh point
* P2P-client
* P2P-GO
Supported commands:
* new_interface
* set_interface
* new_key
* new_beacon
* new_station
* new_mpath
* set_mesh_params
* set_bss
* authenticate
* associate
* deauthenticate
* disassociate
* join_ibss
* join_mesh
* remain_on_channel
* set_tx_bitrate_mask
* action
* frame_wait_cancel
* set_wiphy_netns
* set_channel
* set_wds_peer
* connect
* disconnect
Supported TX frame types:
* IBSS: 0x0000 0x0010 0x0020 0x0030 0x0040 0x0050 0x0060 0x0070 0x0080 0x0090 0x00a0 0x00b0 0x00c0 0x00d0 0x00e0 0x00f0
* managed: 0x0000 0x0010 0x0020 0x0030 0x0040 0x0050 0x0060 0x0070 0x0080 0x0090 0x00a0 0x00b0 0x00c0 0x00d0 0x00e0 0x00f0
* AP: 0x0000 0x0010 0x0020 0x0030 0x0040 0x0050 0x0060 0x0070 0x0080 0x0090 0x00a0 0x00b0 0x00c0 0x00d0 0x00e0 0x00f0
* AP/VLAN: 0x0000 0x0010 0x0020 0x0030 0x0040 0x0050 0x0060 0x0070 0x0080 0x0090 0x00a0 0x00b0 0x00c0 0x00d0 0x00e0 0x00f0
* mesh point: 0x0000 0x0010 0x0020 0x0030 0x0040 0x0050 0x0060 0x0070 0x0080 0x0090 0x00a0 0x00b0 0x00c0 0x00d0 0x00e0 0x00f0
* P2P-client: 0x0000 0x0010 0x0020 0x0030 0x0040 0x0050 0x0060 0x0070 0x0080 0x0090 0x00a0 0x00b0 0x00c0 0x00d0 0x00e0 0x00f0
* P2P-GO: 0x0000 0x0010 0x0020 0x0030 0x0040 0x0050 0x0060 0x0070 0x0080 0x0090 0x00a0 0x00b0 0x00c0 0x00d0 0x00e0 0x00f0
Supported RX frame types:
* IBSS: 0x00d0
* managed: 0x0040 0x00d0
* AP: 0x0000 0x0020 0x0040 0x00a0 0x00b0 0x00c0 0x00d0
* AP/VLAN: 0x0000 0x0020 0x0040 0x00a0 0x00b0 0x00c0 0x00d0
* mesh point: 0x00b0 0x00c0 0x00d0
* P2P-client: 0x0040 0x00d0
* P2P-GO: 0x0000 0x0020 0x0040 0x00a0 0x00b0 0x00c0 0x00d0