Iptables im Routing-Gerät verstehen

Iptables im Routing-Gerät verstehen

Ich habe also einen Raspberry Pi so konfiguriert, dass er als VPN-Router fungiert, mit Hilfe von stunnel, OpenVPN und vielen Online-Artikeln (hauptsächlich denen vonJayden Chua) und kann erfolgreich eines erstellen, aber ich verstehe den iptables-Teil (unten beschrieben) nicht ganz, obwohl ich einige Online-Hilfen zu diesem Thema gelesen habe.

iptables -t nat -A POSTROUTING -o tun0 -j MASQUERADE
iptables -A FORWARD -i wlan0 -j ACCEPT
iptables -A FORWARD -i tun0 -o wlan1 -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -i wlan1 -o tun0 -j ACCEPT

Kann mir bitte jemand jede Zeile erklären? Ich weiß, es ist vielleicht einfach, aber ehrlich gesagt kann ich nicht herausfinden, warum das funktioniert =P

Vielen Dank schonmal im Voraus =)

Antwort1

Zunächst müssen wir IP-Weiterleitung definieren. Ich werde nicht sehr ausführlich darauf eingehen (und ich weiß es auch nicht), aber im Wesentlichen müssen Sie in diesem Zusammenhang wissen, dass es sich um den Paketfluss von einem Host zu einem anderen über diesen Host handelt.

Ich muss anmerken, dass keine der -A FORWARD ... -j ACCEPTRegeln/Befehle notwendig ist, es sei denn, Sie haben -P FORWARD DROPoder ähnliches (d. h. jedes Paket wird verworfen, das weitergeleitet werden soll). Die Regeln bewirken keine Weiterleitung, sondern machen nur Ausnahmen, wenn der Standard nicht „ACCEPT“ ist. (Sie „aktivieren“ die Weiterleitung mit sysctl.)

Nun können wir uns die Regeln ansehen:

iptables -A FORWARD -i wlan0 -j ACCEPT

Dies bedeutet, dass die Weiterleitung von Paketen, die von wlan0 eingehen (an andere Netzwerke über eine beliebige Schnittstelle auf diesem Host), zugelassen wird.

iptables -A FORWARD -i wlan1 -o tun0 -j ACCEPT

Dies bedeutet, dass Pakete, die von wlan1 eingehen, an tun0 weitergeleitet werden können. (Beachten Sie, dass dies nicht erforderlich ist, damit die Pakete die Adresse(n) von tun0 selbst erreichen, da dies nicht als „Weiterleitung“ gilt.)

iptables -A FORWARD -i tun0 -o wlan1 -m state --state RELATED,ESTABLISHED

Dies bedeutet, dass die Weiterleitung von Paketen, die von tun0 kommen, an wlan1 nur dann zugelassen wird, wenn eine entsprechende oder bestehende Verbindung besteht, und zwar nach Prüfung durch die Erweiterung/das Modul state(es wurde durch überholt conntrack, das stattdessen den Schalter verwendet --ctstate). Zusammen mit der vorherigen Regel bedeutet dies im Wesentlichen, dass die Weiterleitung zwischen tun0 und wlan1 zugelassen wird, solange die Verbindung nicht durch ein Paket von tun0 initiiert wird.

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

Dies bedeutet im Wesentlichen, dass die Quelladresse von Paketen, die tun0 verlassen, in die von tun0 geändert wird. Wenn dies nicht geschieht, muss der nächste Router eine Rückroute haben, damit jede Antwort die ursprüngliche Quelladresse erreicht. (Um die ursprüngliche Quelladresse zu erreichen, muss dieser Host also das Gateway sein.) Dies ist auch als NAT (Überlastung)/PAT bekannt. Stellen Sie es sich so vor, als würde tun0 wie der WAN-Port/die WAN-Schnittstelle eines typischen Routers für den Endverbraucher funktionieren.

Antwort2

Um dies zu verstehen, müssen Sie die Routing-Prinzipien verstehen. Da ich mit dieser Antwort jedoch kein Buch schreiben kann, werde ich es kurz und einfach halten.

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

Diese Regel nimmt grundsätzlich das Paket an, giltNAT, aber nachdem entschieden wurde, wie dieses Paket weitergeleitet wird. Aus diesem Grund wird es auf angewendet POSTROUTING. Dann sendet es das Paket zurück in den Tunnel namens tun0. Dies ist Ihre VPN-Verbindung. Es wendet auch Masquerade an, da die Regel die IP des Geräts nicht kennt. Ohne sie müssten Sie diesen Befehl für jedes Gerät verwenden, das eine Verbindung herstellt. Sie könnten dies also als eine Art Platzhalter betrachten.

iptables -A FORWARD -i wlan0 -j ACCEPT 
iptables -A FORWARD -i wlan1 -o tun0 -j ACCEPT

Diese Zeile besagt, dass der gesamte an die Schnittstelle weitergeleitete Datenverkehr akzeptiert werden soll wlan0. Ich gehe davon aus, wlan0dass in dieser Anleitung die primäre Internetverbindung verwendet wird, also die Hauptroute zwischen dem Router und dem VPN-Tunnel. Dadurch akzeptiert der Pi Pakete auf dieser Schnittstelle und gibtZugriff auf das interne Netzwerk. Die zweite Zeile hier ist im Grunde nur der Rückweg für das Paket. Vom Pi zurück in den Tunnel.

iptables -A FORWARD -i tun0 -o wlan1 -m state --state RELATED,ESTABLISHED -j ACCEPT

Diese Zeile erlaubt den Verkehr aus dem Tunnel tun0zur Schnittstelle wlan0, aber nur, wenn eine Verbindung bestanden hat.gegründetvorher.

Kurz gesagt ermöglichen diese Regeln den Datenverkehr über den VPN-Tunnel in das restliche private Netzwerk und zurück.

verwandte Informationen