Im Grunde sieht mein Netzwerk so aus
+------+
10.0.0.10 ------ 10.0.0.1=|Laptop|=11.0.0.11 ------ 11.0.0.1
(wlan0,client) (AP,wlan0)+------+(wlan1,client) (AP)
wlan0 und wlan1 sind USB-WLAN-Adapter, die an den Laptop angeschlossen sind
Ich möchte diese Netzwerke über meinen Laptop verbinden. Zuerst habe ich versucht, Bridging zu verwenden, aber es stellte sich heraus, dass Bridging nicht unterstützt wird.
Ich habe das versucht, aber es hat nicht funktioniert.
iptables -A FORWARD -i wlan0 -o wlan1 -j ACCEPT
iptables -A FORWARD -i wlan1 -o wlan0 -j ACCEPT
iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE
iptables -t nat -A POSTROUTING -o wlan1 -j MASQUERADE
Ich wäre für jede Hilfe dankbar.
Antwort1
Sie benötigen keine zwei Maskierungsregeln. Sie müssen nur einen Client maskieren, der Ihren Computer als Standardroute hat; Sie wenden Source-NAT auf Pakete an, die die Schnittstelle auf der „WAN“-Seite verlassen.
Wenn die Firewall im Standardzustand ist, benötigen Sie nur diese eine Regel:
iptables -t nat -A POSTROUTING -o wlan1 -j MASQUERADE
Wenn die MTU in verschiedenen Netzwerken unterschiedlich ist, müssen Sie möglicherweise einen MSS-Fix anwenden:
iptables -t mangle -A FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu
(Dies hilft bei der Lösung von Problemen wie „Ping funktioniert, Websites nicht“ oder „Einige Websites funktionieren, andere nicht“).
Es gibt einen extrem häufigen Haken. Ich mache das seit ungefähr 20 Jahren und vergesse es immer noch oft, bis alles funktionieren sollte, aber etwas nicht funktioniert. Sie müssen die Paketweiterleitung im Kernel explizit aktivieren:
sysctl net.ipv4.ip_forward=1
und legen Sie die gleiche Variable fest, /etc/sysctl.conf
damit es nach dem Booten aktiviert wird.