#概要
- NTLMv2認証ProxyはLinuxやクロスプラットフォームなアプリと相性が悪い
- 間にCntlmを噛ませて認証を代行してもらうことで解決する
Cntlmとは
認証Proxyへの認証を代行してくれるものです。対象サーバーへの認証情報を記憶させておくと、CntlmをProxyとして指定することで通信を中継&勝手に認証をしてくれるもよう。
http://cntlm.sourceforge.net/
Linux以外にもWindows版もあり、そちらはWindowsサービスとして動作するようです。
導入方法
インストール
- Windowsでは上記Urlからインストーラexeをダウンロードして導入する
- Linux(Ubuntu)では以下のコマンドで取得、または上記urlから取得
sudo apt install cntlm
設定ファイルの編集
- Windowsではインストールフォルダ内にあるcntlm.iniを編集する
- Linuxでは
/etc/cntlm.conf
Username <ユーザー名>
Domain <ドメイン名>
Password <パスワード>
Proxy <プロキシサーバー名 or IPアドレス>:<ポート>
Listen <自分の待ち受けポート(デフォルト:3128)>
テスト実行
- Windowsではcntlmインストールフォルダでコマンドプロンプトを起動
- Linuxではコンソールより以下
cntlm -I -M http://www.google.co.jp
- Passwordを聞かれるので、設定にも記載したproxy認証パスワードを入力する
- 成功すると以下の文字列が応答される
----------------------------[ Profile 0 ]------
Auth NTLMv2
PassNTLMv2 <認証ハッシュ>
------------------------------------------------
- ここの2行の文字列をコピーして、さきほどの設定ファイルの末尾に追記する
起動
- Windowsの場合はCntlm Authentication Proxyサービスを起動する
- Linuxの場合はCntlmサービスを再起動する
sudo service cntlm restart
設定
あとは各アプリでのProxyに以下の内容を設定するだけ(設定ファイルのListenを3128に設定している場合)
http://localhost:3128
これでaptもnpmもcurlも、Windows上でのeclipseも問題なく接続できるように。
余談
localhostじゃなくて社内ネットワーク上にこっそりcntlmを導入した環境を構築しておいて、みんなProxyでそちらを指定すれば幸せになるのでは……と思ったけどユーザー認証の意味がなくなるから管理側に怒られますね。
参考
Cntlmを使いNTLM proxy環境下でもnpmを使いたい
[Windows]Forefront TMGのNTLM認証プロキシをCntlmでなんとかする
CNTLMでプロキシ設定する
Ubuntuのproxy設定まとめ