![连接显示在 tcpdump 中,但无法显示在 auditd 或 ss 中](https://linux22.com/image/739592/%E8%BF%9E%E6%8E%A5%E6%98%BE%E7%A4%BA%E5%9C%A8%20tcpdump%20%E4%B8%AD%EF%BC%8C%E4%BD%86%E6%97%A0%E6%B3%95%E6%98%BE%E7%A4%BA%E5%9C%A8%20auditd%20%E6%88%96%20ss%20%E4%B8%AD.png)
我tcpdump
在一个节点上运行,可以看到在特定端口 (8086) 上有许多到特定主机(我的网络内)的出站 TCP 连接。我想知道哪个进程正在建立这些连接。
我用了:
while true; do ss -ntap '{ dport :8086 }'; sleep 0.1; done
但是,即使 tcpdump 捕获了到该端口的传出请求,我也没有看到任何内容显示。
我尝试使用 auditd 在内核级别捕获它们,因为我认为ss
可能无法捕获这些小的要求。
我使用过:auditctl -A exit,always -F arch=x86_64 -S connect -S sendmsg -S sendto -k send
并用于ausearch -k send -i
寻找这些请求,但同样无济于事。
我想知道为什么与外部主机建立 TCP 连接却没有被 auditd 捕获?
提前致谢!
答案1
原始目标地址和目标端口可以是其他的,但不能是
tcp/8086
,但使用DNAT
iptables 规则nat/OUTPUT
会将其重写为其他地址和其他端口。在tcpdump
捕获中,您可以看到 iptables 转换后的数据包。它可能是内核模块,而不是用户空间应用程序。在这种情况下,我不确定什么
auditd
可以显示任何东西。当数据包在应用程序中构建时,它也可以是原始套接字。我认为在这种情况下,您可以使用
ss --raw
命令列出原始套接字。它可以是其他网络命名空间,而不是主网络命名空间。
此流量可转发,不是本地发起的。在这种情况下
ss
,auditd
不显示任何内容。