iptables als Proxy

iptables als Proxy

Ich bin mir nicht sicher, wie ich besser anfangen soll, also werde ich es direkt sagen. Ich muss ins Ausland reisen, aber ich brauche Zugriff auf einen Server, der lokal in meinem Heimatnetzwerk ist. Ich habe einen DD-WRT-Router, an den nur mein PC angeschlossen ist. Meine Frage ist also: Kann ich eine iptables-Regel erstellen, die es mir ermöglicht, mich von einem externen Netzwerk (aus dem Ausland) aus mit meinem Router zu verbinden und mich zu meinem lokalen Netzwerk (vom ISP bereitgestellt) umzuleiten? Ich werde versuchen, eine „Karte“ meiner Anforderungen zu erstellen.

/Me - X/  
/My router - R/  
/Internet - I/  
/Local Server - S/  

Mein typischer Weg, auf S (Lokaler Server) zuzugreifen, ist wie folgt: X-R-S Mein typischer Weg, auf das Internet zuzugreifen, ist: X-R-I Mein Bedarf ist: R<--I<--X(dann verbinde ich mich von R mit S)
Das liegt daran, dass ich von einem externen Netzwerk aus nicht auf S zugreifen kann.
Wenn ich nicht zu Hause bin, gibt es hinter dem Router keinen aktiven PC, also kann ich nicht einfach einen Proxy darauf ausführen.

Antwort1

Dies sollte relativ trivial sein; für SSH sollte so etwas ausreichen:

iptables -t nat -A PREROUTING -p tcp \  
  -i ppp0 --dport 22 \  
  -j DNAT   \
  --to-destination 10.10.10.10:22

Annahme: Die externe Schnittstelle von R ist ppp0. Das ist die eingehende Schnittstelle, auf die die Regel angewendet werden soll.

Annahme: Die IP-Adresse von S ist 10.10.10.10 – natürlich durch die richtige ersetzen.

Dabei handelt es sich um „Ziel-NAT“; im Grunde dasselbe wie „normales NAT“, nur dass die Zieladresse durch die des internen Servers ersetzt wird und dies auf dem Rückweg rückgängig gemacht wird. Um dies zu verwenden, müssen Sie auf X lediglich den SSHD auf S ausführen, ssh Ranstatt ssh Smit diesem verbunden zu sein (dies funktioniert nur, wenn X derzeitnichtim Internet, sondern in Ihrem internen Netzwerk; Sie müssen auch SNAT ausführen - "normal" oder Source NAT -, damit die Antworten von S über R gesendet werden, und Sie müssen die Regel von "-i ppp0" in "-d <externe Adresse von R>", damit es übereinstimmt, wenn die Pakete von innen empfangen werden, nicht nur von außen; wie Sie sehen, wird es ein bisschen haarig).

Notiz:Das kann man natürlich auch für alle anderen Ports machen, aber ich würdewirklich starkIch rate davon ab, Samba (Windows-Freigabe) oder unverschlüsseltes HTTP freizugeben (es sei denn, es handelt sich ohnehin um öffentliche, nicht authentifizierte Inhalte). Oder irgendetwas anderes. Sie sind, wo immer möglich, nicht trivial zu sichern, daher wird Ihnen das Huckepacknehmen auf die Portweiterleitung von SSH viele Kopfschmerzen ersparen.

Allerdings ist die Samba-Weiterleitung umständlich, daher solltest du am besten versuchen, ganz darauf zu verzichten.

verwandte Informationen