Wie man einen WLAN Access Point auf Fedora installiert

Manchmal braucht man einen konfigurierbaren Access Point auf einem Fedora-Desktop. In diesem Blogartikel beschreiben wir, wie man dies in ein paar einfachen Schritten durchführen kann. 

ACHTUNG: Jetzt kommt eine Menge Code!

Erste Schritte

Zuerst muss man die erforderliche Software installieren:

yum install hostapd dnsmasq

Danach wird der WLAN-Adapter konfiguriert. Zunächst muss man prüfen, ob der Adapter online ist:

[root@seger~]# iwconfig
wlan0 IEEE 802.11bgn ESSID: off/any
Mode: Managed Access Point: Not-Associated Tx-Power=0 dBm
Retry short limit: 7 RTS thr:off Fragment thr:off
Encryption key: off
Power Management: off

lo no wireless extensions.
eth0 no wireless extensions.

Jetzt muss man prüfen, ob der Network Manager (NM) die Kontrolle über das Device hat:

[root@seger~] # nmcli -p r
======================================
Radio switches
======================================
WIFI-HW WIFI WWAN-HW WWAN
--------------------------------------
enabled enabled enabled disabled

Wenn es aktiviert ist, muss man es mit der nmcli deaktivieren:

[root@seger~] # nmcli r wifi off

Der NM setzt den Killswitch auf „on“, also müssen wir ihn wieder auf off setzen, um das WLAN außerhalb des NM wieder zu aktivieren.

[root@seger~] # rfkill unblock wlan

Nach diesem Schritt haben wir eine aktive WLAN-Karte ohne Störung durch den NM.

hostapd konfigurieren

Die Konfigurationsdatei befindet sich in /etc/hostapd/hostapd.conf. Hier sind nützliche Einstellungen, um WPA2 mit TKIP-CCMP zu aktivieren:

# Einige verwendbare Standardeinstellungen ...
macaddr_acl=0
auth_algs=1
ignore_broadcast_ssid=0
# Kommentieren Sie diese für Basis WPA & WPA2-Unterstützung mit einem Pre-Shared Key
wpa=3
wpa_key_mgmt=WPA-PSK
wpa_pairwise=TKIP
rsn_pairwise=CCMP
# NICHT VERGESSEN EIN WPA-PASSPHRASE EINZURICHTEN!!
wpa_passphrase=
# Die meisten modernen WLAN-Treiber im Kernel benötigen driver=nl80211
driver=nl80211
# Passen Sie diese Einstellungen für Ihre lokale Konfiguration an...
interface=wlan0
hw_mode=g
channel=
ssid=
ieee80211n=1

Danach kann das Ganze gestartet werden:

[root@seger ~] # systemctl start hostapd.service
[root@seger~] # systemctl status hostapd.service
hostapd.service - Hostapd IEEE 802.11 AP, IEEE 802.1X / WPA / WPA2 / EAP / RADIUS Authenticator
Loaded: geladene (/usr/lib/systemd/system/hostapd.service; disabled)
Aktiv: aktiv (läuft), da Fr 2014.08.01 13.24.08 CEST; Vor 4s
Prozess: 12208 ExecStart=/usr/sbin/hostapd/etc/hostapd/hostapd.conf -P /run/hostapd.pid -B (code=exited, status=0/SUCCESS)
Haupt PID: 12209 (hostapd)
CGroup: /system.slice/hostapd.service
└─12209 /usr/sbin/hostapd/etc/hostapd/hostapd.conf -P /run/hostapd.pid -B
1. August 13.24.08 seger systemd[1]: Gestartet Hostapd IEEE 802.11 AP, IEEE 802.1X/WPA/WPA2/EAP/RADIUS Authenticator.

DNSMASQ konfigurieren

Dnsmasq ist eine Kombination aus DHCP/DNS Server mit einem geringen Speicherbedarf. Die Konfiguration ist in /etc/dnsmasq/dnsmasq.conf.

Die wichtigsten Konfigurationsoptionen:

server=10.159.14.14 # Upstream DNS

interface=wlan0
dhcp-range=192.168.23.50,192.168.23.150,12h
no-resolv
no-Umfrage

Firewall konfigurieren

Fedora 20 kommt mit firewalld, die dynamisch die iptables-Regeln anpassen können. Für unser Setup müssen wir von wlan0 aus auf das außen liegende Netzwerk, DNS und DHCP Access und IP-Forwarding zugreifen können:

# Setzen Sie die Schnittstelle in einer Zone
firewall-cmd --zone=public --add-interface=wlan0
# MASQ Aktivieren für diese Zone
firewall-cmd --zone=public --add-masquerade
# Lassen Sie DHCP
firewall-cmd --zone=public --add-service=dhcp
# Zulassen DNS
firewall-cmd --zone=public --add-service=dns

Alles verbinden

Nachdem alle Dienste konfiguriert sind, genügt ein kleines Script, um das Ganze auszuführen:

#!/bin/bash
# WLAN sollte nicht mehr von Network Manager verwaltet werden
nmcli r wifi off
# WLAN Entblocken 
rfkill unblock wlan
# Rufen Sie die Schnittstelle aufifconfig wlan0 192.168.23.1 Netzmaske 255.255.255.0 up
# IP forward aktivieren
## -> bereits aktiviert!
# Setzen Sie die Schnittstelle in einer Zone
firewall-cmd --zone=public --add-interface=wlan0
# MASQ für diese Zone aktivieren
firewall-cmd --zone=public --add-masquerade
# DHCP erlauben
firewall-cmd --zone=public --add-service=dhcp
# DNS erlauben
firewall-cmd --zone=public --add-service=dns
# hostapd und dnsmasq startensystemctl start hostapd.service
systemctl start dnsmasq.service

Das wars, viel Spaß mit dem WLAN Access Point!

+ posts