Comunicación RDP entrante (puerto 3389) a la máquina LAN

Comunicación RDP entrante (puerto 3389) a la máquina LAN

Ningún tráfico será externo (orientado a Internet), todo el tráfico será interno.

Lo que estoy tratando de lograr es realizar RDP desde la PC 1 con WINDOWS, hacer que el tráfico RDP de la PC 1 con WINDOWS se haga pasar por la dirección IP de los SERVIDORES Linux (10.0.2.5) y desde allí continuar hasta la PC 2 con WINDOWS de destino.

Aquí hay una imagen para ilustrar más:

    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)

LO QUE HE PROBADO

  • He habilitado el reenvío de puertos en el kernel:sysctl net.ipv4.ip_forward=1
  • Ya probé varias respuestas de muchos foros, pero todavía no lo hice:

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

  • Miré los contadores de iptables y no veo actividad:watch 'iptables -vL'

Respuesta1

Bueno después de leer tu comentario parece que esas 2 PC son parte de lo mismoRed de área local (LAN). Esta es la razón por la que no puedes ver el tráfico desde tu Linux Box.

este tutorialLe enseñará los conceptos básicos de LAN, pero de forma sencilla:

  • Esas computadoras se conocerán entre sí a través deARP;
  • "Verán" que pertenecen a la misma LAN y hablarán directamente
  • Si su máquina Linux es la puerta de enlace, solo se usará para enrutar el tráfico que NO pertenece a esa LAN (fuera de 10.0.2.0/24la máscara que haya definido)

tl, dr.: Esas computadoras están en la misma LAN, por lo tanto, para ver algo de tráfico desde su máquina Linux (y no podrá "interceptar/destrozar", solo ver") tendrá que poner su tarjeta Linux en modo promisc:ip link set dev eth0 promisc on

De acuerdo. Pasando todo este material teórico, cuando estés creando una DNATdentro de la misma LAN, tendrás que hacer que el paquete REGRESE a sus orígenes "con fuerza" usando un SNAT. Este es un caso especial en el que tienes 2 computadoras en la misma LAN mientras realizas una NAT.

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

De esta manera, hará cumplir que, cuando un paquete regrese a su máquina Linux, se realizará una fuente nat para10.0.2.122

Otras alternativas:

Hacer unaProxy RDP con proxy HAy poner esos hosts en redes separadas. Esto es una exageración (crear un saldo de proxy rdp de un solo miembro) pero es una alternativa.

Respuesta2

Solución HAProxy

Cf.Equilibrio de carga de Servicios de Escritorio remoto (RDS) de Microsoft

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

información relacionada