認証プロキシ攻略法
認証プロキシとは?
認証プロキシはその名の通りプロキシへの接続に認証が必要になるプロキシのことです。
認証が通らない場合、プロキシサーバーは407 Proxy Authentication Requiredを返します。
認証プロキシの問題点
大抵のソフトウェアは通常のプロキシには対応していますが、認証プロキシには対応していません。
認証プロキシ経由でないとインターネットに接続することができないネットワークでは多くのソフトウェアの動作に支障が出ます。
例えば自宅で使っているツールが職場では使えなかったりします。
対応しているソフトウェアであっても
- プロキシの認証情報を定期的に手動で入力させられる
- プロキシの設定が複雑になる
- 認証を忘れると不可解なエラーが出る
といった問題を抱えています。
認証プロキシの攻略
認証プロキシにたいして認証を行うプロキシサーバーを立ち上げ、そのプロキシサーバーを経由してアクセスすれば認証の手間が省けます。
この手のプロキシサーバーの実装はたくさんありますが、著名なプロキシサーバーであるSquidを使用します。
SquidはWindowsでの動作ができないので、人生の行く末をExcelで管理している日本の働く人たちには向いていないように思えます。
幸いWindows用のSquidが存在するのでそれを使うことにします。
Squidのインストール
インストーラーをダウンロードしてインストールしてください。
Squidの設定
システムトレイにSquidが現れるので右クリックして設定ファイルを開いてください。
既にある程度設定が入っています。
それに以下を追加します。
dns_nameservers
だけは既存の値を上書きしてください。
1 2 3 4 5 6 7 8 9 10 11 12 |
# 認証プロキシ cache_peer fucking.proxy.example.com parent 8080 0 no-digest no-netdb-exchange login=User:Password # もし予備のプロキシがある場合はそれも書く cache_peer sucking.proxy.example.com parent 8080 0 no-digest no-netdb-exchange login=User:Password # プロキシを通すべきでないドメインを指定する acl no-proxy-domain dstdomain stupid.corp.example.com # プロキシを通さないドメインは直接アクセスする always_direct allow no-proxy-domain # DNSサーバーの設定もお忘れなく dns_nameservers x.x.x.x y.y.y.y |
設定ファイルはSquidを再起動させないと反映されません。
プロキシの設定
Windows上で動くソフトウェアはOSのプロキシ設定を参照します。
Win+Rを押した後、ms-settings:network-proxy
と入力してOKをクリックするとプロキシ設定画面が出ます。(Windows 10)
プロキシサーバーにhttp://localhost:3128
を指定します。
WSLの設定
WSL上のソフトウェアはWindowsのプロキシ設定を参照しないので個別に設定する必要があります。
大抵は/etc/environment
で環境変数を設定するだけです。
1 2 3 4 |
HTTP_PROXY=http://localhost:3128 HTTPS_PROXY=$HTTP_PROXY http_proxy=$HTTP_PROXY https_proxy=$HTTP_PROXY |
apt
は/etc/apt/apt.confで設定します。
1 2 |
Acquire::http::Proxy "http://localhost:3128"; Acquire::https::Proxy "http://localhost:3128"; |
これでも解決しない問題
- プロキシサーバーが輻輳してろくにウェブサイトが見れない
- なんやかんやでサーバー負荷が上がってプロキシサーバーが死んで業務が止まる
- 謎の検閲によりStackoverflowが見れない
- 社外のネットワークに接続する度にプロキシ設定を変更する必要がある
結論: 社内プロキシはゴミ