WLAN Router mit Fedora 13 Linux und hostapd

WLAN Router mit Fedora 13 Linux und hostapd

Ich beschreibe hier einen Wlan-Router (access point) anhand einer TP-Link TL-WN951N PCI Wlan Karte und Fedora Linux 13. Der Linux Server soll auch als DNS-, DHCP und File-Server dienen. Eine Firewall wird ebenfalls aktiviert sein.

Dazu installiere mit yum folgende Pakete:

Samba
dnsmasq
hostapd
system-config-firewall

Um die Verkabelung nochmal deutlich zu machen: Der Server hat drei Netzwerkkarten. Die eth0 ist der Zugang zum Kabelmodem des Providers und steht auf DHCP. Die eth1 ist die Netzwerkkarte für das kabelgebundene Heimnetzwerk und die wlan0 ist die Wlan-Karte und soll zum Wlan-Router werden.

Aktiviere in /etc/sysctl.conf mit der Option net.ipv4.ip_forward = 1 das forwarding. Damit wird das Weitergeben (forwarding) der Daten-Pakete auf dem Server zwischen den Karten aktiviert.

Um es nochmal deutlich zu sagen: Nur die eth0 hat einen dhcp-Eintrag! Die eth1 und wlan0 haben feste IP-Adressen aus verschiedenen Subnetzen! Damit hat die eth1 die 192.168.1.1 und die wlan0 die 192.168.2.1 bekommen.

Mit chkconfig NetworkManager off wird der aktuelle Netzwerkdienst abgeschaltet. Das ist notwendig! Die Dienste-Verwaltung findest Du in Fedora Linux, wenn Du auf der console chkconfig eingibst. Danach wird mit chkconfig network on der alte Netzwerkdienst und mit chkconfig hostapd on der Wlan-Router aktiviert. Gestartet werden die Dienste durch einen Neustart des Servers oder einen service hostapd start und service network start.

Wie aber wlan0 konfigurieren? Ich gehe davon aus, dass ein Netzwerk-devices bei der Installation des Servers erstellt wurde. Das sieht man unter /etc/sysconfig/network-scripts. Dort sollten Dateien in der Art ifcfg-eth0 liegen. Kopiere oder erstelle eine dieser Dateien, benenne sie nach ifcfg-wlan0 um und korrigiere die folgenden Einträge entsprechend deinem Netzwerk:

# Atheros Communications AR5416/AR5008 TL-WN951N Ver.1.0
DEVICE=wlan0
ONBOOT=yes
IPADDR=192.168.2.1
BOOTPROTO=none
NAME="System wlan0"
NETMASK=255.255.255.0

Alternativ kannst Du mit system-config-network das wlan0 device anlegen.

Beachte: Manche Menschen staunen, dass sie wlan0 mit ifconfig nicht sehen. Wenn die Datei ifcfg-wlan0 in Fedora Linux nicht existiert oder der Eintrag device= nicht den gleichen device-Namen (also wlan0) hat, dann wird sie auch nicht mit ifconfig angezeigt! Damit die Karte nach dem booten aktiv ist, setzen wir auch noch ONBOOT=yes in der erstellten Datei. Beachte zu neueren Fedora Versionen meine Ergänzungen am Ende des Artikels!

Wichtig ist bisher, das forwarding aktiviert ist, die eth1 und wlan0 in verschiedenen Subnetzen liegen und der richtige Netzwerkdienst aktiviert ist.

Als nächsten Schritt solltest Du eine Firewall aktivieren. Dazu kannst Du in /etc/sysconfig/system-config-firewall folgende Einträge machen:

# Configuration file for system-config-firewall
--enabled
--trust=eth1
--trust=wlan0
--masq=eth0
--service=https
--service=ssh
--service=http
--block-icmp=echo-request

