MacでWifi共有で透過的にmitmproxy

mitmproxyをWifi共有を使って透過的proxyとして使うための手順メモです。 実施環境は下記の通り。

手順

  1. mitmproxyのインストール
  2. 証明書を端末(iPhone/Android)にインストール
  3. Wifi共有の設定
  4. Packet forwardingの設定

1.mitmproxyのインストール

$ pip install mitmproxy

2.証明書を端末(iPhone/Android)にインストール

下記に配置されているのでメールなどを使って端末に送る。 添付ファイルをタップすれば自動的にインストールのためのアプリ選択画面が表示される。

$ ~/.mitmproxy/mitmproxy-ca-cert.pem

f:id:bagpack:20140204225038p:plain

3.Wifi共有の設定

OS X側で、システム環境設定 -> 共有 -> インターネット共有からWifi共有の設定をする。 端末側はここで設定したWifiポイントにつなぐようにする。

4.Packet forwardingの設定

最後にport80/443に流れてくるパケットをmitmproxyにリダイレクトするようにする。 まずは、Wifi共有に使われているインターフェース名を調べる。

$ ifconfig

(たいてい、bridge0というような名前)

Packet forwardingを有効にする

$ sudo sysctl -w net.inet.ip.forwarding=1

Packet forwardingの設定を下記のような感じにする。

$ sudo vi /private/etc/pf.conf
scrub-anchor "com.apple/*"
nat-anchor "com.apple/*"
rdr-anchor "com.apple/*"
rdr pass on bridge0 inet proto tcp from 192.168.2.0/24 to any port http -> 127.0.0.1 port 8080
rdr pass on bridge0 inet proto tcp from 192.168.2.0/24 to any port https -> 127.0.0.1 port 8080
dummynet-anchor "com.apple/*"
anchor "com.apple/*"
load anchor "com.apple" from "/etc/pf.anchors/com.apple"

pfを有効にする。

$ sudo pfctl -f /private/etc/pf.conf
$ sudo pfctl -e

mitmproxyを透過的プロキシモードで起動する。

$ mitmproxy -T --host

おしまい。

 参考

mitmproxy公式