Wie man herausfindet, ob sich eine WLAN-Karte als Access Point eignet – hostapd verwenden
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.
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
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.
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.
Vielleicht ist das ja nützlich:
https://github.com/Hypfer/hostapd-statistics
Danke für den Link ... werde ich mir mal ansehen - die Screenshots sehen auf jeden Fall gut aus ...
Super ausführliche Anleitung. Vielen Dank dafür!