❶ 安卓手機 有沒有不需要ROOT的 網路防火牆啊
沒有,這類安全軟體,本身就是需要Root了以後才能使用的,沒有許可權,掃描、攔截等功能用不了,標榜再彪悍的安全軟體也是個廢物。
❷ 淺談iptables
iptables是linux系統下用來做防火牆的二進制文件(linux上位於/sbin/iptables,android中位於/system/bin/iptables),底層依賴於內核的netfilter模塊,用來完成封包過濾、封包重定向和網路地址轉換(NAT)等功能(在android上需要root使用)。
舉個例子來簡單看看iptables命令的基本用法。
意思是在nat轉發表的OUTPUT輸出鏈中增加這樣一條規則:倘若OUTPUT輸出鏈攔到了tcp請求,則將其重定向到本地的8123埠。
可以看到iptables中有 表 、 鏈 和 規則 的概念,那麼先通過iptables傳輸數據包的過程來簡單了解下表和鏈是什麼以及他們之間的關系。
可以看到 鏈 就是對數據包傳輸路徑的一種抽象,一個數據包根據其具體場景以固定的順序依次經過PREROUTING、INPUT等各個鏈,在經過各個鏈時,又有不同的表在監聽這個鏈,而nat、filter等 表 中有包含一系列的 規則 ,當一個數據包到達一個鏈時,iptables就會從鏈中第一條規則開始檢查,看該數據包是否滿足規則所定義的條件。如果滿足,系統就會根據該條規則所定義的方法處理該數據包;否則iptables將繼續檢查下一條規則。
值得注意的是,
至此我們了解了表、鏈和規則是什麼以及他們之間的關系,下面來具體看下 iptables命令的基本用法 。
更多關於各command、parameter的具體含義以及用法可以參考 https://wangchujiang.com/linux-command/c/iptables.html
iptables對網路數據包做過濾或攔截時其維度只能局限於網路數據包收發的ip地址、埠號、網卡、tcp/udp協議,因此可以推測iptables最終是在ip層對網路數據包做的攔截。
那iptables基於netfilter具體是怎麼做到在各個鏈上對數據包做攔截的呢?
/net/ipv4/ip_output.c
/net/ipv4/ip_input.c
/net/ipv4/ip_forward.c
可以看到內核在每一個數據轉發的關鍵節點都調用了NF_HOOK這個宏,來看下NF_HOOK這個宏幹了啥
關於NF_HOOK相關具體邏輯可參見 https://sites.google.com/site/ibms/network-security-development/netfilter%E8%AE%BE%E8%AE%A1%E4%B8%8E%E6%BA%90%E7%A0%81%E5%88%86%E6%9E%90