[gelöst] iptables: Port von ausgehendem Verkehr änderm

Gemeinsam ins Internet mit Firewall und Proxy.
Antworten
tr01
Beiträge: 80
Registriert: 10.01.2015 10:04:54
Wohnort: /root/

[gelöst] iptables: Port von ausgehendem Verkehr änderm

Beitrag von tr01 » 25.02.2017 19:47:02

Hallo zusammen :)

Ich habe eine dieser günstigen NAT-VMs, bei denen von außen nur ein kleiner Portbereich (z.B. 13401-13422) von außen erreichbar ist. Nun möchte ich gerne für verschiedene Dinge die Server der VM (SSH + Proxy) über die "normalen" Ports 22 u. 80 aus meinem Heimnetz ansprechen. Dazu hatte ich die Idee, die Pakete mittels iptables auf meinem Router auf den passenden Port "hinzubiegen". Also wenn ich an meinem PC eine SSH-Verbindung zur VM an Port 22 aufbaue, sollte der Router per NAT die Pakete an die VM an Port 13422 (SSH-Port der VM) weiterleiten.

So viel zur Theorie. Ich nutze einen Router von Asus mit Asuswrt-Merlin [1]. Das ist eine leicht angepasste Firmware, die einem den Zugriff auf die Config verschiedener Dienste (z.B. Dnsmasq, Cron oder eben iptables) gibt. Mein erster Versuch war diese Regel hier (ausgeführt auf dem Router; 1.1.1.1 soll die IP der VM sein):

Code: Alles auswählen

iptables -t nat -A PREROUTING -d 1.1.1.1 -p tcp --destination-port 22 -j DNAT --to-destination 1.1.1.1:13422
Wenn ich nun eine SSH-Verbindung von einem PC im Netzwerk zu Port 22 aufbaue, passiert garnichts. Es kommt zwar kein Fehler, aber es kommt auch keine Aufforderung, das Passwort einzugeben.

Woran das lag ließ sich mittels Wireshark relativ schnell herausfinden: Der PC schickt zwar eine Anfrage zu Port 22 des Servers, bekommt aber keinerlei Antwort. (Kann aber eine Verbindung aufbauen, zumindest wird diese nicht abgelehnt). Als Filter bei Wireshark hatte ich "ssh" eingestellt.

Nun wollte ich zuerst testen, ob die Portänderung korrekt umgesetzt wird. Dank Wireshark, ssh + tcpdump lässt sich Verkehr vom Router ins Internet relativ leicht überwachen [2]. Zur Überraschung wurde der Port sogar korrekt geändert: in den Router ging das Paket mit dem Zielport 22, heraus kam es mit 13422. Außerdem kam eine Antwort des Servers am Router an, wurde aber nicht an den Client weitergegeben.

Daher war der erste Versuch folgender (auch auf dem Router, zusätzlich zur Regel oben):

Code: Alles auswählen

iptables -t nat -I POSTROUTING -d 1.1.1.1 -p tcp --dport 13722 -j MASQUERADE
Das hat leider nicht geholfen, das Porblem ist genau das gleiche wie ohne diese Regel. (Da sie nicht von mir stammt und ich sie nicht ganz verstehe, aber ich das auch mit "-s" statt "-d" und "-sport" statt "-dport" getestet, aber genau das gleiche Problem).

Ich habe mir das Problem so erklärt: In der Antwort des Servers steht noch der (für den Client) falsche Port 13422. Also wollte ich ein Source-NAT machen:

Code: Alles auswählen

iptables -t nat -A POSTROUTING -s 1.1.1.1 -p tcp --source-port 13422 -j SNAT --to-source 1.1.1.1:22
Das hat aber leider nichts gebracht, immer noch das gleiche Problem.

Ich bin ehrlich gesagt ziemlich ratlos...
Hat jemand eine Idee, warum das nicht geht?

Schonmal vielen Dank!

----------------------------
[1] https://asuswrt.lostrealm.ca/
[2] http://serverfault.com/a/530020
Zuletzt geändert von tr01 am 29.03.2017 17:38:51, insgesamt 1-mal geändert.

BenutzerGa4gooPh

Re: iptables / Router: Port von ausgehendem Verkehr änderm

Beitrag von BenutzerGa4gooPh » 01.03.2017 13:52:04

tr01 hat geschrieben:Außerdem kam eine Antwort des Servers am Router an, wurde aber nicht an den Client weitergegeben.
tr01 hat geschrieben:Ich habe eine dieser günstigen NAT-VMs
Doppel-NAT? DMZ ohne Portforwarding von aussen nicht erreichbar. LAN aus der implizit entstehenden DMZ (Transfernetz mit Hostsystem und Asus-Router) ohne Portforwarding ebenfalls nicht. 1.1.1.1 weist auf maskierte VM hin. Mal mit Bridging der VM und Einfach-NAT (nur ASUS) versuchen?
https://www.thomas-krenn.com/de/wiki/Ne ... VirtualBox

Ansonsten ist noch eine Bastelei mit Portforwarding notwendig, zumindest, in der NAT-VM nach der Umleitung im Asus. Du willst m. E. aus der DMZ (Host, Asus) per Portweiterleitung in ein LAN nach NAT der VM.

Dann würde ich das Problem nicht gleich mit SSH angehen. Erst mal mit NTP oder DNS probieren:
https://doc.pfsense.org/index.php/Redir ... to_pfSense
Wenn das klappt, mit SSH weiter sehen. Sonst zuviel Bastelei/Sonderknack auf einmal. :wink:

tr01
Beiträge: 80
Registriert: 10.01.2015 10:04:54
Wohnort: /root/

Re: iptables / Router: Port von ausgehendem Verkehr änderm

Beitrag von tr01 » 29.03.2017 17:37:28

Hallo,

vielen Dank für die Antwort! Da mir das irgendwie zu aufwendig war, habe ich ein bisschen weiter probiert und eine andere Lösung gefunden, die einfacher ist.

Ich habe auf meinem Router einen OpenVPN-Server laufen, mit dem sich die VM verbindet. Damit bekommt die VM eine private IP, über die alle iherer Ports ansprechbar sind. Und das wars schon :)

Antworten