Android用パケットフィルタ

このページは鎖国フィルタクローラーフィルタの関連記事になります。

この記事の国別ルールファイルは使いものになりません

Androidのファイアウォールであるiptablesは大きなルールファイルを読めません

既に多くの方がご存知の通り、支那・朝鮮製のアプリケーションで端末のデータや入力した文字を勝手に送信するものが見つかっています。
そもそも支那・朝鮮製のアプリを何も疑いもせずインストールしてしまう時点でどうかとも思うのではあるのだけれど、Baiduに買収されてから壮絶悪質化したSimeji(しめじ)のような例もあるのでどんなアプリを入れるのも油断なりません。

パケットフィルタルールファイル

Androidは基本Linuxなのでパケットフィルタにはiptablesが使えます。
でも下のルールファイルは巨大すぎて使えないので注意。

地域Android用フィルタファイル
特亜(支那,朝鮮) droidwall_china_korea.txt   DroidWall用 (CN,HK,MO,KR,KP)
afwall_china_korea.txt   AFWall+用 (CN,HK,MO,KR,KP)
支那 droidwall_cn.txt   DroidWall用 (CN)
droidwall_china.txt   DroidWall用 (CN,HK,MO)
afwall_cn.txt   AFWall+用 (CN)
afwall_china.txt   AFWall+用 (CN,HK,MO)
南朝鮮 droidwall_kr.txt   DroidWall用
afwall_kr.txt   AFWall+用

CN: 支那の大部分
HK: 香港
MO: 澳門(マカオ)
KR: 南朝鮮
KP: 北朝鮮

フィルタルール解除ファイル

上のパケットフィルタ(ファイアウォール)設定を解除するための設定ファイル


Androidアプリと設定

Android用パケットフィルタ 1
定番ともいえるDroidwall。
巨大なフィルタルールファイルを読み込ませると全く耐えられない。

AFWall+
DroidwallからフォークしたというAndroid Firewall。メニュー配置や色使いが違うことを除けば確かにほぼDroidwallそのまま。IPv6にも対応。DroidWallは長らく更新が停まっているがAFWall+は開発が続いている。

どちらもroot化必須です。

Android用パケットフィルタ 3

設定1: メイン画面。アプリ別に通信の可否を設定できる。チェックしたアプリを通信可とするか通信不可とするかはホワイトリストモードかブラックリストモードの選択によって逆の動作となる。(赤の四角の部分を押下することでホワイトリスト/ブラックリストのモードを切り替える)

Android用パケットフィルタ 4

設定2: (実際にはこの画面ではなくメインメニューで)シールドアイコンを押下することでメニューを表示。「Set custom script」でこのページのフィルタファイルを読み込む設定。読み込んで有効にした後でルールの適用状況を確認するなら「ルール表示」

Android用パケットフィルタ 5

設定3: このページのフィルタルールファイル(いずれか)とフィルタ解除ファイルをAndroid端末にダウンロードして/etcなど(任意)に置く。
上の赤枠の部分がフィルタルールファイルの指定。入力は[ピリオド]+[半角スペース]+{フィルタファイルのフルパス}。
下の赤枠の部分がフィルタ解除ファイルの指定。入力は[ピリオド]+[半角スペース]+{フィルタ解除ファイルのフルパス}。

Android用パケットフィルタ 6

設定4: メインメニューからメニューアイコンを押下することでメニューを開く。ルールを適用した後に「Firewall有効」でフィルタルールが有効になる・・・・

Android用パケットフィルタ 7

設定5: 巨大なフィルタルールを有効にしようとするとアプリがフリーズしたような状態となり1〜2分後に上の画面が出る。Droidwallではエラー画面が出る場合もある。念の為、1,2回は「待機」を選択し、最終的にはおそらく「OK」でアプリ終了を選択せざるを得ない。

なお、大きなルールファイルの読み込みには時間がかかる上に途中までしか読み込まずにアプリが落ちます。

ただし、アプリが落ちてもiptables自体は動いているので読み込んだところまでのフィルタは有効になっている。

残念ながら2014年6月現在ではroot化必須な上にフィルタ設定用アプリが停まったり落ちたり設定ファイルを途中までしか読み込まないなど、まともに使える状況ではありません。これはDroidWallやAfWall+が悪いわけではなくてiptablesのせい。
iptablesはルールを1行読む度にゴチョゴチョやるので読み込みが遅い上にルールを読み込める量が少ない。読み込みだけでなく動作時のパフォーマンスも悪くなる。せめてAndroidのカーネルにNetfilter(Queue)系のモジュールが組み込んであってiptables-restoreとかipsetが使えれば劇的に状況が変わるのでしょうが。
つくづくAndroidにはiptablesよりpfの方が良かったのではないかと思ったり。

2016年6月3日追記:
ipsetがAndroidでも使えたら巨大なIPアドレスリストをipsetで読んでiptablesに渡すという方法が使えるのだが、Androidでipsetが使えないのでこの記事は未だに「使い物にならない」状態のまま。
なお、使い物にならないのにIPアドレスリストは毎日自動更新されるようにした。(無駄な努力)

2016年6月27日追記:
鎖国フィルタ(Contry Filter)」で採用したCIDRマージをAndroid用フィルタにも取り入れた。これによりフィルタリストが3割程度小さくなった。支那について従来のCN単独に追加して香港・マカオを含む版を用意した。