You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

低延迟实现本地服务器端口到云VPS端口转发的最优方案咨询

低延迟实现本地服务器端口到云VPS端口转发的最优方案咨询

针对你的游戏服务器低延迟端口转发需求——本地服务器无法做端口转发,需要通过云VPS将外部请求转发到内网服务,我来对比你提到的两个方案,帮你选出最贴合需求的选项:

核心需求回顾

首先明确你的关键约束:

  • 不能做本地端口转发,只能由本地服务器主动连接云VPS
  • 需处理全量流量(非HTTP反向代理场景)
  • 优先低延迟(游戏服务器对延迟敏感)
  • 支持TCP/UDP(多数游戏依赖UDP协议)

方案对比与分析

1. SSH反向端口转发

这是最省心的原生方案,不需要额外安装软件:

  • 配置方式:在云VPS的/etc/ssh/sshd_config中设置GatewayPorts yes,重启sshd服务;然后在本地服务器执行:
    ssh -R 0.0.0.0:8080:192.168.1.2:80 cocomac@server.example.com
    
    (如果是在本地服务器上执行,用localhost:80代替192.168.1.2:80也可以)
  • 延迟表现:SSH本身带有完整的加密层,会带来额外的CPU开销和数据包延迟——对于游戏服务器来说,这种加密的额外延迟可能会被玩家明显感知到。另外,SSH默认不支持UDP转发,如果你需要处理UDP流量,还得配合socat等工具做额外转发,进一步增加延迟。
  • 优缺点:优点是无需额外软件、稳定性高(SSH是成熟协议);缺点是延迟偏高、UDP支持繁琐,不适合对延迟敏感的游戏场景。

2. rathole

这是一款专门为高性能内网穿透设计的工具(基于Rust开发),完全适配你的需求:

  • 配置方式:在云VPS和本地服务器都安装rathole,然后分别配置服务端和客户端:
    • VPS(服务端)配置文件示例(rathole-server.toml):
      [server]
      bind_addr = "0.0.0.0:2333" # 本地服务器主动连接的端口
      
      [services.game]
      bind_addr = "0.0.0.0:8080" # 暴露给外部客户端的端口
      token = "your-secure-token" # 用于身份验证的令牌
      
    • 本地服务器(客户端)配置文件示例(rathole-client.toml):
      [client]
      remote_addr = "server.example.com:2333" # VPS的地址和端口
      
      [services.game]
      local_addr = "192.168.1.2:80" # 本地服务的地址和端口
      token = "your-secure-token" # 和服务端一致的令牌
      
    启动命令分别为rathole rathole-server.toml(VPS)和rathole rathole-client.toml(本地)。
  • 延迟表现:rathole的核心设计目标就是低延迟和高吞吐量,它的协议开销远低于SSH隧道。即使开启TLS加密(可选),其加密实现也比SSH更轻量;如果你的本地到VPS链路是可信的,还可以关闭加密进一步降低延迟。另外,它原生支持UDP转发,完美适配游戏服务器的需求。
  • 优缺点:优点是延迟极低、原生支持TCP/UDP、性能优异;缺点是需要额外安装软件(Ubuntu可以通过官方deb包或Cargo快速安装),但配置过程也很简单。

最终结论

如果优先考虑延迟(尤其是游戏服务器场景),rathole是绝对的最优选择——它的性能开销远小于SSH隧道,原生支持UDP,完全贴合低延迟的需求。如果只是临时测试或不想安装额外软件,SSH反向转发可以凑合用,但长期运行游戏服务器的话,rathole的优势会非常明显。

备注:内容来源于stack exchange,提问作者cocomac

火山引擎 最新活动