我如何确定我的 CentOS 机器上的哪个特定进程/服务正在生成过多的 DNS 查询?

我如何确定我的 CentOS 机器上的哪个特定进程/服务正在生成过多的 DNS 查询?

CentOS 5.x

我的一台 CentOS 服务器生成了过多的 DNS 查询(我的 DNS 管理员注意到了这一点)。遗憾的是,从服务日志中无法确定服务器上的哪个进程导致了此问题。

我原本以为只需查看查询本身即可找到线索,但它们是针对热门 IP 的反向 DNS 查询——因此我无法根据搜索条件轻松识别查询的来源。

是否有一个命令或方法可以用来确定哪个进程/服务正在发出查询?

答案1

通过记录传出 DNS 查询的用户 ID 来帮助iptables您缩小范围。

iptables -I OUTPUT -m tcp -p tcp --dport 53 -m state --state NEW -j LOG --log-prefix "DNS traffic: " --log-uid
iptables -I OUTPUT -m udp -p udp --dport 53 -m state --state NEW -j LOG --log-prefix "DNS traffic: " --log-uid

这是您能做的最好的事情了iptables,但了解发起流量的 uid 可能有助于缩小其来源范围。

答案2

iptables -I OUTPUT -p UDP --dport 53 -m 字符串 --algo bm --string foobar.su -j LOG --log-uid --log-prefix FOOBAR_MATCH

journalctl -t 内核 -f | perl -ne'/FOOBAR_MATCH/&&/SPT=(\d+)/&&系统("lsof -i udp:$1")'

相关内容