Squid で広告避け
はじめに
手元で squid を上げています.
最初は職場, 居室, モバイル等でネットワーク環境が変わる際に いちいちプロキシの設定を変えるとかやってられん, ということで
- 手元で透過 proxy を立ち上げる
- アプリケーションは常に proxy として localhost を見に行くようにする
- ネットワーク接続の切り替え時に 上流の proxy を切り替える
という目的で squid を上げていました.
単に切り替えるだけなら tinyproxy でも良いんでしょうけど試した感じでは memory leak が酷くて使いモンにならなくて
それに加えて
- そういえば squid って hosts ファイル読めたよね
ということで, これは広告避けにつかえるな, ということに.
Web 広告については, まあ, いろんな意見があって良いと思います. サービスの収益化は必要でしょうし, 邪魔にならない広告ならまあ良いんですけれど…
- Flash とか mp4 で動画バリバリ
- 閲覧中にポップアップ→誤クリック
とか, そういう奴が多すぎます.
最近は https で繋がってくる事も多いので, 手元で rebuild して SSL-Bump するようにしました.
squid を SSL Bump できる様にビルドする
SSL Bumpについては Features/SslBump - Squid Web Proxy Wiki を参照のこと. 要はsquidが MTM して, SSL/TLS を処理する.
Debianの squid は SSL Bump が有効になっていないので, 野良ビルドする必要がある.
野良ビルド用の環境構築
真面目なビルド環境の構築については パッケージ作成環境: sbuild, lintian, piuparts, autopkgtest を参照のこと. ただ, 野良ビルドの場合にはここまで頑張る必要も無いので 最低限
% sudo apt-get install devscripts debhelper fakeroot build-essenstial
として, 最低限環境を用意しておく.
squid を SSL Bump を有効にして野良ビルド
ソースの取得は
% apt-get source squid
依存パッケージの取得は
% sudo apt-get build-dep squid
巷に溢れる記事では,
build 時の依存パッケージを全部並べていたりするのだけれど
apt-get build-dep
は知っておいて損は無い.
ビルド時の修正点は以下
-
debian/rules
: configure で ssl bump を有効に -
debian/control
: 今後のために build-depends に libssl-dev を追加 -
debian/changelog
: NMU(Non Maintainer Upload) を指定% dch --nmu
-
ビルド
% debuild -rfakeroot -uc -us -tc
あとは出来上がった deb ファイルをインストールする. この時点で起動するかどうかは確認しておこう.
広告避けの host ファイル
以下のスクリプトで適当に生成
リストを保守して下さっている皆様に感謝.
/etc/squid/squid.conf
起動する前に security_file_certgen
のファイル置き場を作成しておくと良い.
% sudo -u proxy /usr/lib/squid/security_file_certgen \ -s /var/spool/squid/ssl_db -M 4B
現在の設定ファイルは以下の通り
- キャッシュはしない(した方が良いのかな…?)
- 本気で匿名化したいわけでも無いので, ヘッダの処理は適当
- 20080 番で動作
といった所. SSL-Bump(MTM)用の証明書は適宜作成しておく.