使用 OpenVPN 时 RDP 不可用

使用 OpenVPN 时 RDP 不可用

我已经被这个问题困扰好几天了。

我目前在自托管服务器上运行 OpenVPN 服务器。我们的员工使用它,这样从远程位置登录 VPN 后,他们就可以访问我们办公室网络中的资源。它的主要用途是使用 RDP 连接到 Windows 计算机。

我们需要将其迁移到云中。我们已经建立了一个测试环境,AWS VPN 从我们的办公室连接到 Transit Gateway,该网关连接到各种 VPC。其中一个 VPC 包含一个实例,我在该实例上运行 OpenVPN 服务器,该服务器几乎与当前 VPN 的配置相匹配,只有一些小的更改。但是,虽然 RDP 使用当前 OpenVPN 安装可以完美运行,但使用云托管 OpenVPN 安装则无法使用。我说的不可用是指:

  • 尝试播放 YouTube 片段以便测试帧速率,播放立即冻结长达 10 秒,然后 RDP 会话断开连接
  • 当做任何不涉及视频的事情时,它通常会工作一两分钟,然后一切都冻结,一段时间后会话就会断开

因此,我们能够正常连接,但显然有些东西没有按预期运行,我已经尝试了所有我能想到的方法。这些是当前运行的自托管 OpenVPN 服务器的详细信息。

  • CentOS 6.10
  • OpenVPN 2.4.7

以及内容server.conf:

local 192.168.1.103
port 1194
proto tcp
dev tun
cert /etc/openvpn/keys2/mycert
key /etc/openvpn/keys2/mykey

dh /etc/openvpn/keys2/dh.pem

server 10.8.0.0 255.255.255.0

topology subnet

route 192.168.2.0 255.255.255.0

push "route 10.8.0.0 255.255.255.0"
push "route 192.168.1.0 255.255.255.0"

push "dhcp-option DNS 192.168.1.1"
push "dhcp-option DNS 8.8.8.8"
push "dhcp-option DNS 8.8.4.4"

client-config-dir /etc/openvpn/ccd

client-to-client

duplicate-cn

keepalive 20 600

cipher AES-128-CBC

max-clients 100

user nobody
group nobody

persist-key
persist-tun

status /var/log/openvpn/openvpn-status.log

log         /var/log/openvpn/openvpn.log

verb 4

username-as-common-name

plugin /usr/lib64/openvpn/plugins/openvpn-plugin-auth-pam.so openvpn
reneg-sec 0

management localhost 17505
compress lz4
mssfix 1432
mute 10
ifconfig-pool-persist ipp.txt
key-direction 0

tcp-queue-limit 256

verify-client-cert none

云OpenVPN服务器的详细信息:

  • CentOS 7.6.1810
  • OpenVPN 2.4.7

以及server.conf:

port 1194

proto udp

dev tun

username-as-common-name

ca /etc/certs/ca.crt
cert /etc/certs/server.crt
key /etc/certs/server.key  

dh /etc/certs/dh2048.pem

server 10.8.0.0 255.255.255.0

topology subnet

push "route 10.8.0.0 255.255.255.0"
push "dhcp-option DNS 8.8.8.8"
push "dhcp-option DNS 8.8.4.4"

client-config-dir /etc/openvpn/ccd

client-to-client

duplicate-cn

keepalive 20 600

tcp-queue-limit 256

cipher AES-256-CBC
auth SHA256

max-clients 100

user nobody
group nobody

persist-key
persist-tun

status /var/log/openvpn/openvpn-status.log

log         /var/log/openvpn/openvpn.log

verb 4

plugin /usr/lib64/openvpn/plugins/openvpn-plugin-auth-pam.so openvpn
reneg-sec 0

compress lz4
mssfix 1432
mute 10
ifconfig-pool-persist ipp.txt
key-direction 0

verify-client-cert none

您可以看到,某些路由因必要而有所不同。此外,虽然目前新服务器使用的是 UDP,但正如下文所述,这是因为我已对其进行了更改,以尝试解决该问题。

这是我尝试过的:

  • 尝试了 TCP 和 UDP(UDP 在我们办公室里效果一直不太好,所以我们多年来一直使用 TCP)
  • MTU 设置有很多变化,从 500 到 2500,有多种增量
  • 将密码更改为 AES-128-CBC
  • 所有可用的 RDP 颜色和带宽设置
  • 各种 RDP 显示尺寸设置
  • TightVNC 运行得很好,但不幸的是它不是一个解决方案。我只是想确保问题是否特定于 RDP

由于我没有其他想法,因此我将非常感激。

答案1

这里的问题是,我们尝试通过 RDP 连接的客户端所使用的路由器中的 DoS 防御设置 - 特别是 UDP 洪水防御设置(我们使用 DrayTek Vigor 2926)。阈值设置为每秒 50 个数据包。禁用该设置可大大改善体验,因此经过一些试验后,我们决定将阈值设置为每秒 5000 个数据包。现在运行良好。

相关内容