テレワーク時代の MacOS X Terminal の Proxy切り替え


先月から本格的な自宅勤務体制が始まりました。

ネットワーク環境が変わると、TerminalのProxy設定やらsshの設定やらを変える必要があり、従来までは、Mac OS X で ネットワークプロファイルをアクセスポイント名で自動切り替え といった方法をを使っていまいた。多くの場合、場所=アクセスポイントで良かったのです。このやり方ではWiFiのアクセスポイント名を使ってネットワークプロファイルを切り替えています。なお、 ssh関連も .ssh/config_no_proxy .ssh/config_proxy でproxyの有無で切り替えています。

ところが、本格的に自宅勤務するようになり、自宅のアクセスポイントでも社内にVPNするようなケースがでてきたため、自宅アクセスポイントに接続していても、ネットワーク環境が社内、というケースがでてきました。

そこで .bashrc をこんな感じに変更しました。加えた処理としては、社内ネットワークにいないと疎通しないサーバーにpingをして、その結果も使ってproxy/ssh設定を切り替えます。アクセスポイントを見る処理はなくてもいいのですが、社内でもロケーションによって切り替えしたところがあったので残しています。

#!/bin/bash

## proxy trigger settings ##
proxy_name=http://internal.company.com:10080
switch_trigger=INTERNALWIFI # アクセスポイントの名前
INTERNAL_SITE=internal.company.com #疎通確認用

# no-proxy env.
ln -fs ~/.ssh/config_no_proxy ~/.ssh/config

# proxy env.
if [ "`networksetup -getairportnetwork  en0  | awk '{print $4}'`" = "$switch_trigger" ]; then
    export http_proxy=$proxy_name
    export https_proxy=$proxy_name
    export ftp_proxy=$proxy_name
    export all_proxy=$proxy_name

    ln -fs ~/.ssh/config_proxy ~/.ssh/config
else
#vpn
  ping ${INTERNAL_SITE} -c 1 >> /dev/null 2>&1
  if [ $? -eq 0 ]; then
      export http_proxy=$proxy_name
      export https_proxy=$proxy_name
      export ftp_proxy=$proxy_name
      export all_proxy=$proxy_name

      ln -fs ~/.ssh/config_proxy ~/.ssh/config
  fi
fi

VPNの接続・切断後、ネットワーク設定が変わって、proxy/sshの設定がずれていたら、新規でTerminalを開いて.bashrcを動かせばサクッとgithubに繋がるようになりました。めでたしめでたし。

Work from Home の、ご参考になれば幸いです。