我正在使用这些软件运行一个简单的 vpn 服务器:
- 开放式VPN
- 影袜
- MTProto 代理
我的服务器配置是:
- Ubuntu 18.04 x64
- 512内存,1vCPU
- UFW防火墙
- 网络数据监控
- Nginx
距离我开始运行服务器仅几天时间。问题是 Netdata 每隔几个小时就会向我发送这 3 种类型的错误。
- “服务器需要注意,ipv4.udperrors(udp),1m ipv4 udp接收缓冲区错误=12个错误”
- “服务器需要注意,net_drops.tun0 (tun0),出站数据包丢弃 = 34 个数据包”
- “服务器需要注意,net_packets.tun0(tun0),出站丢包率=0.33%”
我认为这没什么大不了的,所以我忽略了它们。
我不确定这是防火墙问题、系统瓶颈还是提到的 3 个 vpn 软件之一性能不佳。
我查看了几乎每个日志文件,/var/log
但在服务器无法访问之前我找不到任何错误或问题。我不确定服务器是否冻结或崩溃。因为在某个点之后没有日志。直到我们确实强制重启。
我发现了问题。它与openvpn有关。我看了看,
/var/log/syslog
显然 openvpn 在与客户端进行 TLS 握手时遇到了问题。它不断记录这些错误:原因是
reneg-sec
参数的默认值为 3600。这是来自 openvpn 官方文档的引用:此参数确保客户端必须每小时重新协商他们的密钥。
因此,如果您长时间将 openvpn 留在(客户端)上,并且无论出于何种原因,其中一次握手失败,这将导致无休止的失败谈判。我猜这导致了丢弃的数据包和东西。
更何况“tun0”接口最初是由openvpn制作的,我不知道。
无论如何,解决方案是将其更改
reneg-sec
为更高的值,或者将其设置为零并禁用它。我决定只使用禁用选项并reneg-sec 0
输入server.conf
和客户端.opvn
配置文件。此外,如果您碰巧使用 UFW,则必须编辑
/etc/default/ufw
并更改DEFAULT_FORWARD_POLICY
以接受。如果您仍然不断收到 udp 错误,您可能还需要调整您的网络设置。