【问题标题】:Linux: How to get notified of newly created sockets?Linux:如何获得新创建的套接字的通知?
【发布时间】:2014-06-13 09:17:31
【问题描述】:

我正在寻找在用户空间创建新套接字时立即获得通知的方法。我们现有的实现在 /proc/net/tcp 和 /proc/net/udp 上进行轮询读取,但这对于非常短暂的套接字(例如发送数据报并关闭)来说效果不佳。

【问题讨论】:

  • 你真正想要做什么。如果您真的收到每个新套接字的通知,我怀疑您会被淹没在噪音中。 Linux 大量使用套接字...
  • 您是指为特定系列和类型创建套接字对象 (struct socket) 吗?还是您的意思是建立连接?

标签: linux


【解决方案1】:

你可以试试:

  • 审核socketsocketcall 系统调用。如果不使用audit 守护进程,这需要编写一些netlink 代码。如果您想与其他尝试访问审计系统的用户空间共存,则需要 3.15 内核用于其多播网络链接套接字。
  • 编写自定义 linux 安全模块,使用您最喜欢的事件机制来通知用户空间有新的套接字。
  • 递归地使用straceltrace 进行系统调用或库调用跟踪,如果您不介意这些麻烦、竞争性和开销的话。
  • 用填充层替换套接字系统调用。需要编写自己的内核模块。
  • 使用function 跟踪器进行跟踪,并将要跟踪的函数限制为套接字系统调用或其委托的特定类型初始化函数。
  • 探索前面提到的感兴趣的内核函数,并使用您最喜欢的通知用户空间的机制。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-19
    • 1970-01-01
    • 2016-08-05
    相关资源
    最近更新 更多