Debian-Rechner als Wlan-Access-Point / Hotspot nutzen

Ein eigener Hotspot lässt sich auf einem Rechner mit Debian-basiertem Betriebssystem (Debian, Ubuntu, Mint…) recht einfach einrichten. Als Rechner kann dabei z.B. ein Raspberry Pi oder einen anderen Mini-PC verwendet werden. Der Rechner muss über einen Internetanschluss verfügen (in der Regel über einen klassischen Netzwerkanschluss) und zusätzlich einen nicht genutzten Wlan-Adapter. Dieser Wlan-Adapter muss über einen Chipsatz verfügen, der den Access-Point-Modus (AP mode) unterstützt. Ein Übersicht dazu findet man z.B. hier.  Ein funktionierender, günstiger Mini-USB-Adapter ist z.B. der LogiLink WL0084B. Ich selbst verwende eine Karte mit rt2800-Treiber.

Aber wofür braucht man einen eigenen Wlan-Hotspot wenn mittlerweile in fast jedem Router einer eingebaut ist?

Neben dem Basteln um des Bastelns willen, gibt es verschiedene Anwendungsmöglichkeiten, da ein solcher Accesspoint praktisch frei erweiterbar ist. Hier ein pass Beispiele, was sich so alles machen lässt:

  • Ein Deviceunabhängiger Werbeblocker
  • Tor Gateway zum anonymen surfen
  • Verbindungsüberwachung, z.B. um zu schauen mit welchen Servern das eigene Handy Kontakt aufnimmt
  • Inhaltsfilter um einen kindegerechten Internetzugang zu realisieren
  • Gäste-Wlan, das nach Registrierung einer Mobilfunknummer automatisch freigegeben wird
  • ….

Als Basis für diese Anwendungen, installieren wir nun unseren Accesspoint. Alle Kommandos werden mit root-Rechten ausgeführt. Mein Internetzugang ist über eth0 im Subnetz 192.168.0.0/16 realisiert, als Accesspoint dient wlan0. Wenn ihr andere Geräte verwendet, müssen bei der Konfiguration deren Bezeichnungen verwendet werden. Ermitteln kann man die Daten am einfachsten mit dem Befehl ifconfig bzw. ifconfig -a.

Zuerst müssen die Voraussetzungen für den Betrieb als Router geschaffen werden. Dazu aktiviert man zunächst IPv4-Forwarding indem man in der Datei /etc/sysctl.conf die # vor net.ipv4.ip_forward=1 entfernt.

Anschließend konfigurieren wir die Netzwerkkarte.

nano /etc/network/interfaces

auto wlan0
iface wlan0 inet static
address 10.11.12.1
netmask 255.255.255.0

Wenn schon ein Block für wlan0 existiert, muss dieser vorher entfernt werden. Je nach Rechner kann es sein, dass die Netwerkeinstellungen anders gesetzt werden müssen, insbesondere, wenn z.B. eine grafische Oberfläche wie z.B. Gnome verwendet wird.

Vorsicht: Das verwendete Subnetz muss zwingend ein anderes sein, als das der Internetanbindung.

Danach installieren wir mittels apt-get install dnsmasq einen DNS-Server, damit alle DNS-Fragen vom Router selbst beantwortet werden können. Ob er funktioniert kann man durch eingabe von nslookup 8.8.8.8 localhost testen. Als Ergebnis sollte der Name des DNS-Servers von Google gefunden werden.

Nun wird mit dem Befehl apt-get install isc-dhcp-server ein DCHP-Server installiert, damit den zukünftigen Wlan-Clients eine IP-Adresse zugewiesen werden kann. Die Konfigurationsdateien werden wie folgt angepasst:

nano /etc/default/isc-dhcp-server

DHCPD_CONF=/etc/dhcp3/dhcpd.conf
DHCPD_PID=/var/run/dhcpd.pid
INTERFACES="wlan0"

nano /etc/dhcp3/dhcpd.conf

subnet 10.11.12.0 netmask 255.255.255.0 {
range 10.11.12.100 10.11.12.200;
option domain-name-servers 10.11.12.1;
option routers 10.11.12.1;
}

Mittels update-rc.d isc-dhcp-server enable sorgt man anschliessend dafür, dass der DHCP-Server beim Systemstart automatisch gestartet wird.

