Wie man herausfindet, ob sich eine WLAN-Karte als Access Point eignet – hostapd verwenden

3 Kommentare Autor: Jürgen (jdo)

Nach dem recht langen Beitrag, wie man die gefühlte Internet-Geschwindigkeit mit einem Raspberry Pi plus Squid plus pdnsd doch ziemlich beschleunigen kann, experimentiere ich mit der ZBOX (Ubuntu Server 12.04). Allerdings wäre diese zu schade, um sie nur als Proxy zu verwenden.

Die ZBOX hängt am Netzwerk mit einem Ethernet-Kabel. Dadurch ist die WLAN-Karte eigentlich untätig. Müsste sie aber nicht sein, wenn man daraus einen WiFi Access Point machen könnte (was auch funktioniert). Dazu muss man allerdings erst einmal herausfinden, ob sich die WLAN-Karte auch als Access Point einsetzen lässt – Stichwort hostapd (sudo apt-get install hostapd)

Das ist recht einfach. Man ruft auf der Konsole einfach iw list auf und sucht nach der Sektion Supported interface modes:. Befindet sich dort ein AP, dann sollte es funktionieren.

iw list: Supported interface modes

iw list: Supported interface modes

Somit kann man sich jede Menge Frust sparen. Du weißt sofort, ob hostapd möglich wäre oder nicht. Die Konfiguration der Datei /etc/hostapd/hostapd.conf ist schon x-Mal im Internet beschrieben. Bei mir sieht sie so aus:

interface=wlan0
driver=nl80211
ssid=Springfield
hw_mode=g
channel=1
macaddr_acl=0
auth_algs=1
ignore_broadcast_ssid=0
wpa=3
wpa_passphrase=STRENGGEHEIM
wpa_key_mgmt=WPA-PSK
wpa_pairwise=TKIP
rsn_pairwise=CCMP

Zuvor verpasse ich der WLAN-Karte via Datei noch eine fixe IP-Adresse:

auto wlan0
iface wlan0 inet static
address 192.168.101.100
netmask 255.255.255.0

Da mein eigentliches Netzwerk 192.168.100.0/24 ist, brauche ich für den Access Point aus Bequemlichkeit einen DHCP-Server: sudo apt-get install isc-dhcp-server

Ist ein DHCP-Server wirklich notwendig? Jein … ich mache es deswegen, da ich den kompletten Traffic an die Ethernet-Karte weiterleite und http-Traffic an Port 3128. Somit ist Squid für diesen Access Point transparent und wird auch benutzt, wenn kein Proxy am Browser eingestellt ist. Ich stelle das später wahrscheinlich noch um, wenn der mit dem Internet verbundene Router ein komplett eigenes Netzwerk bekommt und alles durch die ZBOX läuft. Der relevante Teil meiner /etc/dhcp/dhcpd.conf:

subnet 192.168.101.0 netmask 255.255.255.0 {
range 192.168.101.101 192.168.101.249;
option domain-name-servers 192.168.100.3; #IP-Adresse eht0 ZBOX
option routers 192.168.101.100; #IP-Adresse der WLAN-Karte
}

An dieser Stelle solltest Du Dich am WLAN anmelden können und eine IP-Adresse bekommen. Nun fehlt noch, IP-Forwarding zu aktivieren. Sofortige Wirkung erzielst Du mit:
sudo sysctl -w net.ipv4.ip_forward=1

oder

sudo echo 1 > /proc/sys/net/ipv4/ip_forward

Das ist aber nach einem Neustart wieder obsolet. Für eine permanente Lösung editierst Du die Datei /et/sysctl.conf und stellst sicher, dass sich nachfolgende Zeile darin befindet und auskommentiert ist:

net.ipv4.ip_forward=1

Nun müssen wir der Firewall noch mitteilen, dass sie sich als Router verhalten soll und den Traffic von wlan0 weiterleiten (und den von Port 80 auf 3128/eth0 umleiten):

iptables --table nat --append POSTROUTING --out-interface eth0 -j MASQUERADE
iptables --append FORWARD --in-interface wlan0 -j ACCEPT
iptables -A INPUT -i wlan0 -j ACCEPT
iptables -A OUTPUT -o wlan0 -j ACCEPT
iptables -t nat -A PREROUTING -i wlan0 -p tcp --dport 80 -j DNAT --to 192.168.100.3:3128

Auch diese Einstellungen wären nach einem Neustart verloren. Deswegen sichern wir an dieser Stelle die Firewall-Regeln: iptables-save > /etc/iptables.conf

Bei einem Neustart laden wir sie via /etc/rc.local wieder ein: iptables-restore < /etc/iptables.conf

Firewall-Regeln via rc.local wieder einladen

Firewall-Regeln via rc.local wieder einladen

pdnsd und Squid auf der ZBOX anstelle des Raspberry Pi laufen zu lassen, macht noch mal einen enormen Unterschied – vor allen Dingen bei den DNS-Anfragen. Liefert das Raspberry Pi um die zehn Millisekunden, geht das über die ZBOX binnen einer oder Null ms.

DNS mittels pdnsd: 1 Millisekunde

DNS mittels pdnsd: 1 Millisekunde

pdnsd: Mit dig überprüft

pdnsd auf dem Raspberry Pi

Nächste Schritte

Das mit der ZBOX als Cache klappt ausgesprochen gut. Wie erwähnt werde ich versuchen, den gesamten Traffic durch die ZBOX zu leiten und Squid damit für mein komplettes Netzwerk transparent zu machen. Das muss ich aber erst noch einige Tage testen. Wenn das Internet nicht vernünftig funktioniert, gibt es sonst von anderer Stelle Ärger … an mir kann ich testen, was ich mag … 🙂

Sofern das funktioniert, kommt auf die ZBOX außerdem noch Apt-Cacher NG. Auch zwischen Kubuntu und Linux Mint 16 gibt es viele Pakete, die gleich sind (Firefox, Chromium und so weiter). Die muss ich dann nur einmal holen und somit ist das Internet gefühlt weiter beschleunigt.

Ich hätte diese Maßnahmen schon viel früher einleiten sollen, anstelle mich über das langsame Internet zu beschweren. Die langsame Leitung hier fühlt sich wirklich so viel schneller an. Sobald weniger Anfragen nach draußen müssen, bedeutet das auch mehr freie Bandbreite für andere Tasks.




 Alle Kommentare als Feed abonnieren

3 Kommentare zu “Wie man herausfindet, ob sich eine WLAN-Karte als Access Point eignet – hostapd verwenden”

  1. Hypfer says:

    Vielleicht ist das ja nützlich:

    https://github.com/Hypfer/hostapd-statistics

    • jdo says:

      Danke für den Link ... werde ich mir mal ansehen - die Screenshots sehen auf jeden Fall gut aus ...

  2. Christian says:

    Super ausführliche Anleitung. Vielen Dank dafür!