Inotify

使用 inotify 辨識 TCP 套接字何時打開

  • February 22, 2019

正如標題所暗示的,有沒有一種方法可以使用 inotify/inotify-tools 通知最近打開的套接字?據我所知,inotify 僅適用於 inode,並且專門測試這些 inode 是否是套接字並不是 inotify 實際上能夠做到的。除此之外,我似乎無法找到套接字 FD 的儲存位置。我只能看到他們的文件描述符是符號連結:

# ls -l /proc/29711/fd/10 
lrwx------ 1 root root 64 Mar  6 17:04 /proc/29711/fd/10 -> socket:[750728]

# stat /proc/29711/fd/10
 File: `/proc/29711/fd/10' -> `socket:[750728]'
 Size: 64              Blocks: 0          IO Block: 1024   symbolic link
Device: 3h/3d   Inode: 759700      Links: 1
Access: (0700/lrwx------)  Uid: ( 0/    root)   Gid: ( 0/    root)
Access: 2013-03-06 17:05:22.690411801 +1100
Modify: 2013-03-06 17:04:14.062414880 +1100
Change: 2013-03-06 17:04:14.062414880 +1100
Birth: -

Inotify 用於文件系統事件監視,因此除非有代表系統套接字的特殊 FS — 沒辦法。

我建議查看netlinkNETLINK_INET_DIAG尤其是它,但我無法確定它是否有相應的設施。

**更新:**我已經分享了這個問題答案,並且 Pavel Emelyanov(CRIU的主要開發人員)證實了我的懷疑——您很可能無法通過netlink.

更新:您可以使用conntrack-tools跟踪這些事件。

引用自:https://serverfault.com/questions/485421