我的网络接口发生了无法解释的变化。有人删除了我手动附加的 IP 地址。我可以在执行以下操作时看到它ip -d monitor
:
[…]
Deleted local 192.168.111.3 dev eth0 table local proto kernel scope host src 192.168.111.3
[…]
我看到有很多进程带有 netlink 套接字 ( wc -l /proc/net/netlink
)。其中一些是 systemd,所以我怀疑有些进程试图通过“声明”网络接口的所有权来“聪明地”删除其所有设置以设置自己的设置。不管是什么,我都想阻止它这样做,但我需要先找到它。
我怀疑是 systemd,它确实有几个netlink
套接字。
答案1
事实证明,pid
在 Netlink 消息中ip monitor
,虽然记录的意思是“端口 ID”,但实际上是进程 ID。
将会有一些垃圾需要手动处理,但是如果执行以下操作,可以看到 pid:
strace -erecvmsg ip monitor dev eth0 > /dev/null
对于将来想要为此制作专用工具的人,我首先建议在现有ip
工具中添加显示 PID 的功能。如果没有,那么从阅读netlink(7)
手册rtnetlink(7)
页开始。