Port Forwarding 2 Linux VMs zur Windows VM

OpenMedia

Lieutenant
Registriert
Okt. 2016
Beiträge
706
Hallo zusammen,
ich habe ein etwas kompliziertes Problem. Ich habe insgesamt 3 Server.

Linux 1: Interne IP = 192.168.0.22 Externe IP = 192.168.178.55
Linux 2: Interne IP = 192.168.0.33 Externe IP = 192.168.178.66
Windows: Interne IP = 192.168.0.99

1659616747114.png


Nun möchte ich gerne, dass die Nutzer die sich an den Linux Instanzen anmelden per Port Forwarding an die Windows VM per RDP TCP: 3389 einloggen können.

Dazu habe ich entsprechend auf den Linux VMs ein Port Forwarding eingerichtet. Dass den Port 3389 auf die externen IPs 192.168.178.55 und 192.168.178.66 exposed. Die Nutzer können dann theoretisch mit der externen IP 192.168.178.55:3389 oder 192.168.178.66:3389 sich auf das Windows System einloggen.



Das Windows System ist wie folgt eingerichtet:
1659616815470.png
1659616824274.png


1659616836480.png


Man sieht dass ich die internen IPs der Linux VMs als Gateway eingerichtet habe auf dem Windows System, da ich keinen Router habe.


Problem:

Nun zu meinem Problem ich kann leider immer nur ein Port Forwarding betreiben. Entweder kann man sich auf der Linux 1 per 192.168.178.55:3389 auf den Windows verbinden oder wenn ich den Linux 1 ausschalte, mit Linux 2.

Windows erlaubt es mir nicht 2 Standardgateways auf einmal zu nutzen. Obwohl beide eingerichtet sind. Ich kann also nicht parallel Linux 1 oder Linux 2 nutzen sondern immer nur eins.

Wie kann ich in Windows konfigurieren, dass er beide Gateways nutzt und sowohl alles an Linux 1 als auch Linux 2 sendet ?
Ich möchte, dass die Nutzer sowohl von Linux VM1 als auch VM2 den freigegebenen Port 3389 nutzen können.

Vielen Dank für eure Hilfe.
 
Das sind leider zwei getrennte Bereiche eigentlich. Daher zwei Linux Systeme.
 
Nein also das ist eigentlich ein 188er Netz, in einem anderen Raum ich habe es aber zum verstehen einmal kompakter zusammengefasst mit nur 178er Netz. :D
 
Ich versuchs halt noch zu verstehen, aber dieses 188er Netz ist in zwei oder mehr Teile aufgeteilt? Sodass .55 und .66 in eigenen Subnetzen stehen? Dann wäre meine ursprüngliche Aussage falsch, es müsste funktionieren. Kannst Du mal ein "route print" von der Windows-VM anhängen. Da müssen Routen drinnen stehen wie: "route 192.168.188.0/26 über 192.168.0.55" und "route 192.168.188.64/26 über 192.168.0.66." So ungefähr halt.
 
  • Gefällt mir
Reaktionen: OpenMedia
1659618320588.png


Dort sieht man die 2 Linux VMs als Ständige Route weil ich die als Gateway eingerichtet habe.
Das Problem allerdings, nur eine VM kann sich per RDP einloggen. Sobald man die erste VM ausschaltet kann es die zweite Linux VM. Gleichzeitig funktioniert nicht.

Der Output auf der Linux VM1 wo es nicht geht wenn VM2 aktiv ist:

1659618652700.png


VM2 wo es geht :
1659618723859.png
 
Was sind denn jetzt schon wieder 192.168.178.73 und .74 für IPs?:confused_alt:

Sind das die "externen" IPs der Linux-VMs und jetzt mal konkret: Welche Subnetzmaske verwenden diese? Stehen die beiden VMs im selben Subnetz oder in dedizierten Netzen?
Was passiert wenn Du die Windows-Kiste von beiden Clients (.55 und .66) anpingst ? Kommt da bei beiden etwas zurück?
Und wenn wir das Problem einmal gelöst haben: Verwende für RDP lieber UDP. (ist schneller)
 
  • Gefällt mir
