如果傳入數據包進入並進行本地處理,是否有辦法讓 得知該事件?本地處理的數據包上的netfilter事件(netfilter C內核模塊代碼)
我目前正在使用NF_IP_LOCAL_IN鉤子。但它看起來像是給出了接口的所有數據包。例如,假設tcp數據包X進入端口5000,並且在端口5000上有一個套接字偵聽。我想接收該事件。
爲了澄清,我的意思是我只想接收數據包X事件。所有其他沒有本地處理的數據包(即那些生成ICMP目標無法訪問的數據包,我不想被通知)
如果傳入數據包進入並進行本地處理,是否有辦法讓 得知該事件?本地處理的數據包上的netfilter事件(netfilter C內核模塊代碼)
我目前正在使用NF_IP_LOCAL_IN鉤子。但它看起來像是給出了接口的所有數據包。例如,假設tcp數據包X進入端口5000,並且在端口5000上有一個套接字偵聽。我想接收該事件。
爲了澄清,我的意思是我只想接收數據包X事件。所有其他沒有本地處理的數據包(即那些生成ICMP目標無法訪問的數據包,我不想被通知)
Netfilter生活在L3/L4,所以它只能訪問L4的信息。 OTOH,LSM(Linux安全模塊)幾乎在任何地方都有掛鉤,包括socket_recvmsg
,我認爲它應該只針對您感興趣的數據包。
現在,您是否可以使用這取決於您的情況。您的環境中是否已經運行了LSM?如果答案是肯定的,你是否可以爲LSM制定和實施一項足以滿足你需要的政策?
那麼,接口必須是lo。
或者我不明白爲什麼LOCAL_IN掛鉤不能滿足你。
因此,如果有一個進程在端口5000上偵聽,並且在沒有進程偵聽的情況下沒有通知,那麼您希望得到通知?這超出了netfilter的知識。 – ninjalj 2011-02-03 19:33:57
@ninjalj儘管如何與連接跟蹤。這不是跟蹤當前正在使用的偵聽套接字嗎? – ajpyles 2011-02-03 19:41:31
@ajpyles:不,根據所看到的TCP段跟蹤推斷的TCP狀態。 – ninjalj 2011-02-03 19:43:40