我的网络接口发生了无法解释的更改。有些东西正在删除我手动附加的 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
套接字。
原来
pid
在 netlink 消息中ip monitor
读取,虽然记录为“端口 ID”实际上是进程 ID。手动处理会有一些垃圾,但是如果这样做,可以看到 pid:
strace -erecvmsg ip monitor dev eth0 > /dev/null
对于将来想要为此制作专用工具的人,我首先建议将显示 PID 添加到现有
ip
工具中。如果没有,请从阅读netlink(7)
和rtnetlink(7)
手册页开始。