プロキシ設定いろいろ

学校や職場ではプロキシを運用している場合が多いと思います。
システム構築の際には意外な落とし穴になることも。認証がかかっているものはさらに面倒です。

以下によく利用されるものを記載します。
設定コマンドと、表示コマンドがあれば記載しておきます。

もくじ:

環境変数

コマンドラインでの設定

Linuxで環境変数に設定してしまって構わない場合は、下記の変数を設定します。大抵のコマンドは環境変数を参照しているので、個別に設定する代わりにしてもうまくいくケースが多いです。

sudoを使う場合は、そのままでは環境変数が伝播しないのでエイリアスを設定すると便利です。-Eは環境変数を引き継ぐオプションで、sudoを使う際に個別に打ってもいいのですが、面倒ですし、うっかり忘れることもありますので。オプションのあとには半角スペースが必要です。

スクリプトでの設定

スクリプト(bash)に書く場合はこんな感じ。shopt ...はbashスクリプト中でエイリアスを有効化するための記述です。

sourceコマンドを使うとコンソールで有効化することもできますね。

各アプリケーションでの設定

[RedHat] yum

yumコマンドでレポジトリと通信する前に、設定ファイルに追記しておきます。

[RedHat] rpm

ここではrpmコマンドの文中にオプションとして指定しています。

[Debian] apt, apt-get

下記のように設定ファイルに書くか、もしくはコマンド中で同じパラメータを書いても通るようです。

設定ファイルに書く場合、末尾のセミコロンを忘れがちなので注意。

apt-keyを使う場合は次のように指定します。

[Linux] wget

初期化ファイルに記載するのがよくやる方法のようです。

[Atom] apm

Atom(テキストエディタ)を使っているとテーマやパッケージの取得、更新でプロキシ認証が必要な場面があります。

まあ、パッケージによってはさらにNodeに依存していて、Nodeのほうでプロキシに引っかかった間抜けな思い出がありますが、レアケースです。

Windowsで、たまにパスが張れていないと、そもそもapmコマンドが通らないことがあります。
その場合はC:/Users/(UserName)/AppData/Local/atom/bin/apmあたりにスクリプトがあるので、直接指定しても動作します。
それらスクリプトも他のexeを呼んでいるだけで、実体はatomをインストールした場所のresource/cliあたりにあるようです。

[Node.js] npm

npmはたまに通信エラー(正確にはプロキシの認証エラー)にひっかかりますが、プロキシまたはパッケージのレジストリを設定すると解決することがあります。

[Python] pip

Windowsの場合はコマンドプロンプトから環境変数を設定すると、以降pipコマンドがプロキシ経由で通ります。あたりまえですが、ウィンドウを閉じるとセッションが終わるので設定が飛びます。

Linuxの場合はコマンドのパラメータとして渡してしまうのが楽です。
Windowsは何故かこれが効かない。。。

[Docker] docker

DockerをLinuxのsystemdでデーモンとして動かす場合、コンソールで環境変数を設定しても効きません。
Dockerは基本的にコンテナのイメージをネットワーク経由でpullすることになるので、プロキシ設定は重要です。

Dockerホストで/etc/systemd/system/docker.service.d/http-proxy.confなるファイルを作成することでdockerデーモン用にプロキシを設定できます。

バリエーションとして、Https(HTTPS_PROXY, https-proxy.confファイル)や例外ホスト(NO_PROXY)を設定することもできます。

Windowsでのプロキシ設定

Windowsでのプロキシ設定は、「インターネットオプション」での設定が重要になっています。これはそもそもIE (Internet Explorer)やEdgeを設定するものですが、システム本体にも関わってきます。

インターネットオプション

「インターネット オプション」(または「インターネットのプロパティ」)はコンパネから開くか、下記をコマンドプロンプトやPowerShell、「ファイル名を指定して実行」メニューからコマンドラインで起動します。

通常は管理者権限が必要になるので、コマンドラインから開く場合は「管理者として実行」コンテキストメニューなどを使うことになるでしょう。

「接続」タブ>「LANの設定」に進みます。

かつてはIEの設定をするためのものでしたが、プロキシなど一部の項目はEdgeや「Windowsの設定」アプリにも同期されます。ChromeやFirefoxなどサードパーティ製のブラウザにもこの設定を参照するオプションがあります。

基本的には「プロキシサーバー」にサーバのアドレス(IPアドレスまたはホスト名)とポート番号を設定します。

学校や会社など構成スクリプトが配布されている場合は「自動構成スクリプトを使用する」の項目に設定します。部署やセグメントに応じて設定を切り替えるための、”http://…./xxx.pac”みたいなやつですね。

Windowsの場合、アカウントは資格情報として管理されているので、ユーザ名やパスワードはブラウザ利用時に入力します。

システム設定

その他、Windows Updateなどが内部的に使うプロキシ設定もあります。管理者権限を持つコマンドラインからnetshを使います。

おわり。