들어오는 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

귀하의 댓글을 읽어보니 이 두 대의 컴퓨터가 동일한 컴퓨터의 일부인 것 같습니다.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에 두 대의 컴퓨터가 있는 특별한 경우입니다.

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

관련 정보