轉送傳入 RDP(連接埠 3389)與 LAN 電腦的通訊

轉送傳入 RDP(連接埠 3389)與 LAN 電腦的通訊

沒有流量將是外部的(面向互聯網),所有流量將是內部的。

我想要實現的是從 WINDOWS PC 1 進行 RDP,將來自 WINDOWS PC 1 的 RDP 流量偽裝成 Linux 伺服器 IP 位址 (10.0.2.5),並從那裡繼續到達目標 WINDOWS PC 2。

這是一張圖片來進一步說明:

    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)

我嘗試過的

  • 我已經在核心中啟用了連接埠轉送:sysctl net.ipv4.ip_forward=1
  • 我已經嘗試了許多論壇的幾個答案,但仍然不行:

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

  • 我觀察了 iptables 計數器,沒有看到任何活動:watch 'iptables -vL'

答案1

看完你的評論後,看來這兩台電腦是同一台電腦的一部分區域網路(LAN)。這就是為什麼您看不到來自 Linux Box 的流量的原因。

本教程將教您 LAN 的基礎知識,但使其變得簡單:

  • 這些計算機將透過以下方式相互了解ARP;
  • 他們會「看到」他們屬於同一個區域網路並且會直接交談
  • 如果您的 Linux 機器是網關,它將僅用於路由不屬於該 lan 的流量(超出10.0.2.0/24或您定義的任何遮罩)

太,博士:這些電腦位於同一個 LAN 上,因此,要查看來自 Linux 機器的一些流量(並且您將無法“攔截/破壞”,只能查看”),您必須將 Linux 網路卡置於 promisc 模式:ip link set dev eth0 promisc on

好的。透過所有這些理論知識,當您在同一個區域網路內建立一個DNAT內部時,您將必須使用 SNAT「強制」將封包傳回其起源。這是一種特殊情況,即在執行 NAT 時同一 LAN 上有 2 台電腦。

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

透過這種方式,您將強制執行,當封包返回到您的 Linux 機器時,將執行 Source nat10.0.2.122

其他替代方案:

做一個具有 HA 代理的 RDP 代理並將這些主機放在不同的網路上。這是一種過度殺傷力(創建單一成員 rdp 代理餘額),但它是一種替代方案。

答案2

HAProxy解決方案

比照。Microsoft 遠端桌面服務 (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

相關內容