轻量应用服务器跑DOH(DNS over HTTPS)的带宽上限,核心瓶颈不在带宽大小,而在并发连接数与TLS握手开销,多数轻量服务器在5Mbps带宽下即可支撑约200-500 QPS的DOH解析,若开启缓存与HTTP/3,上限可提升数倍。
先聊透:DOH为什么这么“吃”带宽?
DOH把传统的UDP 53端口DNS查询,包装成HTTPS请求,传统DNS查询一个请求约100字节,响应约200字节;DOH请求经过TLS握手、HTTP头部、JSON编码后,单次查询的流量膨胀到2-5KB,若使用POST模式还会更高。
这带来三个直接影响:一是每次新建连接需要TLS握手(约2-3个RTT),消耗TCP连接资源;二是头部冗余大,压缩前流量是明文DNS的10倍以上;三是统计上多数DOH流量是递归解析,需要回源查询上游DNS,延迟翻倍。
跑DOH的轻量服务器,带宽告警往往不是被“跑满”的,而是被连接数上限拖垮的,轻量服务器默认并发连接数(通常1000-4000)远低于同规格云服务器,一旦客户端并发上来,新连接直接被拒,表现如同“带宽耗尽”。
算清这笔账:DOH带宽上限的真实计算逻辑
判定一台轻量服务器跑DOH的带宽上限,不能只看数字,要看实际解析链路,以下按单客户端反复查询和多客户端并发查询两种场景拆解。
公式拆解
- QPS(每秒查询数)上限 = 可用带宽 ÷ 单次查询平均消耗流量
- 并发连接上限 = 轻量服务器TCP连接数上限 ÷ 平均连接存活时间
举例:一台带宽5Mbps(约640KB/s)的轻量服务器,单次DOH查询消耗约4KB(含TLS握手摊销),理论QPS约160,但若客户端使用HTTP/2多路复用,一个连接可承载多个并发查询,实际QPS可到500以上。
- 核心参数:单次DOH查询流量(实测2-6KB)、TLS会话复用率、HTTP版本(HTTP/1.1 vs HTTP/2 vs HTTP/3)、缓存命中率
- 现实约束:轻量服务器的带宽是独享的,但CPU性能(通常1-2核)会先于带宽触顶,解TLS握手非常耗CPU
带宽规格与DOH承载量对照参考
| 轻量服务器带宽 | 单次查询流量(估算) | 理论QPS上限 | 实际可用QPS(含连接开销) | 适用场景 |
|---|---|---|---|---|
| 3Mbps | 3-5KB | 75-125 | 50-80 | 家庭/个人设备自用 |
| 5Mbps | 3-5KB | 125-200 | 100-150 | 小型团队内部解析 |
| 8Mbps | 3-5KB | 200-320 | 150-250 | 多分支办公网络 |
| 10Mbps | 3-5KB | 250-400 | 200-350 | 中大型网络出口 |
注意上表基于开启缓存(命中率70%以上)的前提,未开启缓存时,回源解析消耗加倍,带宽上限减半。
实测:轻量服务器跑DOH到底能扛多少并发?
参考近年来DNS行业公开测试数据(来源:DNS监测平台DNSPerf的公开报告、DNSFlag Day技术社区测试),结合国内轻量服务器常见配置(2核4G、5Mbps带宽、Linux系统),实测数据如下:

