最近都在跟網路通靈,不免最後又來跟 rp_filter 打交道,因此今天這篇文章來幫大家複習一下 rp_filter 這個系統參數
設定位置: /proc/sys/net/ipv4/conf/$iface/rp_filter
介紹:
rp_filter 全名為 Reverse Path Filtering,是一個 Linux Kernel 用來過濾封包的機制。當封包到達一個網卡時, kernel 會根據該封包的 source IP 去進行反向(Reverse Path)檢查,當系統檢查當前的 routing table 確認該 source IP 是可以轉發的,且轉發出去的網卡與收到的網卡是一致時,封包就可以正確地接收,反之則會丟棄。
目前常見系統上 rp_filter 有三種數值可以設定
0: 請關閉 rp_filter 的功能,請不要對封包的來源進行檢查,一切都收起來。
1: 如前段所述,嚴格的針對 source IP 進行反向查找
2: (1)的不嚴格版本,一樣會對 source IP 進行反向查找,但是反向的網卡不需要與收到的網卡一致,只要確認該封包可以出去即可
大部分的情況下不建議關閉 rp_filter, rp_filter 可以用來驗證 source IP 是否合法,對於抵擋 Spoffing IP 這類型的攻擊可以起到一定的效用。
此外如果有安裝 Calico CNI 的也要注意一下這個設定,因為這種基於 routing 的 CNI 解決方式很容易會因為 rp_fitler 導致功能不正常。
https://www.theurbanpenguin.com/rp_filter-and-lpic-3-linux-security/
Search