Weiterleitung eingehender RDP-Kommunikation (Port 3389) an LAN-Rechner

Weiterleitung eingehender RDP-Kommunikation (Port 3389) an LAN-Rechner

Es findet kein externer Datenverkehr (Internet-Zugang) statt, der gesamte Datenverkehr erfolgt intern.

Ich versuche, eine RDP-Verbindung vom WINDOWS-PC 1 herzustellen, den RDP-Verkehr vom WINDOWS-PC 1 als IP-Adresse des Linux-SERVERS (10.0.2.5) auszugeben und von dort aus zum Ziel WINDOWS-PC 2 fortzufahren.

Hier ist ein Bild zur weiteren Veranschaulichung:

    WINDOWS PC 1 (10.0.2.122)
             |
           [RDP]
             |
             V
 LINUX SERVER (10.0.2.5)
             |
         [FW 3389]
             |
             V
   WINDOWS PC 2 (10.0.2.188)

WAS ICH VERSUCHT HABE

  • Ich habe die Portweiterleitung im Kernel aktiviert:sysctl net.ipv4.ip_forward=1
  • Ich habe es bereits mit mehreren Antworten aus vielen Foren versucht, aber es geht immer noch nicht:

iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 3389 -j DNAT --to 10.0.2.188:3389 iptables -A FORWARD -p tcp --dport 3389 -d 10.0.2.188 -j ACCEPT

  • Ich habe die iptables-Zähler beobachtet und sehe keine Aktivität:watch 'iptables -vL'

Antwort1

Nun, nachdem ich Ihren Kommentar gelesen habe, scheint es, dass diese beiden PCs Teil desselben sindLokales Netzwerk (LAN)Aus diesem Grund können Sie den Datenverkehr von Ihrer Linux-Box nicht sehen.

Dieses Tutorialbringt Ihnen die Grundlagen von LAN bei, macht es aber ganz einfach:

  • Diese Computer kennen sich gegenseitig durchARP;
  • Sie werden "sehen", dass sie zum selben LAN gehören und direkt miteinander sprechen
  • Wenn Ihre Linux-Box das Gateway ist, wird sie nur zum Weiterleiten von Datenverkehr verwendet, der NICHT zu diesem LAN gehört (aus 10.0.2.0/24oder welche Maske Sie auch immer definiert haben).

tl,dr: Diese Computer befinden sich im selben LAN. Um also den Datenverkehr von Ihrer Linux-Box zu sehen (und Sie können ihn nicht „abfangen/verfälschen“, sondern nur sehen“), müssen Sie Ihre Linux-Netzwerkkarte in den Promisc-Modus versetzen:ip link set dev eth0 promisc on

Ok. Abgesehen von all diesem theoretischen Kram müssen Sie, wenn Sie innerhalb desselben LANs ein Paket erstellen DNAT, das Paket mithilfe eines SNAT „gewaltsam“ zu seinem Ursprung zurückschicken. Dies ist ein Sonderfall, in dem Sie 2 Computer im selben LAN haben, während Sie ein NAT durchführen.

iptables -t nat -A PREROUTING -p tcp --dport 3389 -j DNAT --to-destination 10.0.2.188:3389
iptables -t nat -A POSTROUTING -p tcp -d 10.0.2.188 --dport 3389 -j SNAT --to-source 10.0.2.122

Auf diese Weise erzwingen Sie, dass, wenn ein Paket zu Ihrer Linux-Box zurückkommt, ein Source-NAT ausgeführt wird, um10.0.2.122

Andere Alternativen:

Mach einRDP-Proxy mit HA-Proxyund platzieren Sie diese Hosts in getrennten Netzwerken. Das ist zwar übertrieben (Erstellen eines RDP-Proxy-Gleichgewichts für einzelne Mitglieder), aber es ist eine Alternative.

Antwort2

HAProxy-Lösung

Vgl.Lastenausgleich für Microsoft Remote Desktop Services (RDS)

sudo apt install haproxy

cat << EOF | sudo tee -a /etc/haproxy/haproxy.cfg
frontend ft_rdp
    mode tcp
    bind :3389 name rdp
    timeout client 1h
    log global
    option tcplog
    tcp-request inspect-delay 2s
    tcp-request content accept if RDP_COOKIE
    default_backend bk_rdp

backend bk_rdp
    mode tcp
    balance leastconn
    persist rdp-cookie
    timeout server 1h
    timeout connect 4s
    log global
    option tcp-check
    tcp-check connect port 3389 ssl
    default-server inter 3s rise 2 fall 3
    server windows_pc_2 10.0.2.188:3389 weight 10 verify none
EOF

sudo systemctl restart haproxy
systemctl list-units | grep haproxy

verwandte Informationen