Mitmproxyを設定し、圧縮、データ量削減もする

Mitmproxyは色々な場面で便利なのだが、Mitmproxyを動作させられないマシンの通信内容などを確認する場合に外部の端末で用いられる。

また、Mitmproxyにはこういった使い道もあるようだ。

今回はtailscaleをもちいてMitmproxyを簡単に設定しようと思う。

使ったもの

VPS(512mb1コア程度でよい) OS:debian

やり方

Mitmproxyをインストールする

1
2
3
4
mkdir ~/mitmproxy
cd ~/mitmproxy
wget https://snapshots.mitmproxy.org/8.1.1/mitmproxy-8.1.1-linux.tar.gz
tar xf mitmproxy-8.1.1-linux.tar.gz

tailscaleをインストールする。

1
2
3
4
sudo apt update
sudo apt install -y curl
curl -fsSL https://tailscale.com/install.sh | sh
sudo tailscale up --advertise-exit-node

今回はexit nodeとして使用した際にMitmproxyを通過するようにしたいため、exit nodeとして運用する。

mitmproxyで圧縮プロキシを作る場合でも同様でよい。

exit nodeとして利用する場合には、このコマンドに加えて、ブラウザ上のtailscale管理画面からEdit route settings→Exit nodeとする必要がある。 39b7764b532f99f02ad2fa7e41f27965.png

tailscaleの通信をmitmproxyへ流し込む

1
2
sudo sysctl -w net.ipv4.ip_forward=1
sudo sysctl -w net.ipv6.conf.all.forwarding=1
1
2
3
4
sudo iptables -t nat -A PREROUTING -i tailscale0 -p tcp --dport 80 -j REDIRECT --to-port 8080
sudo iptables -t nat -A PREROUTING -i tailscale0 -p tcp --dport 443 -j REDIRECT --to-port 8080
sudo ip6tables -t nat -A PREROUTING -i tailscale0 -p tcp --dport 80 -j REDIRECT --to-port 8080
sudo ip6tables -t nat -A PREROUTING -i tailscale0 -p tcp --dport 443 -j REDIRECT --to-port 8080

ここまでで完了。mitmproxyを起動させる。

圧縮プロキシとしたい場合には上記記事に従って起動

1
./mitmproxy --mode transparent

これでexit nodeとしてこのVPSを利用した際の通信はすべてMitmproxyを通過することになる。

初回利用時にはどの端末でもhttp://mitm.it/にアクセスし、自分の環境にあった証明書を手に入れる必要がある。

これでMitmも圧縮もなんでもござれである。

通信量減少効果は?

最強だった。現在筆者はtailscaleのDNSとしてpiholeを設定している。これだけで50%カットくらいにはなったが、これに加えて40%近く減少した。

問題点

mitmをしているため安全性に疑問が残る。

もし何らかの形で乗っ取られた場合には通信内容が傍受される可能性がある。

そういう面でもポートはすべて閉じておきたいが、tailscaleを用いればすべてのポートを閉じた状態を維持できるので非常におすすめである。

tailscaleを用いた広告ブロックや通信料削減についてはまとめているので、ぜひそちらも参照されたい。

研究室の一角 - にほんブログ村

Please enable / Bitte aktiviere JavaScript!
Veuillez activer / Por favor activa el Javascript![ ? ]
Licensed under CC BY-NC-SA 4.0
comments powered by Disqus
Hugo で構築されています。
テーマ StackJimmy によって設計されています。
Please enable / Bitte aktiviere JavaScript!
Veuillez activer / Por favor activa el Javascript![ ? ]