LoginSignup
55
56

More than 5 years have passed since last update.

Macbookでproxy環境と非proxy環境のネットワーク設定をスマートに切り替えるメモ

Posted at

Macbookで複数箇所のネットワーク環境を利用していて、そのうちの一つ以上がproxyな環境の場合、ネットワークを切り替える都度、proxyのON/OFFの設定が必要になる。その手間を最小化するためのメモ。

Macでのproxyの設定方法

そもそも、Macでのネットワークにおけるproxy設定は(多分)以下の2箇所あって、それぞれ設定が同期されないみたい。

  • 非ターミナル系:システム>環境設定>ネットワーク
    • 適用範囲はSafafi、 Chromeなどのブラウザなど
  • ターミナル系:ターミナルからの環境変数の設定(http_proxy他)
    • 適用範囲はターミナルなど

非ターミナル系

基本的にはネットワークを変更した時にproxy設定を切り替えられるようにする。

Macではネットワーク環境(Location)という設定があるので、proxy環境用のLocationを定義しておいてこれを利用する。
例えば、OfficeというLocationを定義(作成)して、Location:Officeだけproxyを設定した状態にする。非proxy環境からproxyをつかうネットワークに接続する環境へ切り替えるときはLocation:Officeにすると同時にproxy設定が適用される。

Locationの変更だけだとアクセスポイントまでは連動しないようなので、Locationとアクセスポイントはセットで切り替えるようにする。

ターミナル系

基本的には新規ターミナルを起動した時と、ネットワークを変更した時にproxy設定を切り替えられるようにする。

ターミナル系におけるproxyの設定はコマンドによっても読む環境変数が異なるのでhttp_proxyだけ設定すればいいというわけでもないのでその点は気をつける。

プロキシを切り替えるためのスクリプトを用意する。スクリプトはこちらを参考にした。YOUR_*の部分は自分の環境に合わせて書き換える。

.switch_proxy
proxy=YOUR_PROXY_HOST:YOUR_PROXY_PORT
switch_trigger_location=YOUR_LOCATION
switch_trigger_network=YOUR_ACCESS_POINT

function set_proxy() {
  export http_proxy=$proxy
  export ftp_proxy=$proxy
  export all_proxy=$proxy
  export https_proxy=$proxy

  git config --global http.proxy $proxy
  git config --global https.proxy $proxy
  git config --global url."https://".insteadOf git://
}

function unset_proxy() {
  unset http_proxy
  unset ftp_proxy
  unset all_proxy
  unset https_proxy

  git config --global --unset http.proxy
  git config --global --unset https.proxy
  git config --global --unset url."https://".insteadOf
}

if [ "`networksetup -getcurrentlocation`" = "$switch_trigger_location" -a "`networksetup -getairportnetwork en0 | awk '{print $4}'`" = "$switch_trigger_network" ]; then
  echo "Switch to proxy for office network"
  set_proxy
else
  echo "Unset proxy settings"
  unset_proxy
fi

いつでもnswitchコマンド一発で呼び出せるように、以下を追記。

.bash_profile
# Proxy
alias nswitch="source ~/.switch_proxy"

ターミナルを起動した時に呼ばれるように以下も追記。

.bash_profile
nswitch

ネットワークを手動で変更した時はターミナルから、以下のコマンドを発行して、proxy設定を行う。

$ nswitch

これで環境にあったproxy設定になるはず。

参考

55
56
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
55
56