【发布时间】:2011-02-04 03:55:02
【问题描述】:
如果传入的数据包进来并在本地处理,有没有办法得到 通知该事件?
我目前正在使用 NF_IP_LOCAL_IN 挂钩。但看起来这给出了所有发往该接口的数据包。例如假设 tcp 数据包 X 到达端口 5000,并且有一个套接字在端口 5000 上侦听。我想接收该事件。
澄清一下,我的意思是我只想接收数据包 X 事件。所有其他未在本地处理的数据包(即那些生成 ICMP 目标无法到达的数据包,我不想收到通知)
【问题讨论】:
-
所以你想在端口 5000 上有进程监听时得到通知,如果没有进程监听时不得到通知?这超出了 netfilter 的知识范围。
-
@ninjalj 连接跟踪怎么样。这不是跟踪当前正在播放的侦听套接字吗?
-
@ajpyles:不,根据看到的 TCP 段跟踪推断的 TCP 状态。
-
@ninjalj 好的,谢谢。我需要想出我自己的检查机制,这可能会很昂贵。是否可以复制传入的数据包以进行后期处理? IE。发送 NF_accept 但继续异步处理数据包。
-
@ajpyles:不,我的意思是,这取决于您需要做什么,也许用户空间上的 AF_PACKET 套接字就足够了?
标签: linux linux-kernel netfilter