着信RDP(ポート3389)通信をLANコンピュータに転送する

着信RDP(ポート3389)通信をLANコンピュータに転送する

外部トラフィック(インターネット接続)はなく、すべてのトラフィックは内部トラフィックです。

私が達成したいのは、WINDOWS PC 1でRDPを実行し、WINDOWS PC 1からLinuxサーバーのIPアドレス(10.0.2.5)にRDPトラフィックをなりすまし、そこからターゲット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台のコンピュータが同じコンピュータの一部であるようです。LAN(ローカルエリアネットワーク)。これがLinux Boxからのトラフィックが表示されない理由です。

このチュートリアルLANの基本を教えてくれますが、簡単に説明します。

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

タイ博士:このコンピュータは同じLAN上にあるため、Linuxコンピュータの一部のトラフィックを表示するには(「傍受/中断」することはできず、表示するだけです)、Linuxネットワークカードをpromiscモードに設定する必要があります。ip link set dev eth0 promisc on

わかりました、これらすべての理論的知識に基づいて同じLAN内に内部を作成するときは、DNATSNATを使用してパケットを元の場所に「強制」する必要があります。これは、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 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

関連情報