持续监控 ip_conntrack,以便监控 NAT 路由器上的浏览情况

持续监控 ip_conntrack,以便监控 NAT 路由器上的浏览情况

因此,我有一台服务器,它也为我的 LAN 执行 NAT(伪装),并将所有互联网流量转发到网关。

我需要知道我的局域网中谁在访问哪些网站。我不想走整个 SQUID 代理路线。

我(非常惊讶?)找不到任何可以轻松做到这一点的软件。

据我所知,/proc/net/ip_conntrack 应该包含我需要的所有信息,因为我的所有 LAN 连接都经过 NAT。

所以我编写了一个小脚本,只需 DNS 解析 ip_conntrack 中的所有条目并记录它们。

我的计划是简单地执行“tail -f /proc/net/ip_conntrack |my_script.pl”,然后完成它,但是 tail-f 似乎对该文件不起作用?它转储出很多行,然后停止。

我如何才能实时获取服务器上所有经过 NAT 的新连接?我是否错过了一款现成的软件,它能告诉我 LAN 上的谁正在通过此 NAT 与互联网上的哪个服务器通信?

答案1

/proc/net/ip_conntrack不是一个tail -f可以工作的日志文件。它更像是一个在查询时返回内存当前状态的 API。

为了获得相同的结果,您可能可以添加 netfilter(iptables) 规则来记录您需要了解的流量。然后只需跟踪那些特定内核消息所指向的 syslog 文件即可。

虽然在我看来这或多或少是没有意义的,因为所用 IP 的反向 DNS 无法可靠地告诉您人们将要做什么。现在互联网的很大一部分都在 CDN 或 Amazon/Azure/Google/等云服务上。任何大型网站的反向 DNS 可能只会告诉您,您访问的大量内容都托管在众多云服务之一上。

答案2

还有一个很好的 netstat-nat显示由 netfilter/iptables 管理的 NAT 连接的工具。该程序从/proc/net/ip_conntrack或读取其信息/proc/net/nf_conntrack,这是 netfilter 的临时 conntrack 存储。

您只需要负责记录其输出并对其进行监控。

答案3

虽然我还没有亲自这样做过,但应该可以使用NFTC(netfilter conntrack)插件ulogd2.xLinux netfilter 项目的包来执行此操作。

有一份详尽的指南这里

ulogd 2.x 在 Debian 及其衍生版本中以软件包形式打包ulogd2

相关内容