着信 RDP (ポート 3389) 通信を LAN マシンに転送する

着信 RDP (ポート 3389) 通信を LAN マシンに転送する

外部へのトラフィックは発生せず (インターネットに接続)、すべてのトラフィックが内部になります。

私が実現しようとしているのは、WINDOWS PC 1 から RDP を実行し、WINDOWS PC 1 からの RDP トラフィックを Linux SERVERS 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

あなたのコメントを読んでみると、その2台のPCは同じものの一部であるようですローカルエリアネットワーク(LAN)これが、Linux ボックスからのトラフィックが表示されない理由です。

このチュートリアルLAN の基礎をわかりやすく説明します。

  • これらのコンピュータは、ARP;
  • 彼らは同じLANに属していることを「認識」し、直接会話するでしょう
  • Linux ボックスがゲートウェイである場合、その LAN に属さないトラフィック (10.0.2.0/24定義したマスク以外) をルーティングするためにのみ使用されます。

要約: これらのコンピューターは同じ LAN 上にあるため、Linux ボックスからのトラフィックを確認するには (「傍受/改変」はできず、確認するだけです)、Linux NIC をプロミスク モードに設定する必要があります。ip link set dev eth0 promisc on

わかりました。この理論的なことすべてを踏まえて、同じ LAN 内でパケットを作成する場合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ボックスに戻ってきたときに、ソースNATが実行され、10.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

関連情報