背景・目的
弊社では社内NWからインターネットに接続する場合は必ずProxyを通らなければならない。
Linuxの場合、環境変数HTTP_PROXY
を設定してあげれば大体うまく行く。
大体どの記事読んでも.bashrcあたりにexport
を書いてくださいとあるけど、
下記のような理由でこれをしたくない。
- Proxyにユーザー認証が必要で、個人のユーザー名とパスワードが必要
- 弊社ルールによりパスワードを90日毎に変更しなければならず、その都度パスワードを書き換えるのは美しくない
- そもそも、個人のパスワードを平文で書かなければならずセキュリティ的に論外
そんなわけで、認証付きProxyを上手いこと設定する方法を模索。
目標
- 認証付きProxyを環境変数に追加したい
- 設定するときにユーザー名とパスワードを尋ねる形にしたい
できたもの
ひとまず、下記のようなスクリプトを書いてみた。
プロキシサーバー名とかホスト名は仮で。
#!/bin/bash
function set_proxy() {
echo -n "user name:"
read user
echo -n "password:"
read -s pass
echo
export HTTP_PROXY=http://$user:$pass@proxy.server.co.jp:8080
export http_proxy=http://$user:$pass@proxy.server.co.jp:8080
export NO_PROXY=localhost,127.0.0.1
}
function unset_proxy() {
unset HTTP_PROXY
unset http_proxy
}
while :
do
echo "1 : Proxyを設定します"
echo "2 : Proxy設定を解除します"
echo -n "mode :"
read mode
case "$mode" in
"1" )
set_proxy
echo "Proxyを設定しました"
break ;;
"2" )
unset_proxy
echo "Proxy設定を解除しました"
break ;;
esac
done
これをset-proxy
とか適当な名前で保存して、適当なところに配置する。
実行権限を与えるのを忘れずに。
使い方
とりあえず呼び出して、あとはメニューに沿って所望の設定をしてあげるだけ。
ひとつ注意点として、source
コマンドと併せて呼び出さないと反映されない。
source set-proxy
うーん...美しくない...
補足
HTTPSとか他のプロトコルでもProxy設定したい場合は、必要な分だけ行を追加する。
NO_PROXY
はunsetしてないけど、弊害はないでしょう。多分。
雑感
よくできたところ
- ひとまず目標としていたことはクリアできた
- マルチユーザー環境でも個別にProxy設定できるので、セキュリティ的にも安心
イマイチなところ
前述のとおり。source
コマンドを使わないといけないので、なんともダサい。
おわりに
Proxy関連の話をちょっとググると大量に記事が出てくるので、
それだけ悩んでる人がいるのでしょう。
少しでも助けになれば。
もっと良い方法があれば是非ご連絡ください。