我已经被这个问题困扰好几天了。
我目前在自托管服务器上运行 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 个数据包。现在运行良好。