目前,我有一个应用程序/service/widget/plugin/cronjob之类的,定期访问互联网。我可以深入到我的具体问题的细节,但我宁愿有一个答案,这将允许我发现它,我自己,并在过程中了解更多关于Ubuntu。
目前,我正在使用dnstop来显示在我的网络上发出的所有DNS请求。目前,出于参数的考虑,有一个请求以15分钟的周期发送到weather.noaa.gov。虽然我已经检查了我的进程,但什么也没有发现,这可能是一个天气大问题,而且请求正在从我的计算机上启动。
那么问题是,如何确定访问weather.noaa.gov的进程是什么?
我不想通过关闭每个服务/插件/应用程序来解决这个问题。我想找到一种方法来确定哪个进程正在发出DNS请求。
如果我有一个像样的“应用程序防火墙”,请求就永远不会被提出。但这是一个“马已经螺栓”的情况,并希望找到“流氓”的进程,是作出那个DNS请求。
发布于 2013-03-27 10:04:59
如果您不介意无限循环运行一段时间,您可以连续运行netstat,并过滤程序连接到的计算机的IP地址的输出。我建议使用IP地址而不是域名,因为它更快,减少了每个netstat调用所需的时间,从而增加了实际捕获进程的机会。如果您认为进程不属于当前登录的用户,则应该将netstat命令作为root运行。因此,首先使用nslookup来显示域的IP:
nslookup weather.noaa.gov对我来说,这给了我193.170.140.70和193.170.140.80。现在,您可以设置一个无限循环的netstats。可以使用grep进行筛选的输出(并丢弃STDERR)。
while [ true ] ; do netstat -tunp 2>/dev/null | grep -e 193.170.140.70 -e 193.170.140.80 ; done当然,在上面的示例中编辑IP地址。此示例探索TCP和UDP (-tu)连接,不执行DNS解析(-n),并列出进程(-p)。如果您认为有足够的时间进行DNS解析,只需省略netstat的-n选项,并将grep的域放在而不是IP上。只需按CTRL+c,就可以停止无限循环。
希望这能帮上忙,安德烈亚斯
PS:我知道,这并不是理想的、高效的或干净的方法,但是一次搜索就足够了。
发布于 2013-04-02 23:01:32
您还可以通过/etc/host添加连接到的FQDN来“破坏”应用程序。给它一些不可路由的IP,比如10.1.2.3 (或127.0.0.1),看看什么坏了。
https://askubuntu.com/questions/272867
复制相似问题