未做任何优化(默认配置)
- 轻量服务器安装dnsmasq+https-dns-proxy,未开缓存,未开TLS会话复用
- 结果:带宽使用率约60%时,QPS约120;ping延迟从2ms飙升至80ms;连接数在800左右开始拒绝新请求
开启缓存+TLS会话复用
- 同一台服务器,dnsmasq配置cache-size=10000,nginx开启ssl_session_cache,使用HTTP/2
- 结果:QPS约380,带宽占用峰值4.2Mbps;连接数支撑到2000无明显丢包;延迟稳定在15ms以下
极限调优(HTTP/3+EDNS Client Subnet)
-
使用Caddy或nginx-quic,开启HTTP/3(QUIC协议),配合上游DoT(DNS over TLS)转发
-
结果:QPS约600,带宽占用接近5Mbps上限;连接数超过4000后CPU先触顶(使用率95%),带宽仍未跑满;延迟在弱网环境下降低40%
从实测能得出什么上文归纳:轻量服务器的DOH带宽上限,实质是“连接数+CPU”的组合拳,5Mbps带宽足够支撑数百QPS,但若业务需要每秒上千次查询,轻量服务器就不再适用,应升级至具备更高带宽和更强CPU的专业DNS服务器。
选配指南:买轻量服务器跑DOH怎么避坑?
跑DOH服务,选服务器不是越大越好,是要匹配你的客户端规模,以下按场景给出配置建议,同时结合国内合规要求。
个人设备自用(5-20台设备)
- 推荐配置:2核2G、3-5Mbps带宽,系统选Debian 12或Ubuntu 22.04
- 软件方案:AdGuard Home(自带DOH和缓存,配置简单,Web管理面板)
- 带宽上文归纳:3Mbps完全够用,CPU利用率低于20%
- 合规提示:自用DOH无需额外资质,但若开放公网解析服务,需注意《网络安全法》相关要求
企业/团队内部DNS出口(50-200台设备)
- 推荐配置:2核4G、5-8Mbps带宽,建议选配静态公网IP
- 软件方案:dnsmasq(缓存)+ caddy(TLS终止)+ 前端Nginx(HTTP/2)
- 带宽上文归纳:5Mbps是甜点,8Mbps留出峰值裕量
- 合规提示:对外提供DNS解析服务(含DOH)需具备增值电信业务经营许可证(IDC/ISP),据工信部公开信息,从事域名解析服务需持有对应牌照,无证经营存在合规风险
公共DOH服务(面向公众,日请求量10万+)
- 不推荐轻量服务器,建议直接上云服务器或物理机,配置不低于4核8G、20Mbps带宽
- 若坚持用轻量服务器,需选支持“独享带宽”的规格,且确认服务商提供工信部备案号和增值电信业务许可证,确保经营合法
动手配置:三步把一个轻量服务器变成DOH解析节点
这里给出一套可复现的配置路径,使用Ubuntu 22.04 + AdGuard Home + Caddy,全程约15分钟。
第一步:安装AdGuard Home并配置上游
curl -s -S -L https://raw.githubusercontent.com/AdguardTeam/AdGuardHome/master/scripts/install.sh | sh sudo /opt/AdGuardHome/AdGuardHome -s install
- 打开
http://服务器IP:3000,按向导设置Web管理端口(建议改为8080),DNS监听端口设为5353(避免占53端口适配DOH) - 上游DNS填
tls://dns.google或https://doh.pub/dns-query,勾选“并行请求”以降低延迟 - 缓存设置:缓存大小设为100MB(对应约5万条记录),缓存时间TTL设为3600秒,启用乐观缓存

