Linux 记录所有 tcp 新连接

Linux 记录所有 tcp 新连接

在我的 Linux 主机上,我想获取每分钟创建的所有新 TCP 连接的日志。我的主机上有多个 Tap 设备,各种设备都试图创建 TCP 连接。

我的主机上有 iptable POSTROUTING MASQUERADE 规则。所以我的要求是记录 tcp 连接,以便在特定时间知道哪个 tap 设备的 IP/端口被映射到主机的特定端口以进行该请求。

我得到的一个解决方案:

sudo conntrack -E --event-mask NEW --输出时间戳

但我正在寻找需要最少 CPU/内存和其他资源的东西。

布法罗群岛https://github.com/iovisor/bcc/tree/b181a8e796bc42b53587e7e2f8008ab38a8fef8c有 tcpconnect,但它只针对 eth0 发布,而不针对其他虚拟网络设备

答案1

对 CPU 最友好的方法 - 使用ipt netflow iptables 目标激活 nat 事件。但这并不简单,需要额外的软件(netflow 收集器和 netflow 分析器)。

另一种方式是使用内置 conntrack 支持的 ULOGD2 守护进程(配置示例)而且效率也很高。

相关内容