Um die Konfiguration zu übernehmen, kann man an dieser Stelle den Rechner einfach neu starten und direkt prüfen, ob alles richtig übernommen wurde.

 

Danach installieren wir die Software für den Access-Point mittels apt-get install hostapd und passen die Konfiguration an: nano /etc/hostapd.conf.

In der Konfigurationsdatei werden die Funkparameter, der Name des Accesspoints (hier: privatnet) und die Verschlüsselung (hier: privates WPA2) festgelegt. Das Passwort darf nicht zu kurz sein, da die Software sich dann nicht starten lässt.

interface=wlan0
ssid=privatnet
hw_mode=g
channel=6
macaddr_acl=0
ignore_broadcast_ssid=0
auth_algs=1
wpa=2
wpa_passphrase=privatnet!90815
wpa_key_mgmt=WPA-PSK
wpa_pairwise=TKIP
rsn_pairwise=CCMP

Wer möchte, kann den Acces-Point auch ohne Verschlüsselung betreiben. Dann sieht die Konfiguration so aus:

interface=wlan0
ssid=tornet
hw_mode=g
channel=6
macaddr_acl=0
ignore_broadcast_ssid=0
rsn_pairwise=CCMP
logger_syslog_level=0

 

Schließlich wird mittels nano /etc/init.de/hostapd die Startdatei für den Accesspoint um die benötigten Weiterleitungsregeln ergänzt. Dabei wird sowohl der start) als auch der stop)-Block angepasst, damit die Regeln beim Start eingetragen und beim Beenden wieder ausgetragen werden.

Wer keine Logfiles schreiben möchte kann die Zeile nach Enable/Disable Logging weglassen. Wer sein privates Netz (192.168.x.x) nicht vom Netz des Access Points trennen möchte, kann die zwei Zeilen nach Enable/Disable Blocking weglassen.

Hier die erforderlichen Anpassungen:

start)
#Enable Logging
iptables -A FORWARD -p tcp -m state –state NEW -j LOG –log-prefix “iptables: “
#Enable blocking access to local lan from AP
iptables -A INPUT -s 10.0.0.0/8 -d 192.168.0.0/16 -j DROP
iptables -A FORWARD -s 10.0.0.0/8 -d 192.168.0.0/16 -j DROP
#Enable AP forwarding
iptables -A FORWARD -o eth0 -i wlan0 -m conntrack –ctstate NEW -j ACCEPT
iptables -A FORWARD -m conntrack –ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -t nat -F POSTROUTING
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
log_daemon_msg “Starting $DESC” “$NAME”
start-stop-daemon –start –oknodo –quiet –exec “$DAEMON_SBIN” \
–pidfile “$PIDFILE” — $DAEMON_OPTS >/dev/null
log_end_msg “$?”
;;
stop)
#Disable logging
iptables -D FORWARD -p tcp -m state –state NEW -j LOG –log-prefix “iptables: “
#Disable blocking of access to local lan from AP
iptables -D INPUT -s 10.0.0.0/8 -d 192.168.0.0/16 -j DROP
iptables -D FORWARD -s 10.0.0.0/8 -d 192.168.0.0/16 -j DROP
#Disable AP forwarding
iptables -D FORWARD -o eth0 -i wlan0 -m conntrack –ctstate NEW -j ACCEPT
iptables -D FORWARD -m conntrack –ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
log_daemon_msg “Stopping $DESC” “$NAME”
start-stop-daemon –stop –oknodo –quiet –exec “$DAEMON_SBIN” \
–pidfile “$PIDFILE”
log_end_msg “$?”
;;

Nach diesen Änderungen kann der Accesspoint in Betrieb genommen werden, indem man ihn einfach mittels /etc/init.de/hostapd restart neu startet.

Anschliessend probiert man mit einem Wlan-Device aus, ob der Zugang funktioniert. Der Zugriff wird – bei aktiviertem Logging – in /var/log/messages mit vorangestelltem iptables protokolliert.

Zum Anschauen des Datenverkehrs auf dem Accesspoint kann man sich die Logdatei mit dem Befehl tail ausgeben lassen:
tail -f /var/log/messages | grep iptables

Nun bleibt nur noch eins: weiter testen und mal schauen, wohin das Handy so alles eine Verbindung aufbaut…

 

Schreibe einen Kommentar

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

*