在我的 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 守护进程(配置示例)而且效率也很高。