Polipo
関連記事
Polipo のサイト より:
- "Polipo は軽量かつ高速なキャッシュウェブプロキシです (ウェブキャッシュ, HTTP プロキシ, プロキシサーバー)。一人または少人数によって使われることを想定して Polipo は設計されていますが、大規模な使用ができないというわけではありません。"
Squid とは異なり、Polipo はとてもリソースの消費量が少なく簡単に設定することができます。シングルユーザーシステムなど、あまり複雑ではないセットアップで使うのに Polipo はうってつけです。ただし、この汎用性には見返りもあるということに注意してください: Polipo はディスクキャッシュが増えていくことについて何も制限を加えないため、際限なくディスク使用量は増加していきます。この欠陥とも言えるものは設計段階から想定されていることで、サニティチェックを省くことで Polipo のメモリ使用量を劇的に減らしてシステム全体の負担を削減しています。ディスクの使用量を制限するために Polipo はユーザーによって実行してディスククォータを使用するのが実践的でしょう。
以下では Polipo のインストールと設定について説明します。
目次
インストール
公式リポジトリの polipo をインストールしてください。
もしくは、AUR から最新の開発版である polipo-gitAUR[リンク切れ: アーカイブ: aur-mirror] をインストールしてください。
デーモンの起動
polipo デーモンを起動するには:
# systemctl start polipo
ブート時に自動的に起動させるには:
# systemctl enable polipo
マルチインスタンス
Polipo はスーパーユーザー権限がなくても実行させることが可能です。その場合、まず /etc/polipo/config.sample
を適当なディレクトリにコピーしてください:
$ cp /etc/polipo/config.sample ~/.poliporc
ファイルを編集して /var/cache/polipo
の代わりに書き込み可能な場所を指定します:
# Uncomment this if you want to put the on-disk cache in a # non-standard location: diskCacheRoot = "~/.polipo-cache/"
キャッシュディレクトリを作成:
$ mkdir ~/.polipo-cache
最後に、新しい設定を使って Polipo を起動してください:
$ polipo -c ~/.poliporc
設定
管理は基本的に /etc/polipo/config
で行います。大抵のユーザーはサンプル設定ファイルを選択することになるでしょう。ほとんどの場合で上手く動作し、ドキュメントも揃っています。
# cd /etc/polipo; cp config.sample config
設定の中で注意する必要があるのは Polipo はデフォルトではポートによって外に向かう接続をブロックすることです。Polipo の設定ファイルには送信ポートの許可を制御する2つの変数があります。デフォルトでは 80-100 と 1024-65535 に設定されています。tunnelAllowedPorts
は HTTPS トラフィックだけでなく Polipo がトラフィックのトンネルを許可するポートを指定します。デフォルトではかなり制限されています: "デフォルトで ssh, HTTP, https, rsync, IMAP, imaps, POP, pops, Jabber, CVS, Git のトラフィックを許可します。"
host:port を開こうとすると Polipo によって "403 Forbidden Port" エラーメッセージが表示される場合、HTTP または HTTPS を使うためにより多くのポートのトラフィックを許可するように Polipo を設定する必要があります。幅広いポートを開くように設定するには、以下を /etc/polipo/config
に追加してください:
allowedPorts = 1-65535 tunnelAllowedPorts = 1-65535
他のプロキシと違って、Polipo は設定を変更した後に再起動する必要があります。
ブラウザ
プロキシに localhost:8123
を使うようにブラウザを設定してください。ブラウザのディスクキャッシュを無効化することで無駄な IO 操作をなくしてパフォーマンスの低下を防げます。localhost:8123
が機能しない場合、hostname.localdomain:8123
のように /etc/hosts
に合わせてみてください。
トンネリング
ブラウザや他のユーティリティを個別に設定して Polipo のキャッシュを使うようにする代わりに、iptables を使ってトラフィックが Polipo を通るようにすることも可能です。
iptables をインストールして、適当なルールを /etc/iptables/iptables.rules
に追加します:
*nat :PREROUTING ACCEPT [0:0] :POSTROUTING ACCEPT [0:0] :OUTPUT ACCEPT [0:0] -A OUTPUT -p tcp --dport 80 -m owner ! --uid-owner polipo -j ACCEPT -A OUTPUT -p tcp --dport 80 -j REDIRECT --to-ports 8123 COMMIT
上記の設定で HTTP のトラフィックが Polipo を通るようになります。ブラウザのプロキシ設定を全て削除して、iptables を再起動してください。
Privoxy
Privoxy は広告などの表示したくないものを取り除くのに使われるプロキシです。
Polipo の開発者によれば、Privoxy のプライバシーを向上させ Polipo のパフォーマンスを引き出すために、Privoxy の上に Polipo を置くのが推奨されます。
つまり:
- ブラウザは Privoxy を使うように設定:
localhost:8118
- Privoxy はトラフィックを Polipo に渡すように設定: Privoxy の設定ファイルで
forward / localhost:8123
と設定してください。
Tor
Tor は匿名化プロキシネットワークです。
Polipo と Tor を一緒に使うには、/etc/polipo/config
に以下の部分をアンコメントまたは記述する必要があります:
socksParentProxy = localhost:9050 socksProxyType = socks5
DansGuardian
DansGuardian はウェブコンテンツフィルタです。Polipo で DansGuardian を使用するには dansguardian.conf
の proxyport を polipo の 8123 に設定する必要があります:
# the port DansGuardian connects to proxy on proxyport = 8123
トラブルシューティング
DNS エラー
ネットワークをバックグラウンドで実行している場合、Polipo のログに以下のようなエラーが残ることがあります:
Couldn't send DNS query: Connection refused Falling back on gethostbyname. Getaddrinfo failed: Temporary name server failure Host ***.com lookup failed: Getaddrinfo failed: Temporary name server failure (131072).
このエラーは、Polipo が DNS サーバーに接続する前に、バックグラウンドモードでネットワークが初期化されていないのが原因です (特に DHCP を使う場合)。以下の3つの方法でこのエラーは解決できます:
- バックグラウンドモードでネットプロファイルを起動しない (不要である場合があります)。
- 使用する DNS サーバーに
dnsNameServer
を手動で設定。 - Polipo のデーモンスクリプト
/etc/rc.d/polipo
の start セクションの冒頭付近にsleep 10
(必要であれば、さらに数字を増やす) を追加。ネットワークが初期化された後に Polipo が起動するようになります。
詳しくは このスレッド を見て下さい。