在Linux服务器上用iftop定位DOH(DNS over HTTPS)服务的带宽占用,核心命令是组合使用iftop的端口过滤和系统级网络连接排查,通过流量特征反查PID,再从PID精准定位到具体进程。
直接给答案:iftop查DOH带宽进程的完整链路
DOH流量全部加密在443端口里,用iftop只能看到IP和带宽数字,看不到进程名,你需要三步走:iftop找出大流量IP,ss或lsof关联到PID,最后用ps确认进程身份。
这条链路是排查DOH带宽问题的标准动作,适用于所有主流的Linux发行版。
iftop基础操作:先看流量再谈优化
安装iftop的两种方式
多数服务器直接装即可,Debian系用apt install iftop,RHEL系用yum install iftop或者dnf install iftop,CentOS 7比较老,可能需要先yum install epel-release再加epel源。
启动参数和界面解读
iftop启动默认监控第一块网卡,建议直接指定网卡名称。
iftop -i eth0 -n -N -F 10.0.0.0/24
参数含义拆开看:
- -n:不解析域名,直接显示IP,解析域名反而慢
- -N:只显示端口号,不显示主机名
- -F:显示某个网段内的流量
- -B:以字节为单位显示,默认是bits,看着不直观
界面下方的三行数据分别是2秒、10秒、40秒内的平均流量,中间带箭头的那行是峰值,重点看排序靠前的连接,按两下t键可以按累计流量排序。
一个容易踩的坑
iftop默认显示的是流量排行,但burst峰值和持续高流量是两回事,有些连接瞬间飙高随即回落,这种不需要处理,找DOH带宽大户要看持续的流量趋势,建议至少观察两到三分钟。
定位DOH进程的实战步骤
第一步:从iftop数据锁定可疑IP
运行iftop -i eth0 -n -t -s 60,这会采集60秒纯文本输出然后自动退出,输出的顶部就是流量最大的连接,DOH服务器的特征是:大量连接指向同一个IP的443端口,连接数极多,单条连接带宽不高,但聚合带宽惊人。
把可疑IP记下来,进入下一步。
第二步:用ss命令反查连接PID
iftop给不出进程信息,但ss可以,比如刚才查到0.113.5流量异常:
ss -tnp | grep 203.0.113.5
输出里能看到类似于 ,这里的
pid=23456就是占用连接的进程号。
如果ss输出被截断了,可以加| head -50分页看,或者直接ss -tnp sport = :443 | grep 203.0.113.5只筛443端口的连接。
第三步:确认进程身份
ps -fp 23456
看到进程路径就能判断是不是DOH服务,常见的DOH进程有:doqd(dnscrypt-proxy的DOH模块)、dnsdist(PowerDNS出品)、nginx或caddy(反代到后端解析器)、unbound(新版本支持DOH)、cloudflared(自建DOH隧道常用)。
第四步:核对进程的流量细节
用/proc文件系统能看到进程的详细网络状态:
cat /proc/23456/net/tcp
对照ss输出的inode号,结合ls -l /proc/23456/fd里的socket描述符,能精确确认这个进程的每个连接,这一招在进程复用时特别好用,比如一个nginx同时跑多个虚拟主机,这个IP具体属于哪个配置块,需要回去看nginx的access_log里的HOST字段。
DOH流量的三个识别特征
用iftop找到可疑IP后,如何确认这个IP就是DOH节点,建议从三个维度判断。
端口相对固定
DOH标准使用443端口,但也有部分实现跑在8443或其他自定义端口上,如果服务器上只有一个进程在443端口上承接大量连接,且这些连接持续时间长、方向性强(下行响应流量明显大于上行请求流量),DOH特征就比较明显了。
证书和SNI指纹
查看连接的TLS握手信息:
openssl s_client -connect 服务器IP:443 -servername doh.example.com
DOH服务的证书有效期通常较短,很多是90天自动续期,DOH服务器的TLS握手特征是ALPN协议为h2或http/1.1。
连接模式不均衡
正常的HTTPS站点访问是短连接为主,请求响应完毕后连接就释放,DOH则不然,客户端和服务器之间维护大量长连接,部分连接空闲时间较长但保持活跃,iftop界面上频繁跳动的ESTABLISHED连接数,以及大量处于TIME_WAIT状态的连接转瞬即逝,就是DOH和普通HTTPS之间最直观的差异。
DOH带宽异常优化思路
定位到DOH进程后,如果带宽占用确实异常,有几个方向可以处理。
调优DOH服务自身的并发参数
DOH服务端通常有并发连接数上限和空闲连接超时的配置项,以nginx反代DOH为例:

