ips*_*sec 9 linux networking process
我试图找到一种安全关闭网络接口的方法,即不干扰任何进程。为此,我需要找出当前正在使用该接口的进程。工具喜欢ss
,netstat
或者lsof
是有帮助的显示哪些进程打开插座,但他们不显示wpa_supplicant
,dhcpcd
,hostapd
和其他人。
有没有办法以一般方式检测这些过程?它可能不适用于 dhcpcd,因为它只是一个不时打开套接字的程序,但我假设 wpa_supplicant 和 hostapd 会对该接口“做某事”,该接口可检测到,并且可能还会导致相关的 PID。
War*_*ung 13
此类程序将使用Netlink 套接字直接与网络硬件的驱动程序对话。lsof
4.85 版增加了对 Netlink 套接字的支持,但在我对 CentOS 5.8 的测试中,该功能似乎不太好用。也许这取决于新内核中添加的功能。
但是,当您遇到 Netlink 套接字时,可以很好地猜测。如果您cat /proc/net/netlink
获得打开的 Netlink 套接字列表,包括打开它们的进程的 PID。然后,如果你lsof -p $THEPID
这些的PID,你会发现与项目sock
在TYPE
列,并can't identify protocol
在NAME
列。不能保证这些是 Netlink 套接字,但这是一个不错的选择。
如果给定进程有/sys/class/net/$IFNAME
打开的文件,您还可以推断它直接与接口对话。
现在,说了这么多,我认为你的问题是错误的。
假设有一个我没有发现的命令。调用它lsif -i wlan0
,并说它返回访问指定接口的 PID 列表。你能用它做什么来让你“不打扰”使用该界面的进程,正如你所要求的那样?您是否打算首先使用该界面终止所有进程?这很令人不安。:) 也许您认为从使用它的进程下面删除接口会在某种程度上有害?
到底是什么如此糟糕ifconfig wlan0 down
?
网络接口不是存储设备。您不必将数据刷新到磁盘并优雅地卸载它们。不破坏打开的套接字可能是值得的,但正如您已经知道的,您可以使用netstat
和 来解决这个问题lsof
。wpa_supplicant
如果您毫不客气地弹跳其界面,则不会生闷气。(如果是这样,那就是一个错误,需要修复;它不会表明您的某些错误。)
编写良好的网络程序理所当然地处理这些事情。网络不可靠。如果一个程序无法处理被弹回的接口,它也将无法处理未插入的以太网电缆、笨拙的 DSL 调制解调器或挖掘机。
归档时间: |
|
查看次数: |
16282 次 |
最近记录: |