Das Konfigurationstool ist mit system-config-firewall aufzurufen um die Einträge überprüfen und wirksam aktivieren zu können. Mit dieser Konfiguration sagt man der Firewall, dass die Netze an eth1 und wlan0 sicher sind, also nur deine PC’s beinhalten und eth0 (also die Schnittstelle zum Provider) maskiert werden soll. Die PC’s an eth1 und wlan0 bekommen also die IP-Adresse von eth0 (werden maskiert) wenn sie ins Internet gehen. Die service Einträge kannst du ignorieren, wenn Du keinen Webserver betreibst oder mit SSH (putty,secpanel) auf deinen Server über das Internet zugreifen willst. Der block Eintrag besagt, dass die Firewall nicht auf pings aus dem Internet antworten soll.

Die Konfiguration des Wlan-Router’s in der /etc/hostapd/hostapd.conf sieht so aus:

# http://wireless.kernel.org/en/users/Documentation/hostapd
# Treiber, Netzwerkname, Netzwerkkarte, sichtbarer
# Netzname:
#
driver=nl80211
ssid=meinnetz
interface=wlan0
ignore_broadcast_ssid=0
#
# wo der socket (sozusagen die Schnittstelle für andere
# Programme) fuer hostapd liegt und in welchen
# Benutzer-Kontext hostapd laeuft:
#
ctrl_interface=/var/run/hostapd
ctrl_interface_group=wheel
#
# Aktiviert Laendereinstellungen, definiert,
# welches Land und aktiviert, Multimedia-
# Optionen (WMM) am Wlan-Router:
#
ieee80211d=1
country_code=DE
wmm_enabled=1
auth_algs=1
#
# nur wpa2 (wenn wpa=3 dann wpa UND wpa2):
#
wpa=2
wpa_key_mgmt=WPA-PSK
#
# rsn_ ist für wpa2 Verschluesselung zustaendig:
#
rsn_pairwise=CCMP
wpa_pairwise=TKIP
wpa_passphrase=hier_ein_Passwort_einsetzen
#
# Netz-Standard (es gibt keinen hw_mode=n), Kanal
# und maximale Anzahl (hier also 5)
# Netzwerkteilnehmer:
#
hw_mode=g
channel=10
max_num_sta=5
#
# wme aktiviert Energie-Optionen (hier nicht weiter
# konfiguriert, fuer laptops wichtig),
# 300MB-Standard(n) aktivieren und ht_capab
# bestimmt den zweiten Kanal am Wlan-Router.
#
# Beispiel: channel=12 und HT40- legt Kontroll-
# Kanal 12 und sekundären Kanal 8
# (also 12minus4) fest.
#
# Beispiel: channel=7 und HT40+ legt Kontroll-
# Kanal 7 und sekundären Kanal 11
# (also 7plus4) fest.
#
# Beste Performance durch ausprobieren, da
# Ueberschneidungen durch andere Netze
# (siehe Bilder unten im Artikel):
#
wme_enabled=1
ieee80211n=1
ht_capab=[HT40-]

Diese Konfiguration kann natürlich beliebig erweitert werden. Ich empfehle, mal die /usr/share/doc/hostapd-0.6.10/hostapd.conf anzuschauen.

Um beim Start von hostapd die Info-Ausgabe dieses Dienstes zu erweitern, können wir in /etc/sysconfig/hostapd das Argument -d eintragen. Beachte jetzt die Ausgabe beim Bootvorgang oder bei einem service hostapd start/restart. (Scheint bei F16 nicht mehr zu funktionieren.)

Wenn ein Wlan-Client jetzt eine Verbindung herstellt, kann er sich wahrscheinlich am Netzwerk anmelden und bekommt aber keine IP-Adresse. Bei Windows Systemen gibt sich der PC eine 169.254… (die sogenannte APIPA Adresse) wenn er von einen DHCP Server keine IP-Adresse bekommt. Deswegen müßen wir jetzt dnsmasq konfigurieren:

  • Öffne die /etc/dnsmasq.conf und deaktiviere alle Optionen in dem Du ein # Zeichen vor die Zeilen schreibst – aber nicht vor die letzte Option: conf-dir=/etc/dnsmasq.d
  • Lege im Ordner /etc/dnsmasq.d eine Datei mit Namen dnsmasq.conf ab und füge folgende Einträge ein:
