Polipo

提供: ArchWiki
移動先: 案内検索

関連記事

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 FAQ の "intercepting proxy" には、トンネリングは不可能でサポートされていないと書かれています。
  • トンネリングを使うには Polipo を特別なユーザーで実行する必要があります。

ブラウザや他のユーティリティを個別に設定して 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 プロジェクトは Tor でトラフィックの透過的なルーティングはしないことを推奨しており [1] [2]、Tor Browser だけを使うことが強く推奨されています [3]。代わりに Isolating Proxy を使うことを考慮してください。

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 が起動するようになります。

詳しくは このスレッド を見て下さい。

参照