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:

  1. Ö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
  2. 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.1\freigabename 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!

In den obigen Bildern ist dokumentiert, wie die Verbindung client-seitig unter Windows 7 mit einen TP-Link TL-WN821N USB Stick an dem beschriebenen access point aussieht. Die grüne Linie stellt die hier beschriebene Konfiguration, in einer Entfernung von ca. 3m im gleichen Raum mit dem Wlan Router, da.

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
  • Als Test-Tools unter Windows 7 kann ich “Ekahau Heatmapper” und “inSSIDer” empfehlen. Google ist dein Freund.
  • Sucht Euch vorher die entscheidenden Logfiles unter /var/log zusammen.
  • Uns allen viel Spass mit Linux.

siehe auch: [1] [2] [3] [4] [5]

VN:F [1.9.22_1171]
Bewerte diesen Beitrag:
Rating: 5.5/10 (2 votes cast)
facebooktwittergoogle_plusredditlinkedinmailfacebooktwittergoogle_plusredditlinkedinmail

4 Gedanken zu “WLAN Router mit Fedora 13 Linux und hostapd

  1. 1. Ergänzung:
    Ich habe die beschriebene Konfiguration nach einer Neu-Installation meines Servers mit Fedora 15 (fünfzehn) eingerichtet und es hat auf Anhieb funktioniert. Eine Verbesserung der Performance habe ich nicht bemerkt. Allerdings gilt es zu beachten, dass bei Fedora 15 die automatische Namensgebung für die Netzwerk-Devices eine Änderung erfahren hat: Wurden sie vorher mit eth0, eth1, usw. eingetragen, so werden sie jetzt z.B. p3t13 benannt. Entsprechend ist der Name in den gezeigten conig-files anzupassen.

    2. Ergänzung:
    Diese Konfiguration funktioniert auch mit der TP-Link TL-WN781ND “Lite N” ohne Probleme. Ein Performance-Unterschied zwischen der obengenannten Karte und dieser hier ist nicht zu beobachten. Die obere Karte hat drei – die 781 hat eine Antenne.

    VN:F [1.9.22_1171]
    Bewerte diesen Kommentar:
    Rating: 0.0/5 (0 votes cast)
  2. 3. Ergänzung:
    Der access point funktioniert nicht mit Fedora 16? Gehe auf die console und suche die Datei cfg80211.ko. Ist dieses Kernel-Modul vorhanden, nutzt der nl80211 Treiber eine Erweiterung, bei der Du die Länder-Optionen in der hostpad.conf weglassen kannst – also ieee80211d=1 und country_code=DE wegkommentieren oder löschen. Die cfg80211 Erweiterung kann aus verschiedenen Abfragen selbst bestimmen in welchen Land der Router steht und wählt entsprechend die nutzbaren Frequenzen. Siehe Ausgabe von dmesg und iwlist wlan0 event.

    4.Ergänzung:
    Übrigens habe ich im Internet gelesen, dass im Device Namen statt z.B. ifcfg-wlan0 für wlan0 der Netzwerkname eingetragen werden soll. Wenn wir also annehmen, dass der Name des Wlan-Netzes “cosmos” heißt, müsste der Name der wlan-Device-Datei nach “ifcfg-cosmos” umbenannt werden. siehe Quelle unter “Configuration files”

    Um das nochmal deutlich zu sagen: der obere Artikel wird von mir nicht (!) aktualisiert! Alles was im Artikel steht bezieht sich auf Fedora 13. In den Kommentaren zu diesen Artikel, will ich aber versuchen, die Informationen für neuere Fedora Versionen nach zu liefern.

    Sollten Euch Fehler auffallen, würde ich mich sehr freuen, wenn Ihr mich darauf aufmerksam macht.

    VN:F [1.9.22_1171]
    Bewerte diesen Kommentar:
    Rating: 0.0/5 (0 votes cast)
  3. 5.Ergänzung:
    Nachdem ich heute einen Fedora 16 update mit yum gemacht habe, funktioniert die wlan-Karte nicht mehr. Im wesentlichen nimmt die wlan-Karte die konfigurierte IP-Adresse nicht mehr an und iwconfig liefert “unknown command “. Da ja – wie hier dokumentiert – nichts an der Konfiguration geändert wurde, schiebe ich natürlich alle “Schuld” auf das update. Im wesentlichen kamen folgende Pakete:
    kernel-PAE-3.2.9-2 (mit headers und kernel-tools)
    systemd-37-15
    Perl-5.14.2-197
    Alle Angaben nach yum.log.
    Verschiedene Änderungen brachten keinen Erfolg. Auf englisch-sprachigen Seiten wurde der Fehler ausführlich mit Device Treibern diskutiert – allerdings mit Nicht-Wlan-Devices. Ich warte das nächste update ab.

    6.Ergänzung:
    Wer aber auf Grund dieser Störung hostapd abschaltet und meine oben aufgeführte Konfiguration nutzt, sollte ein chkconfig hostapd off und in /etc/dnsmasq.d/dnsmasq.conf die Zeilen, welche das wlan betreffen, deaktivieren (also ein # vor die entsprechende Zeile setzen). Zusätzlich ist in /etc/sysconfig/network-scripts/ifcfg-wlan0 die option “onboot” auf no zu setzen und die wlan Einträge in der smb.conf zu beachten. Damit startet der Server nur mit dem drahtgebundenen Netzwerk und ist zumindest arbeitsfähig.

    7.Ergänzung:
    Wer sich also fragte, warum in meiner Konfiguration keine bridge (sozusagen eine Verschmelzung von Lan und Wlan) genutzt wird, merkt jetzt den Vorteil, wenn man ein Teil des Netzes einfach abklemmen kann.

    VN:F [1.9.22_1171]
    Bewerte diesen Kommentar:
    Rating: 0.0/5 (0 votes cast)
  4. 8.Ergänzung:
    Nach einem erneuten update von Fedora 16 mit yum und verschiedenen Starthilfen funktioniert hostapd wieder. Ich bekam seit kurzen im log eine Meldung, die besagte: “iwconfig: unknown command “off”", wenn ich den network service neu startete. Das Ergebnis war dann, dass die wlan0 Karte zwar mit ifconfig sichtbar wurde aber die statische IP-Adresse nicht annahm. Dadurch startete hostapd natürlich nicht.
    Ich hielt dies erst für einen bug in iwconfig, aber ein einmaliger Aufruf von “ifcfg wlan0 192.168.2.1″ (also die konfigurierte statische IP-Adresse für wlan0) brachte scheinbar das Eis zum schmelzen. Zusätzlich setzte ich in ifcfg-wlan0 die Option USERCTL=yes. Damit wird allen (System-)Benutzern (nicht nur root) erlaubt, dieses device zu starten. Weiterhin habe ich in /etc/hostapd/hostapd.conf die Option ctrl_interface und ctrl_interface_group #deaktiviert. Da ich testweise den NetworkManager installiert (aber deaktiviert) hatte, habe ich den NetworkManager wieder de-installiert. Letztlich hat eine dieser Aktionen, dass Wlan device wieder mit der IP-Adresse gekoppelt, die genannten Fehlermeldungen verschwanden und die Dienste starten wieder zuverlässig.

    VN:F [1.9.22_1171]
    Bewerte diesen Kommentar:
    Rating: 0.0/5 (0 votes cast)

Hinterlasse eine Antwort

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert *

Du kannst folgende HTML-Tags benutzen: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>