domain-needed
bogus-priv
filterwin2k
local=/meinsupinetz.lan/
interface=lo
interface=wlan0
interface=eth1
dhcp-range=interface:wlan0,192.168.2.15,192.168.2.25,3h
dhcp-range=192.168.1.55,192.168.1.105,6h
expand-hosts
domain=meinsupinetz.lan
dhcp-authoritative
log-facility=/var/log/dnsmasq.log

Damit verteilt der dnsmasq über die Netzwerkkarte eth1 IP-Adressen an die kabelgebundenen PC’s (aus der genannten Range) und über die Wlan-Karte wlan0 (aus der genannten Range) an die wlan-PC’s. Die IP-Adressen sind 3 und 6 Stunden gültig. Hilfe zu dnsmasq gibt es hier. Mit einen service dnsmasq start wird der DNS- und DHCP-Server gestartet. Mit chkconfig dnsmasq on wird er dauerhaft aktiviert.

Will jetzt jemand aus den zwei Netzwerken (192.168.1.0 und 192.168.2.0) auf die Freigabe des Samba-Server’s (192.168.1.1) zugreifen, kann er im WindowsExplorer ein 192.168.1.1freigabename eingeben. Damit das aber funktioniert, muß vorher noch die /etc/samba/smb.conf erweitert werden:

interfaces = lo eth1 wlan0
bind interfaces only = yes
hosts allow = 127.0.0.1 192.168.1.0/24 192.168.2.0/24
hosts deny = ALL

Die restliche Samba-Konfiguration findest Du im Internet. Ein chkconfig smb on aktiviert und ein service smb start (oder ein reboot, init 6) startet den Fileserver- Dienst.

Um das nochmal deutlich zu machen: Ich richte das Netzwerk hier so ein, dass der Samba Server der entscheidende Datenpool für den Austausch von Daten ist. Für einen Zugriff auf Datenfreigaben von einen PC zum anderen muss eventuell diese Konfiguration nachgebessert werden.

Nach einen letzten Neustart wird der Wlan-Router mit DHCP, DNS und Fileserver-Zugriff funktionieren.

Kurze Anmerkungen zum Abschluss

  • Grundsätzliches Wissen zu Netzwerk-Befehlen (ifconfig, traceroute, nslookup, ping, iw, iwconfig), Anwendung von Linux-Befehlen (chkconfig, services, ps, tail) und Anwendungsbefehlen (smbpasswd, vi) muss vorhanden sein. Alternativ gibt es ab 25 € fertige Wlan-Router zu kaufen.
  • Um es nochmal deutlich zu sagen: Ich habe diese Zusammenfassung auf Grundlage von Fedora 13 geschrieben und nur Pakete installiert, die auch in Fedora über yum verfügbar sind. Eine Installation von Firmware war nicht notwendig.
  • Die TP-Link Wlan-Karte ist echt super! Sie ging out-of-the-box mit dem nl80211-Treiber. Aber der Treiber hat Einschränkungen: So wird lt. Entwickler nur der Standard “Lite N (bis 150 MB/sec)” unterstützt. Also vorher mal im Netz recherchieren, was mit den Karten so möglich ist. Dazu würde ich empfehlen, mal diese Seite anzuschauen: hostapd
  • Unter Windows 7 kann ich das Tool inSSIDer empfehlen.
  • Sucht Euch vorher die entscheidenden Logfiles unter /var/log zusammen.

Viel Spass mit Linux

Weblinks zum Artikel

| Liste WLan Karten u. Sticks | WLan Chipsätze


Autor: Mathias R. Ludwig

MCSE, MCITP, MCDBA, RHCT, CompTIA, ITILv3, AdA, VWA Ökonom, Dipl.SozArb., Kfz-Mechaniker, Panzer-Mechaniker/-Fahrer (HptGefr), Stanislaw Lem und Linux Fan, Feuerpferd.

Kommentare “WLAN Router mit Fedora 13 Linux und hostapd”