是否有一个已经与接收套接字关联的netfilter钩子?

NF_INET_LOCAL_OUT钩子中有skb->sk指向发送数据包的套接字的struct sock。是否为接收数据包的套接字设置了挂钩?在NF_INET_LOCAL_IN挂钩中,skb->sk为空。

我必须使用__inet_lookup_skb()吗?如果是这样,该函数的复杂性是什么?

编辑:__inet_lookup_skb()似乎仅用于TCP,因为没有udp_hashinfo。我最初是针对UDP的。

newke2730 回答:是否有一个已经与接收套接字关联的netfilter钩子?

只是一个很小的补充:
UDP输入路径(与TCP)有所不同:
NF_INET_LOCAL_IN hooks->
-> ip_local_deliver_finish()-> udp_rcv()-> __udp4_lib_rcv()-> __udp4_lib_lookup()

__udp4_lib_lookup()获得特定IP地址和端口的struct sock
当然,在L3的输入路径上(您的Netfilter钩子在哪里),仍然没有套接字查找(因此也没有套接字)。这是传输层的工作,它取决于特定的协议。

是的,在这种情况下,可以使用LSM挂钩进行救援。另外,根据您的需要,您可以开发适当的内核补丁。

,

似乎没有,但是对于我来说,LSM钩子socket_recvmsg是合适的。它获得指向struct sock的指针,该指针指向接收队列中的struct sk_buff

本文链接:https://www.f2er.com/2973260.html

大家都在问