You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何与通过VPN访问的远程服务器建立UDP连接?

问题排查与解决方法

核心原因说明

UDP是无连接协议,很多VPN的安全策略默认仅放行TCP流量(比如你可正常使用的SSH协议),且通常仅开放常用TCP端口,未针对UDP端口做放行规则,是该问题的最常见诱因。

可落地的解决步骤

1. 基础规则校验

  • 联系运维确认VPN安全策略、远程服务器防火墙/安全组,已放行你使用的UDP端口的出入站规则
  • 本地连接VPN后,执行ip route(Linux/macOS)或route print(Windows),确认远程服务器IP的流量路由下一跳为VPN网关,避免流量从本地公网网卡发出无法到达目标服务器

2. 服务端配置调整

你当前服务端仅绑定了固定的remote_server_ip,如果该IP是公网IP,VPN接入的内网网卡流量无法被监听,可以修改绑定地址为0.0.0.0,监听所有网卡的请求:

# 服务端修改点
localIP     = "0.0.0.0" # 替换原有的remote_server_ip
localPort   = port
bufferSize  = 1024

3. 若VPN完全禁止UDP流量,用SSH隧道封装UDP

因为你已经可以通过SSH连接远程服务器,可以用SSH的UDP转发功能将UDP包封装到TCP隧道中传输,无需VPN单独放行UDP:

  1. 本地执行SSH端口转发命令:
ssh -N -L 127.0.0.1:本地UDP端口:127.0.0.1:远程服务端UDP端口 SSH用户名@远程服务器IP

注:该命令要求本地和远程的OpenSSH版本不低于6.7,支持UDP转发

  1. 修改客户端连接地址为本地转发端口:
# 客户端修改点
serverAddressPort   = ("127.0.0.1", 你设置的本地UDP端口)

4. 快速排查验证

  • 远程服务器上执行tcpdump udp port 你的服务端口,同时本地连VPN后用nc -u 远程服务器IP 服务端口发送测试包,确认是否有流量到达服务器,快速定位是网络拦截还是代码配置问题
  • 先在远程服务器本地运行客户端代码连接服务端,确认服务本身运行无异常

内容的提问来源于stack exchange,提问作者Jung Hyuk Lee

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 21:57:02