Reaktionen: OpenMedia
mit dem dnat wird nur die destination-ip umgebogen, die source-ip bleibt gleich. damit sieht windows eine verbindung von einer ip ausserhalb des eigenen netzes und will natürlich über das standardgateway antworten. damit funktionieren dann nur verbindungen, die über die vm kommen, die auch das gateway ist.

du müsstest auf den linux-vms noch ein snat einrichten, damit auch die source-ips ausgetauscht werden und windows denkt, dass die anfragen von den linux-vms kommen anstatt von ausserhalb. dann redet windows nur mit den vms im gleichen netz und braucht kein gateway.

alternativ kannst du dir auch guacamole installieren, das fungiert dann als proxy und du brauchst nichts mit iptables machen.
 
  • Gefällt mir
Reaktionen: OpenMedia
Standardgateway gibt es „nur eins“. Du kannst zwar mehr eintragen, es wird aber immer nur eins hergenommen. Du musst also sonst mit Routen arbeiten.

Generell habe ich gelernt: Dual Homed Server sind zu vermeiden, also nur an ein Netz dran. Sowas wird normal über ein Router / Firewall geregelt. Es wird schnell sehr unübersichtlich, welcher Server wo steht, welche Regeln in welcher Maschine aktiv sind etc.

Zwar keine direkte Lösung für dein Problem, aber vielleicht ein Denkanstoß, es in meinen Augen gleich richtig zu machen.
 
  • Gefällt mir
Reaktionen: OpenMedia
0x8100 schrieb:
mit dem dnat wird nur die destination-ip umgebogen, die source-ip bleibt gleich. damit sieht windows eine verbindung von einer ip ausserhalb des eigenen netzes und will natürlich über das standardgateway antworten. damit funktionieren dann nur verbindungen, die über die vm kommen, die auch das gateway ist.

du müsstest auf den linux-vms noch ein snat einrichten, damit auch die source-ips ausgetauscht werden und windows denkt, dass die anfragen von den linux-vms kommen anstatt von ausserhalb. dann redet windows nur mit den vms im gleichen netz und braucht kein gateway.

alternativ kannst du dir auch guacamole installieren, das fungiert dann als proxy und du brauchst nichts mit iptables machen.

Wie würde man den ein SNAT einrichten ? Mein DNAT sieht folgendermaßen aus :

iptables -t nat -A PREROUTING -p TCP -d 192.168.178.55 --dport 3389 -j DNAT --to-destination 192.168.0.99:3389
 
Da kommt leider ein Fehler :


iptables -t nat -A PREROUTING -p TCP --dport 3389 -j MASQUERADE --to-destination 192.168.0.99:3389

iptables v1.8.2 (legacy): unknown option "--to-destination"
Try `iptables -h' or 'iptables --help' for more information.
 
MASQUERADE

This target is only valid in the nat table, in the POSTROUTING chain. It should only be used with dynamically assigned IP (dialup) connections: if you have a static IP address, you should use the SNAT target. Masquerading is equivalent to specifying a mapping to the IP address of the interface the packet is going out, but also has the effect that connections are forgotten when the interface goes down. This is the correct behavior when the next dialup is unlikely to have the same interface address (and hence any established connections are lost anyway). It takes one option: --to-ports port[-port] This specifies a range of source ports to use, overriding the default SNAT source port-selection heuristics (see above). This is only valid if the rule also specifies -p tcp or -p udp.
Ergänzung ()

My bad, ich brauche einen Kaffee, sorry.
 
  • Gefällt mir
Reaktionen: OpenMedia
Okay Problem gelöst :) Habe einen SNAT eintrag erstellt der auf die lokale Linux VM weist :)

iptables -t nat -I POSTROUTING -j SNAT --to-source 192.168.0.33

Danke Jungs :)
 
  • Gefällt mir
Reaktionen: _anonymous0815_
der vorschlag von @_anonymous0815_ hätte auch funktioniert :)

Code:
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -o enp0s8 -j MASQUERADE # interface richtung windows_vm
iptables -t nat -A PREROUTING -p TCP -d <linux_vm> --dport 3389 -j DNAT --to-destination <windows_vm>
 

Anhänge

  • 1659622757676.png
    1659622757676.png
    887,5 KB · Aufrufe: 135
  • Gefällt mir
Reaktionen: OpenMedia
Zurück
Oben