Wie richten Sie Raspbian Stretch als drahtlosen Router mit Internetzugang ein?

796
Rhyknowscerious

Die Situation

Raspbian Stretch ist drahtlos mit einem privaten Subnetz 10.0.0.0/16 über wlan0 (Modell RT5370) verbunden. Raspbian Stretch hat ohne weitere Modifikation einen Internetzugang und DNS funktioniert. PS: Ich habe keinen physischen Zugriff auf den Router, der eine Verbindung zum Internet herstellt - nur drahtlos.

Ich habe eine weitere RT5370-NIC als wlan1 hinzugefügt und sie mithilfe von hostapd als WLAN-Zugangspunkt eingerichtet.

Da ich den DHCP-Server-Adressbereich des Routers nicht kenne, möchte ich keine statische Adresse zu wlan0 hinzufügen.

Ich habe eine statische IPv4-Adresse auf wlan1 192.168.0.1/28 (16 Hostadressen) konfiguriert und ich setze dnsmasq als DHCP-Server für dieses Netzwerk ein.

Das Problem

Es sollte wirklich ziemlich einfach sein.

Raspbian Stretch kann entweder 1) auf das Internet zugreifen oder 2) als WAP für die Verbindung von Clients fungieren. Das Problem ist, dass beide Funktionen nicht gleichzeitig funktionieren.

Ich habe Handbücher gesehen, bei denen die Internetverbindung über Kupfer statt über Funkwellen hergestellt wird, aber ich sehe nicht, warum es einen Unterschied macht, ob die mit dem Internet verbundene Schnittstelle drahtlos und nicht drahtgebunden ist. Sowieso...

Was ich versucht habe

Bei einem Neustart kann ich google.com und 8.8.8.8 erfolgreich pingen.

Ich kann sowohl wlan0 als auch wlan1 nach der Überprüfung sehen ifconfigund sie scheinen in Ordnung zu sein.

Hier ist die Ausgabe von route.

Kernel IP routing table Destination Gateway Genbask Flags Metric Ref Use Iface default 10.0.0.36 0.0.0.0 UG 303 0 0 wlan0 default 192.168.0.1 0.0.0.0 UG 304 0 0 wlan1 10.0.0.0 0.0.0.0 255.255.0.0 U 303 0 0 wlan0 192.168.0.0 0.0.0.0 255.255.255.240 U 303 0 0 wlan1 

Ich weiß nicht, warum es so aussieht, als wären zwei Standardgateways hier, wenn eine einzige Standardroute geeigneter erscheint, aber das Internet funktioniert, also fahre ich fort ...

Nach dem Beweis, dass Raspbian Stretch über einen Internetzugang verfügt, versuche ich Folgendes:

root@computer:/# hostapd /etc/hostapd/hostapd.conf 

Und bekomme das:

Configuration file: /etc/hostapd/hostapd.conf nl80211: Could not configure driver mode nl80211: deinit ifname=wlan1 disabled_11b_rates=0 nl80211: driver initialization failed. wlan1: interface state UNINITIALIZED->DISABLED wlan1: AP-DISABLED hostapd_free_hapd_data: Interface wlan1 wasn't started 

Nun interessant, nachdem ich das gemacht habe:

root@computer:/# killall wpa_supplicant root@computer:/# hostapd /etc/hostapd/hostapd.conf & 

Ich bekomme das:

Configuration file: /etc/hostapd/hostapd.conf Using interface wlan1 with hwaddress aa:bb:cc:11:22:33 and ssid "myssid" wlan1: interface state UNINITIALIZED->ENABLED wlan1: AP-ENABLED 

Dadurch kann ich Client-Computer über wlan1 erfolgreich mit myssid verbinden. Jetzt kann ich jedoch nicht google.com oder 8.8.8.8 anpingen. Ich habe festgestellt, dass wlan0 in ifconfig nicht angezeigt wird und meine Routing-Tabelle jetzt so aussieht:

Kernel IP routing table Destination Gateway Genbask Flags Metric Ref Use Iface 192.168.0.0 0.0.0.0 255.255.255.240 U 303 0 0 wlan1 

Um wlan0 wieder hoch zu bekommen, mache ich:

root@computer:/# service dhcpcd restart root@computer:/# sysctl daemon-reload 

Jetzt erscheinen wlan0 und wlan1 in ifconfig, Raspbian Stretch kann google.com und 8.8.8.8 ping, aber mit wlan1 verbundene Clients haben keinen Internetzugang.

An diesem Punkt sieht meine Routingtabelle so aus:

Kernel IP routing table Destination Gateway Genbask Flags Metric Ref Use Iface default 10.0.0.36 0.0.0.0 UG 303 0 0 wlan0 10.0.0.0 0.0.0.0 255.255.0.0 U 303 0 0 wlan0 192.168.0.0 0.0.0.0 255.255.255.240 U 304 0 0 wlan1 

Wenn ich nur wlan1-Clients den Internetzugang erlauben könnte, könnte dies alles vorbei sein :)

0

1 Antwort auf die Frage

0
Rhyknowscerious

Da es keine Route vom Internet-Gateway-Router zum Netzwerk gibt, das an wlan1 (192.168.0.0/28) angeschlossen ist, habe ich nur ein dynamisches NAT mit PAT-Überladung zwischen wlan0 und wlan1 eingerichtet.

iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE 

Mission erfüllt!

Wenn ich Zugriff auf den Internet-Gateway-Router hätte, könnte ich wahrscheinlich eine statische Route von Raspbian Stretchs wlan0-Adresse zum 192.168.0.0/28-Netzwerk hinzufügen, aber 1) Ich habe keinen Zugriff auf diesen Router und 2) hätte ich auch entweder a) eine DHCP-Reservierung auf dem DHCP-Server (auf die ich auch keinen Zugriff habe) oder b) eine statische IP-Adresse auf Raspbian Stretchs wlan0 einrichten - wenn ich Änderungen am Ablaufen der wlan0 dhcp-Erleichterung vermeiden wollte. Eine statische Route funktioniert also in diesem Fall nicht.

Jedenfalls ist dies der erste funktionierende Router / Firewall, den ich gesehen oder gehört habe, der KEINE Kabelverbindung zum WAN ODER zum LAN verwendet.

Die Benutzer könnten dies vollständig in einem offenen, kostenlosen WLAN-Netzwerk verwenden, anstatt einen VPN- oder SOCKS-Proxy zu verwenden (wenn Sie genug über iptables wissen, um Ihre Verbindung zu sichern.)