proxy 認証の通し方まとめ
こんにちは、日野原です。
Google のブラウザ、「Google Chrome」が発表されてダウンロードできるようになりましたが、社内でインストールしようとしてみたところプロキシ認証に対応していないらしく、インストールに失敗してしまいました。プロキシ自体には対応しているようなので、ローカルプロキシを立てて認証を任せてあげればインストールできるようです。
と言うわけで今日はプロキシ認証についてです。
自宅で趣味のプログラミングをしているときなどは良いのですが、会社で何かをしようとするとこれのせいではまることがとっても多いので、同じような悩みを持っている人達のために情報をまとめておこうと思います。
ただし、基本的にLinux(Fedora もしくは CentOS 系)での情報です。また、以下の例では、プロキシの情報は下表のようなものとします。
| ホスト | proxy.example.com |
| ポート | 8080 |
| ユーザ | foo |
| パスワード | bar |
基本編
まず基本として、環境変数 http_proxy にプロキシの URL を指定します。
bash や zsh を使っている場合は .bashrc、.zshrc に以下の行を書いておきます。
export http_proxy=http://foo:bar@proxy.example.com:8080
これで wget、curl や Plagger は OK です。例外設定は NO_PROXY ですね。ただ、wget は NO_PROXY には対応していないようです。
yum 編
/etc/yum.conf 内で proxy を設定します。(次の一行を追加します)
proxy=http://foo:bar@proxy.example.com:8080/
最後の / は、付けないと動かなかったことがあるので付けておきました。現象の再現ができていないため、詳細はわかっていないのですが。
subversion 編
ホームディレクトリ下の ~/.subversion/servers に指定します。
初期状態でこのファイルの最後の [global] セクションにコメントアウトされた状態で設定が書かれているので、それを書き換えます。
http-proxy-exceptions = *.example.com
http-proxy-host = proxy.example.com
http-proxy-port = 8080
http-proxy-username = foo
http-proxy-password = bar
subversion の場合は社内にアクセスすることも多いと思うので、例外設定(http-proxy-exceptions)もしておかないと後悔するでしょう。
rubygems 編
rubygems は環境変数を見てくれるので list 等のコマンドは基本編と同じでいけます。
しかし install など root 権限が必要になるコマンドでは su 後に export して環境変数を設定する必要があります。また、sudo では環境変数を引き継げないので、-p オプションでプロキシの設定を渡します。
sudo gem install rails -p http://foo:bar@proxy.example.com:8080
ただ、1.0より前のバージョンの rubygems ではバグがあって -p オプションが効かないので、rubygems の config_file.rb(私の環境では /usr/lib/ruby/site_ruby/1.8/rubygems/config_file.rb)内にある class Gem::ConfigFile に以下のメソッドを追加する必要があります。
def []=(key, value)
@hash[key] = value
end
ruby/open-uri 編
Rails の script/plugin など、ruby の open-uri を使用しているプログラムはそのままでは環境変数にプロキシを設定しても認証には対応してくれません。(1.8.6.114までではだめでした。)
open-uri.rb(私の環境では /usr/lib/ruby/1.8/open-uri.rb)に以下のパッチを当てる必要があります。
216c216
< klass = Net::HTTP::Proxy(proxy.host, proxy.port)
---
> klass = Net::HTTP::Proxy(proxy.host, proxy.port, proxy.user, proxy.password)
これで、環境変数 http_proxy の設定でいけるようになります。
apache ant 編
最近 ant を使って java のアプリをインストールしたんですが、ivy で必要なライブラリを自動でダウンロードしてくれるところに感動しました。
でもその感動の前にはプロキシ認証の壁が立ちはだかったのです。
と言うわけで環境変数 ANT_OPTS にプロキシの設定を渡しましょう。
export ANT_OPTS="-Dhttp.proxyHost=proxy.example.com \
-Dhttp.proxyPort=8080 \
-Dhttp.proxyUser=foo -Dhttp.proxyPassword=bar"
Amazon Web Services(EC2) 編
ant が JVM に渡すパラメータを独自の環境変数で管理しているということは、同じ java のアプリである EC2 の管理ツールも同じようになっているわけです。
EC2_JVM_ARGS に指定してください。(EC2の場合は https も使うので、https の設定も必要です。)
export EC2_JVM_ARGS="-Dhttp.proxyHost=proxy.example.com \
-Dhttps.proxyHost=proxy.example.com \
-Dhttp.proxyPort=8080 -Dhttps.proxyPort=8080 \
-Dhttp.proxyUser=foo -Dhttp.proxyPass=bar"
Amazon Web Service を試してみたので次は Google App Engine… と行きたいところですが、Python はわからないのでそれはまた次の機会にでも。
【番外?】Google Chrome(Windows版)インストール編【本題?】
最後に、冒頭で触れた Google Chrome のインストールをしましょう。
今回はローカルプロキシに Proxomitron (日本語の情報)を使用しました。
読者層を考えて、ダウンロードからインストールの手順は省略します。
起動したら、まずは右側の下の方にある「Proxy」をクリックして、HTTP Proxies とある欄のコンボボックスにプロキシのサーバ名とポートを「proxy.example.com:8080」というように入力します。
次にパスワードを入力するため、今入力したコンボボックスを右クリックして開くメニューで「Advanced Proxy settings」を選択します。
普通こんな操作、気付きませんよね。隣に座っている同僚が教えてくれました。
ダイアログが開いたら一番下の「Send username and password to proxy」にチェックを入れて、ユーザ名とパスワードを入れます。これでプロキシサーバの設定は終了です。
次にこのサーバを使うようにするため、一番はじめのウインドウで左下にある「Bypass」をクリックし、その上にある「Use Remote Proxy」にチェックを入れます。
これでローカルプロキシの設定は終わりです。
後は Google Chrome のインストーラがこのプロキシを使うように、IE と Firefox のプロキシの設定を localhost:8080 にして、ChromeSetup.exe を起動するだけです。
(IEだけだとインストールが途中で止まってしまう場合もあるようです。)
以上で番外編も終了です。
今回はこんなところで打ち止めですが、またなにかあったら情報を載せていきます。
