VPN ~ すべてのトラフィックを VPN 接続経由で送信 [Mac]

クリーンインストールした macOS Monterey で VPN の設定をした。自分の MacBook Pro は Monterey までしか対応していない Intel CPU の MacBook Pro。そろそろ新しい Apple silicon の MacBook がほしいが、最近は Windows / Linux PC の入れ替えを優先していて、いまだに Intel CPU の MacBook である。

某所に VPN 接続してそこ経由で Internet に出ていくことで、某所の IP アドレスで Internet 上のホストに接続する必要がある(このホストでは某所の IP アドレスからの接続が許可されている)。これまでも使っていて普通に使えていたが、今回 Monterey のクリーンインストール後の設定でうまく繋がらなかった。

これまでは「すべてのトラフィックを VPN 接続経由で送信」をオンにするだけで、某所経由で当該ホストにつながって何の問題もなかったが、今回は当該ホストにつながらなかった。traceroute してみると自機の Wi-Fi 経由で接続に行っている状態でこれではつながらない。

やったこと

ネットワーク関連でやったことは特に無く、自宅のネットワークは DHCP なので Wi-Fi に接続しただけ。システム環境設定には Wi-Fi の設定と Thunderbolt ブリッジがある状態。Internet への接続は良好。

ネットワーク関連で気になることと言えば、VMware Fusion を入れた。ネットワークインタフェースを追加するので、ルーティングなどに影響があるかも。これまで VMware のサイトからダウンロードしてインストールしていたが、Broadcom に変わって新しいバージョンの個人ライセンスを使用することになった。これまで持っていたライセンスは使えないと Broadcom のサポートに言われたが、それは別の話。

VPN は L2TP over IPSec での接続。接続先 IP アドレス、ユーザ名・パスワード、事前共有キーなど間違いはない。当然、「すべてのトラフィックを VPN 接続経由で送信」はオン。

それ以外は特に思いつかない(まだ Docker も入れていないし)。

状況の確認

> netstat -nr
Routing tables

Internet:
Destination        Gateway            Flags           Netif Expire
default            172.16.128.3       UGScg             en0
default            link#17            UCSIg            ppp0
119.243.99.188     172.16.128.3       UGHS              en0
127                127.0.0.1          UCS               lo0
127.0.0.1          127.0.0.1          UH                lo0
169.254            link#5             UCS               en0      !
172.16.32/24       ppp0               USc              ppp0
172.16.32.254      172.16.32.13       UH               ppp0
<SNIP!>

当該サイトに traceroute すると自機の Wi-Fi インタフェース経由で流れていってる。netstat してみると default が 2 つある。どうにも気持ちが悪いがそういうものなんだろうか。

気になるのは ppp0 が en0 の下にあること。これ、上が優先なら現状の動きで当然だと不安になる。ネットワーク関連のどこかが壊れているのか(OS 入れ直し?)とか考えていた。

> netstat -nr
Routing tables

Internet:
Destination        Gateway            Flags           Netif Expire
default            172.16.128.3       UGScg             en0
127                127.0.0.1          UCS               lo0
127.0.0.1          127.0.0.1          UH                lo0
169.254            link#5             UCS               en0      !
172.16.128/24      link#5             UCS               en0      !
172.16.128.3/32    link#5             UCS               en0      !
<SNIP!>

VPN 切断時は上記のような出力。default は 1 つ。

> sudo route add -net <接続先> -interface ppp0

ルーティングしてやると、ちゃんと流れるか確認してみる。<接続先> へは ppp0 を経由せよという設定。ちゃんと接続できるようになった。一度 Mac を再起動してルーティングテーブルを元に戻しておく。

ルーティングテーブルの default の順がおかしいか、フラグがおかしいのだろうと想像するが、GUI での設定でなにかないか調べてみる。システム環境設定>ネットワークの画面(アイキャッチ画像の画面)で左側リストの下部にある丸の中に三点のアイコンをクリックするとサービスの順序を設定という項目がある。これを選択するとリストの項目順を入れ替えることができるので Wi-Fi が一番上、VPN が二番目になるように設定した。

これで VPN 経由で当該ホストに接続しに行くようになった。

> netstat -nr
Routing tables

Internet:
Destination        Gateway            Flags           Netif Expire
default            link#17            UCSg             ppp0
default            172.16.128.3       UGScIg            en0
17.8.131.136       link#17            UHWIig           ppp0
17.248.225.64      link#17            UHWIig           ppp0
119.243.99.188     172.16.128.3       UGHS              en0
127                127.0.0.1          UCS               lo0
127.0.0.1          127.0.0.1          UH                lo0
<SNIP!>

netstat の出力で ppp0 を使った default が先に出力されている。これで正しいかはわからないが、とりあえず作業に入ることができる。詳細はあとで調べよう。

1990 年頃から、ネットワーク管理者見習いみたいなことをやっていたが、default が複数とか、仮想のネットワークインタフェースとか、当時覚えたことだけでは解決が難しいことも多いが、調べ方とかをある程度覚えているからなんとか今回は解決できたのではないだろうか。マスタリング TCP/IP とかを思い出しました。


Comments

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です