Hetzner 服务器默认使用欧洲标准国际带宽,国内访问速度慢主要受跨国链路拥堵影响,无法直接更换物理线路,建议通过 CDN 加速静态资源或优化 TCP 协议栈缓解。
先说结论:无法直接更改 Hetzner 物理机房线路,只能通过应用层优化改善体验。
- 先定位:使用 MTR 工具确认丢包发生在跨国链路还是本地网络。
- 先做:开启 BBR 拥塞控制算法,接入 CDN 服务缓存静态资源。
- 再验证:对比优化前后的 Ping 值、丢包率及页面加载时间。
命令速用版
以下命令用于检查当前拥塞控制算法并开启 BBR,适用于大多数 Linux 发行版。
sysctl net.ipv4.tcp_congestion_control
sysctl -w net.ipv4.tcp_congestion_control=bbr
echo "net.ipv4.tcp_congestion_control=bbr" >> /etc/sysctl.conf
为什么会这样
Hetzner 数据中心主要位于德国和芬兰,国内访问需经过公共国际出口带宽。
物理距离导致基础延迟较高,通常在 200ms 以上。高峰时段国际出口拥堵会造成丢包,TCP 协议默认算法在丢包环境下会降低发送速率,导致传输速度下降。CDN 通过边缘节点就近分发内容,减少源站直接请求次数。
分步处理
第一步:路由链路检测
在本地电脑执行 MTR 测试,观察丢包位置。
命令:mtr -rw 服务器 IP
检查点:若丢包集中在最后几跳,可能是源站问题;若集中在中间跨国节点,则是链路拥堵。
第二步:开启 BBR 算法
登录服务器执行速用版命令,修改后需重启服务器或重新加载配置。
风险边界:极少数旧版内核不支持 BBR,强制开启可能导致网络中断,操作前请确认内核版本高于 4.9。
第三步:配置 CDN 服务
将域名 DNS 解析至 CDN 服务商提供的 CNAME 地址。
配置片段:在 DNS 管理面板添加 CNAME 记录,主机记录填 www,记录值填 CDN 提供的地址。
注意:动态接口请求通常无法缓存,仍会回源到 Hetzner 服务器。
怎么验证是否生效
网络层验证
使用 Ping 命令观察延迟波动,使用 MTR 观察丢包率变化。
命令:ping -c 10 服务器 IP
应用层验证
使用 Curl 测试下载耗时,对比开启 CDN 前后的头部信息。
命令:curl -o /dev/null -s -w "Time: %{time_total}s\n" http://域名
状态判断:若响应头包含 CDN 厂商标识(如 cf-ray),说明流量已经过边缘节点。
常见坑
动态内容回源
CDN 仅加速静态文件,登录、提交表单等动态请求仍走原线路,速度无明显提升。
IPv6 路由偏好
部分国内网络 IPv6 路由绕路严重,若服务器开启 IPv6,建议在 DNS 解析中暂时关闭 AAAA 记录。
BBR 兼容性
某些特定虚拟化环境(如部分 OpenVZ)可能无法修改内核参数,需确认 VPS 架构支持。
常见问题
Hetzner 有 CN2 线路吗?
没有,Hetzner 官方不提供 CN2 GIA 或 CN2 GT 专线,均为标准国际带宽。
开启 BBR 能降低 Ping 值吗?
不能,BBR 主要提升吞吐量,无法减少物理传输延迟,但能改善高丢包下的速度。
接入 CDN 后源站 IP 会暴露吗?
若历史 DNS 记录未清除或通过其他渠道泄露,源站 IP 仍可能被扫描发现,建议更换 IP 或配置防火墙。
参考来源
Hetzner Data Centres - 官方数据中心介绍
https://www.hetzner.com/data-centers
Google BBR - 拥塞控制算法仓库
https://github.com/google/bbr
Cloudflare Documentation - CDN 配置指南
https://www.cloudflare.com/