%20an%20LAN-Rechner.png)
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/24
oder 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