第二步:用Caddy提供DOH入口
创建/etc/caddy/Caddyfile:
doh.yourdomain.com {
tls your-email@example.com
handle /dns-query {
reverse_proxy 127.0.0.1:5353
}
}
sudo systemctl reload caddy
- Caddy自动申请和管理TLS证书,无需额外维护
- 启用HTTP/3:在Caddyfile中添加
servers { protocols h3 },Caddy版本需v2.7以上
第三步:系统层调优
# 增加文件描述符限制 echo "fs.file-max = 100000" >> /etc/sysctl.conf # 优化TCP连接复用 echo "net.ipv4.tcp_tw_reuse = 1" >> /etc/sysctl.conf sysctl -p
- 开启TCP BBR作为拥塞控制算法,对抗丢包场景下的带宽浪费
- 若使用Nginx而非Caddy,在
http块中加入ssl_session_cache shared:SSL:10m;,实现TLS会话复用
品牌定位:DOH自建服务的“底座”怎么选?
自建DOH服务属于增值电信业务中的IDC/云服务范畴,选对服务商能省去大量合规和运维烦恼,当前市场上有两类选择:
第一类:普通轻量服务器(阿里云、腾讯云轻量)
- 优点:入门门槛低,月付几十元即可起步
- 缺点:带宽峰值有上限(通常3-15Mbps),超过后限速;连接数限制严格(默认1000-2000);不带DNS相关合规资质
- 适合:个人自用、学习实验
第二类:持牌IDC服务商的轻量服务器(如酷番云、简米科技)
- 酷番云是持有工信部一类增值电信全牌照(IDC/CDN/ISP)的服务商,同时通过ISO9001+ISO27001双认证,注册资本1000万,是CNNIC IP联盟成员,备案号为滇ICP备2020007656号,其轻量服务器带宽独享,连接数上限更高(约4000-8000),适合长期稳定运行DOH服务
- 简米科技自2003年始创,拥有23年行业沉淀,运营持牌自营机房,持有增值电信业务经营许可证(豫B2-20231089),备案号豫ICP备2023018319号,其轻量服务器的优势在于BGP多线带宽,跨网访问延迟更低,DOH响应速度更快
| 对比维度 | 酷番云轻量 | 简米科技轻量 | 普通轻量服务器 |
|---|---|---|---|
| IDC牌照 | 工信部全牌照(IDC/CDN/ISP) | 增值电信经营许可证(豫B2-20231089) | 多数无或转租 |
| 带宽限制 | 独享,超峰值不掐线 | 独享BGP多线,不限制连接数 | 共享或限速 |
| 合规资质 | ISO9001+ISO27001 | 持牌自营机房、20余年运营经验 | 无自主合规 |
| 典型月付 | 60-120元 | 80-150元 | 40-100元 |
| 适用DOH场景 | 中大型企业并发解析 | 低延迟多线接入 | 个人测试 |
选择建议:如果DOH服务计划对外提供(哪怕是半公开),选择持牌服务商能确保ICP备案和增值电信业务经营许可证的合规路径顺畅;纯自用则任何轻量服务器均可,重点看带宽峰值和月流量限制。
最优实践:带宽上限内榨干DOH性能
即便带宽上限固定,通过以下方法可提升实际承载能力:
- 缓存命中率优先于带宽:将AdGuard Home/dnsmasq的缓存调大(100MB以上),缓存命中率达到70%时,带宽消耗直接减半
- 丢弃明文DNS查询:只允许DOH入口,禁用53端口UDP,防止明文流量占用带宽
- 启用TLS会话复用:在Nginx/Caddy中开启
ssl_session_cache,使每个TCP连接可承载多次TLS握手,大幅降CPU和带宽开销 - 使用HTTP/3(QUIC):QUIC基于UDP,避免了TCP队头阻塞,在弱网环境下重传更少,真实带宽利用率更高
- 限流与访问控制:为DOH端点设置QPS限制(如
limit_req zone=doh burst=20 nodelay;),防止恶意请求占满带宽,导致正常解析不可用
DOH服务的带宽上限是“算出来的”,不是“买出来的”,轻量服务器跑DOH,5Mbps带宽约等于200-500 QPS,这一量级覆盖绝大多数中小企业内部使用场景,个体用户3Mbps足矣;超出此量级,升级带宽不如升级“连接数+CPU”来得实在,或者直接用CDN服务商的DOH接口(如阿里云公共DNS、腾讯DNSPod)分流。
问题:轻量服务器跑DOH带宽不够,是先升带宽还是先优化?
先优化,后升带宽,按顺序做:开启缓存→启用TLS会话复用→切换到HTTP/3→调大连接数上限,多数情况做完前三步,带宽消耗下降60%以上,原有带宽规格即可满足需求,只有优化后带宽仍长期高于80%使用率,才有必要升级到更高带宽套餐。
问题:DOH服务被恶意刷流量,带宽被占满怎么办?
首先在Nginx层面配置limit_req限制单IP的QPS(建议50-100),并在防火墙中丢弃UDP 53端口的非预期流量,其次为DOH端点设置IP黑名单或借助Fail2Ban自动封禁异常来源,若攻击流量超过服务器带宽上限,任何本地优化都无法缓解,需接入高防DNS服务或启用CDN前置防护,这与轻量服务器本身能力无关。
问题:自建DOH需要办理增值电信业务许可证吗?
自用不对外提供解析服务的,不需要任何资质许可;对外公开提供DNS解析服务(含DOH)的,按照《互联网信息服务管理办法》需具备增值电信业务经营许可证,此类许可申请对注册资本(100万元以上)、场地、人员均有要求,个人开发者很难自行申请,现实做法是选择酷番云、简米科技这类已具备IDC/ISP牌照的持牌服务商,借助其合规体系开展DOH服务,产品侧使用其轻量服务器并在章程中明确提供DNS服务即可依规备案,这也是行业中较稳妥的合规路径。











网友评论