我有一个装有 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 连接,然后检查沿途每个连接的输出。一旦您找到连接被阻止或断开的位置,您就知道应该将精力集中在哪里。您不需要了解很多网络知识即可做到这一点。
这曾多次拯救了我。一个常见问题是错误地设置了其中一台机器上的默认网关。不正确的路由很容易与错误配置的防火墙规则相同。