1: 簡(jiǎn)介原理
? Android 的 Settings 其實(shí)自身就帶有后臺(tái)流量控制的功能, 其實(shí)也是通過 Iptables 實(shí)現(xiàn)的。 Github上的一些開源的流量控制軟件例如 aFwall也是通過Iptables實(shí)現(xiàn)的。
? 多次提到Iptables, 簡(jiǎn)單的理解就是防火墻的客戶端。
? Iptables的更新比較快, 文檔更新比較慢, 碰到一些新的屬性, 網(wǎng)上很難找到相應(yīng)的介紹, 推薦看源碼, 源碼上一般都會(huì)有相關(guān)的注釋。 推薦一篇比較新的文章.?
2 : Android的后臺(tái)流量限制
? Android 這個(gè)后臺(tái)流量限制功能做的比較取巧, 例如: 限制了 A 應(yīng)用連接移動(dòng)網(wǎng)絡(luò), Iptables 其實(shí)就插入一條規(guī)則限制 A 的聯(lián)網(wǎng)。 這個(gè)時(shí)候如果A后臺(tái)想要聯(lián)網(wǎng), 則會(huì)無法獲取網(wǎng)絡(luò)。 但是當(dāng)你打開應(yīng)用A的時(shí)候, 這個(gè)時(shí)候其實(shí)系統(tǒng)偷偷的刪除了剛才Iptables插入的規(guī)則, 所以切換到前臺(tái)的時(shí)候, A 又可以聯(lián)網(wǎng)了。 當(dāng)A又切換到后臺(tái), 則再次插入一條限制A聯(lián)網(wǎng)的規(guī)則。
整個(gè)的操作流程是: framework -> netd -> iptables