https://twitter.com/sogaoh/status/1241616790003671040

こう言ってたら先生にとてもいいことを教えてもらったので記事にしてみました。 知っていればきっとリモートワーク捗りの一助になると思います。先生に感謝。

本記事は macOS の PC におけるケースでの設定例を記述しますが、概念はWindowsでも変わらないと思います。 (同様の方法で問題の回避が可能だと思います)

設定

/etc/ppp/ip-up

VPN接続確立時に必ず呼ばれるようです。 以下のような内容で記述して、オーナーを root にする+実行権限を付与しておいてください。

  • エディタを起動

    sudo vi /etc/ppp/ip-up 
    
  • route コマンドを記述

    #!/bin/sh
    
    if [ "$1" = "ppp0" ]; then
        /sbin/route add -net 192.168.24.0/24 -interface ppp0
        /sbin/route add -net 172.21.0.0/16   -interface ppp0
        /sbin/route add -net 10.0.0.0/16     -interface ppp0
    fi
    
    • [補足]
      • “ppp0” は1つ目のVPN接続に付加されるインターフェース名です。 2つ目がある場合などは適宜書き換えてください。
        • インターフェース名の確認は ifconfig コマンドにて。
      • /sbin/route は route コマンドのフルパスです。 which route で確認できると思います。
      • ネットワークアドレス(10.0.0.0/16 など)はVPN接続時に到達したいアドレスを必要数記述してください。
  • 実行権限を付加

    sudo chmod +x /etc/ppp/ip-up 
    

「すべてのトラフィックをVPN接続経由で送信」をOFF

システム環境設定 の ネットワーク 設定 に セッションオプションがあります。

network-setting-options.png

その中の 「すべてのトラフィックをVPN接続経由で送信」をOFF にして適用したうえで、 ネットワーク 設定 -> システム環境設定 画面をすべて閉じてください。

設定の反映

その後にVPN接続を張り直せば完了です。

反映確認

自分は以下の点を確認できました。

  1. VPN接続が従来通りに確立できること
  2. VPN接続後に curl ifconfig.io を実行したときのレスポンスが、VPN接続していないときの自端末のグローバルIPアドレスとなっていること
  3. https://fast.com/ をブラウザでリクエストしたときの速度値が、VPN接続していないときの適度に高速なものになっていること
  4. VPN接続先からのみSSH接続できるサーバーに従来通りにSSH接続できること
  5. VPN接続が確立していないとアクセスできないはずのサイトにアクセスできて妥当な画面が表示されること

Appendix