通过 NAT 进行 RDP

通过 NAT 进行 RDP

我有一个装有 Centos 7.6 的 VDS,有一个 KVM,以及一个装有 Win10 的 VM。两者都可以看到互联网和彼此,一切都设置了默认 NAT。现在我希望能够通过 mstsc 到 VDS 的某个端口将 RDP 连接到 Windows。

与手册斗争了三天,毫无进展。当前配置如下:

[root@static etc]# firewall-cmd --list-all
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: enp0s31f6
  sources: 
  services: ssh dhcpv6-client vnc-server
  ports: 3389/tcp
  protocols: 
  masquerade: no
  forward-ports: port=3389:proto=tcp:toport=3389:toaddr=192.168.122.10
  source-ports: 
  icmp-blocks: 
  rich rules: 

这似乎是正确的。我确实觉得这是一个愚蠢而且可能微不足道的问题,但不知道下一步该怎么做。

请问有什么想法吗?

更新。更多细节使其更加清晰。

主机配置(无桥接,仅 NAT,1 个物理接口):

[root@static ~]# ifconfig enp0s31f6: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 95.217.38.211  netmask 255.255.255.192  broadcast 95.217.38.255
        inet6 fe80::4e52:62ff:fe0b:9bee  prefixlen 64  scopeid 0x20<link>
        ether 4c:52:62:0b:9b:ee  txqueuelen 1000  (Ethernet)
        RX packets 9459  bytes 1506084 (1.4 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 9368  bytes 5002008 (4.7 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
        device interrupt 16  memory 0xef200000-ef220000

客户端配置:

DHCP: no
IPv4: 192.168.121.10
MASK: 255.255.255.0
GATE: 192.168.122.1
DNS : 192.168.122.1

答案1

当我遇到这类问题时,我通常会运行 tcpdump 和/或 wireshark 来尝试查看发生了什么。我没有您配置的完整详细信息,但我暂时假设您正在使用 Linux 计算机,并在相同的硬件上运行 Windows 虚拟机。

我将在 Windows 中运行 Wireshark,并将捕获选项对话框设置port 3389为捕获过滤器。这将限制捕获的流量仅限于 RDP 端口。

一旦运行,我将在 Linux 命令行上执行相同操作,具体针对每个接口,因此 2 个网卡或接口需要运行两个 tcpdump 实例。命令如下:

# tcpdump -i eth0 -p port 3389 
# tcpdump -i eth1 -p port 3389

...假设您有两个网络接口(虚拟或物理)- 您必须使用 -i 选项替换正确的接口名称。如果您只有一个网络接口,那么您只能运行一个 tcpdump 实例。如果您没有 tcpdump,您可能需要通过包管理器安装它。

一旦所有捕获都处于活动状态,请尝试通过 RDP 连接,然后检查沿途每个连接的输出。一旦您找到连接被阻止或断开的位置,您就知道应该将精力集中在哪里。您不需要了解很多网络知识即可做到这一点。

这曾多次拯救了我。一个常见问题是错误地设置了其中一台机器上的默认网关。不正确的路由很容易与错误配置的防火墙规则相同。

相关内容