DISTRICT 37

なにか

Ubuntuのproxy設定まとめ

プロキシ設定が必要

野良開発ならあまりプロキシとか意識しないけど、職場とかではプロキシ通さないとLANを越えられないため、コマンドとかでオプションをつけないとダメな場面が出てくる。作業中はあまり気にしないけど、パッケージの導入時とかにはまる。毎回調べるのもアレなので、まとめておくことにした。
環境はUbuntu14.04。とはいえUnityがスペック的にストレスがマッハになるので普段使ってるのはXubuntu14.04。軽くてミニマルで気に入っている。

環境変数

環境変数として設定する。大体これでやってくれる。~/.vimrcとかに書いておけばいい。

export http_proxy=http://your.proxy.address:8080
export https_proxy=http://your.proxy.address:8080

apt

/etc/apt/apt.confにプロキシ設定を書き込む。なければファイル作成。セミコロンを付け忘れることが多い。

Acquire::ftp::proxy "ftp://your.proxy.address:8080/";
Acquire::http::proxy "http://your.proxy.address:8080/";
Acquire::https::proxy "https://your.proxy.address:8080/";

ppa

add-apt-repositoryコマンド実行時に設定する。aptにproxy設定しても環境変数に設定してもppaの追加時にはproxyが反映されない。sudoするときに引き継がれないらしいので、オプションとして-Eを追加したらいい。

sudo -E add-apt-repository ppa:git-core/ppa

R

パッケージのインストール前に設定しておく。RStudioではできなくてCLIのRではできたりする。切り替えればいいので、特段原因追及はしない

Sys.setenv(http_proxy="http://user:pass@proxy.dom.com:8080/")

pip

pip installコマンド実行時に設定する。

pip --proxy=http://your.proxy.address:8080 install package

cntlm

いわゆるリバースプロキシ。ネットワークがNTLMv2認証とかだと上記のプロキシ設定とかでは簡単に通してくれない。ということでCNTLMを使って通してもらう。

sudo apt install cntlm

導入前なのにapt使が使える矛盾があるが、そういう時はdebを使って入れてもいい。
Cntlm: Fast NTLM Authentication Proxy in C
上記の公式サイトからdebを持ってきてインストールする。
あとは設定。/etc/cntlm.conf

Username yourname
Domain yourdomain
Password yourpassword

これを書いてテスト実行

cntlm -I -M http://test.com

うまく認証してくれれば下記文字列を返してくれる

Config profile 1/11... OK (HTTP code: 200)
Config profile 2/11... OK (HTTP code: 200)
----------------------------[ Profile 0 ]------
Auth NTLMv2
PassNTLMv2 ??????????????????????????
------------------------------------------------

下2行(Auth NTLMv2とPassNTLMv2の行)をコピーして/etc/cntlm.confに貼り付ける。後にcntlmを再起動

sudo /etc/init.d/cntlm restart

これでcntlmの設定は完了。これまで上げてきたプロキシの設定値としてhttp://localhost:3128を指定することで、プロキシを超えてくれる。