2017-02-23 235 views
0

要阻止一些URL,使用netfilterNF_INET_LOCAL_OUT鏈,當我爲某些數據包返回NF_DROP時,我得到了多個數據包用於同一請求。我想停止後續數據包,以避免不必要的阻止相同URL的過程。如何在使用netfilter返回NF_DROP後停止後續數據包?

有沒有像NF_DROP任何價值,我可以返回阻止這一進程,使請求者 - 即Web瀏覽器在我的情況 - 顯示一些錯誤頁面,而不是重複相同的URL請求的?

我可以在數據包中替換請求的URL,然後返回NF_ACCEPT,這樣請求者將獲得一個頁面並停止請求嗎?

回答

0

客戶端(在你的情況 - 瀏覽器)不知道他爲什麼發送不被服務器接受。客戶希望得到一個答案,但事實並非如此。所以他繼續重新發送請求。 您應該向客戶端發送重置數據包(使用服務器的IP地址)以停止請求。 用於顯示錯誤頁面更復雜,但可能。

+0

謝謝。我通過將數據包從內核空間排隊到'netfilter'的用戶空間來解決這個問題,然後在處理完成後向客戶端發送錯誤的html頁面。 –

+0

這很好,但可以竊取數據包,重寫IP地址和端口,提高RST標誌,修復IP和TCP的校驗和並返回NF_ACCEPT。 –