[Windows][Ubuntu-WSL]Proxyで困ったときに見るメモ

Linux (Ubuntu)

概要

Ubuntu-WSL(Windows Subsystem 4 Linux)でProxyの設定をする話。

プロキシ環境下でのapt, curl, wget, git, pip, rbenv

事象

職場でのLinux運用では、Proxyが邪魔してエラーになるケースが多かった。
Proxyが問題になるコマンドとしては、

  1. apt, yumなどのパッケージマネージャ
  2. curl, wgetなどのhttpダウンローダ
  3. curl, wgetを間接的に呼ぶスクリプト(Python, Ruby, javaなど)
  4. gitなどのバージョン管理ツール

などのネットワークを扱うコマンド。

当社においては、http, httpsプロキシが存在するため、はまった。
少々面倒なのは、社外ネットではProxy設定が不要になるという点だ。
強引ではあるが、VPN環境下でのみ使うということとしてごまかしている。
自動的に切り替えてくれる設定を書けばいいと思うのだが、やり方が分からない。
AliasでProxy無効バージョンのコマンドを用意してあげるなどが良いかもしれない。

[Ubuntu-WSL]コマンド別対処法

(RADIUSか何かで認証している環境ではIDとPASSは不要である。)

1. apt

一時的

sudo apt -o Acquire::http::proxy=”http://[id]:[pass]@[HTTPproxyのアドレス]:[ポート番号]/” install hogehoge

sshなどと同様で、オプションを指定するサブコマンド -o が使える。

永続的

/etc/apt/apt.conf

に下記を追記

Acquire::ftp::proxy “ftp://[id]:[pass]@[FTPproxyのアドレス]:[ポート番号]/”;
Acquire::http::proxy “http://[id]:[pass]@[HTTPproxyのアドレス]:[ポート番号]/”;
Acquire::https::proxy “http://[id]:[pass]@[HTTPSproxyのアドレス]:[ポート番号]/”;

;を忘れない事。

2. curl

一時的

curl –proxy http://[id]:[pass]@[HTTPproxyのアドレス]:[ポート番号]/” http://hogehoge.com
curl –x http://[id]:[pass]@[HTTPproxyのアドレス]:[ポート番号]/” http://hogehoge.com

永続的

~/.curlrc

に下記を追記

proxy=”http://[proxy.example.com]:8080″

3.wget

一時的

wget -e HTTP_PROXY=proxy.co.jp:8080 ‘http://www.goo.ne.jp/’

こちらは、-o サブコマンドではなく、-e でパラメータ指定。

永続的

/etc/wgetrc

に下記を追記

# proxy
ftp_proxy = ftp://[id]:[pass]@[FTPproxyのアドレス]:[ポート番号]/
http_proxy = http://[id]:[pass]@[HTTPproxyのアドレス]:[ポート番号]/
https_proxy = https://[id]:[pass]@[HTTPSproxyのアドレス]:[ポート番号]/

4. git

一時的

#プロキシ指定(上書き)
git clone <repository-url> -c http.proxy=”http://[id]:[pass]@[HTTPproxyのアドレス]:[ポート番号]” -c https.proxy=”https://[id]:[pass]@[HTTPSproxyのアドレス]:[ポート番号]”

#プロキシ無効
git clone <repository-url> -c http.proxy=”” -c https.proxy=””

永続的

下記コマンドを実行

$ git config –global http.proxy http://[HTTPproxyのアドレス]:[ポート番号]
$ git config –global https.proxy https://[HTTPSproxyのアドレス]:[ポート番号]

5. (おまけ)pip

python -m pip install hogehoge –proxy=[HTTPproxyのアドレス]:[ポート番号]

6. (おまけ)rbenv

ruby-buildの設定ファイルを編集

vi ~/.rbenv/plugins/ruby-build/bin/ruby-build

http_head_curl() {
curl -qsILf ${CURL_OPTS} “$1” >&4 2>&1
}
http_get_curl() {
curl -q -o “${2:–}” -sSLf ${CURL_OPTS} “$1”
}

http_head_curl() {
curl -sILf ${CURL_OPTS} “$1” >&4 2>&1
}
http_get_curl() {
curl -o “${2:–}” -sSLf ${CURL_OPTS} “$1”
}

[Windows]状況別プロキシ設定法

1. ブラウザ

ブラウザの設定は、インターネットオプションから設定する。

(編集中)

2. PowerShell

環境変数に直接書き込む。

> Set-Item –path Env:http_proxy -value http://[id]:[pass]@”http://proxy.hoge.com”:[port]/
> $Env:http_proxy
http://[id]:[pass]@”http://proxy.hoge.com”:[port]/

3. コマンド別

1. gem (ruby)

gem install hoge -p http://[id]:[pass]@
http://proxy.hoge.com
:[port]/

 

まとめ

Linuxを社内で使っていて、ネットワーク系のコマンドがエラーを出すようだと
プロキシを疑うのが得策。

PCを社外・社内のどちらでよく使うかに応じて一時プロキシ設定を使うか
永続プロキシ設定を使うか変えるといいと思う。

コメント

Japanese
タイトルとURLをコピーしました