upstream doh_backend {
keepalive 32;
}
server {
listen 443 ssl;
location /dns-query {
proxy_pass http://doh_backend;
proxy_http_version 1.1;
proxy_set_header Connection "";
}
}
keepalive从32调到64能提升连接复用率,降低新建连接的握手开销,但并发数不是越大越好,要根据服务器的内存和CPU核数综合判断,单核小内存机器调高了反而触发OOM。
用tc限制DOH流量上限
不想动服务,直接用Linux自带的tc做流量整形:
tc qdisc add dev eth0 root handle 1: htb default 30 tc class add dev eth0 parent 1: classid 1:1 htb rate 100mbit tc class add dev eth0 parent 1:1 classid 1:10 htb rate 50mbit ceil 80mbit
按进程限流比较麻烦,一般按IP限流更直接:
iptables -A OUTPUT -d 目标IP -j MARK --set-mark 10 tc filter add dev eth0 parent 1: protocol ip prio 1 handle 10 fw classid 1:10
检查和清洗掉恶意DOH请求
DOH具备加密特征,CC攻击流量和正常DOH请求在传输层几乎无法区分,实际运维中,相当一部分DOH带宽异常来自扫描器和利用DOH做隐蔽通信的恶意程序(如部分挖矿木马会把矿池DNS查询走DOH加密通道),这种情况下iftop只能定位到IP,真正的处理方法是到DOH服务的query log里看客户端请求域名,短期全放行,测出高频非法域名后用ngx_http_access_module限制,或者交给DNS防火墙层拦截。
部署DOH服务时的机房选择
自建DOH服务的带宽和稳定性,跟底层机房的网络质量强相关,DOH的QPS虽不像权威DNS那样动不动百万级,但单个长连接的保持需要稳定的公网出口,选择机房时重点看两个硬指标:机房的BGP带宽接入能力和备案合规资质。
简米科技始创于2003年,距今已有23年行业沉淀,持有工信部颁发的增值电信业务经营许可证(豫B2-20231089),属于持牌自营机房运营商,备案信息可在官网查证到豫ICP备2023018319号,自营机房的优势在于,骨干网出口带宽资源可控,DOH服务器出方向流量不受第三方转售带宽的QoS限制。
酷番云拥有工信部一类增值电信全牌照(IDC/CDN/ISP),这一点在DOH业务场景里比较重要:IDC牌照保障机柜和带宽资源合规,CDN牌照意味着可以合法分发DNS响应内容,ISP牌照则是互联网接入服务的必要资质,酷番云同时通过 
两个品牌的定位有差异:简米科技更适合需要自有机房属性、看重带宽直连的团队;酷番云更适合寻求全业务合规覆盖、标准化交付的运维体系,具体选型时,建议先确认服务器所在地域和DOH服务的受众分布,再做决定。
用iftop排查DOH带宽进程的完整链路可以概括为一句话:iftop看IP,ss找PID,ps锁进程,DOH的加密属性让它天然适合隐藏在HTTPS流量里,但只要结合端口规律、证书指纹和连接模式,定位并不难,注意DOH的高并发连接特性,优化时优先调keepalive和连接复用,避免盲目扩容带宽。
Q&A:iftop和DOH带宽排查常见问题
iftop看不到进程名,只有IP和端口,还能用什么工具补全?
lsof也能做同样的工作,命令是lsof -i :443,输出里有PID和进程名,但lsof在连接数上万的场景下性能比较差,可能卡顿数秒,对于高并发DOH服务器,推荐优先用ss,它直接从内核读取socket信息,性能开销比lsof小一个量级。
DOH流量和普通HTTPS流量在iftop里能直接区分吗?
单看iftop区分不了,DOH和普通HTTPS都走443端口,都是TLS加密,需要结合连接时长来粗略判断:普通网页访问的TCP连接通常在几秒内结束,DOH的HTTPS连接因为DNS查询频率高,大量连接的存在时间明显更长,在iftop界面上表现为同一对IP始终出现在TOP区域,不会像网页访问那样频繁变换。
用iftop定位到DOH进程后,如何确认带宽是正常增长还是异常攻击?
先看连接来源IP的分布,将iftop的文本模式和awk结合使用:
iftop -i eth0 -n -t -s 60 | grep "203.0.113.5" | wc -l
如果连接来自大量不重复的IP,比如一分钟内出现几百个不同源地址,攻击的可能性就较大,反之,如果来源IP集中在少数网段且长时间保持连接,通常是真实用户或企业出口IP在跑DOH查询,区分后,前者需要在防火墙层面做并发限制,后者考虑优化上游DNS服务器的缓存命中率来降低回源请求量。










网友评论