macOS Tahoe だとL2PT/IPSec のVPNが設定できない仕様になっているらしい。なぜか解決方法がまだネットにない。
Appleは設定方法を解説しているが、そもそもシステム設定にVPNの項目がないのだ。ネットワークの項目を開くと右下にVPNの設定ができるプルダウンがあるがそこのL2TP over IPSec を開くと接続に必要なパラメータ入力欄があるのだが、最後のコンピュータ認証ー共有シークレット の入力欄がないから設定できないのだ。。
現在Sequoia 15.7.2で動いているMacBook Pro Intel ではVPNという項目があり、ここで「VPN構成を追加」で設定できる。しかしネットワークを開いて右下のプルダウンのL2TP over IPSec を開くと接続に必要なパラメータ入力欄が出てくるが、こっちでも最後の コンピュータ認証ー共有シークレット の入力欄がない。前のバージョンのSequoiaあるいはもっと前のOSのときにはあったから、その時設定したVPNは現在のSequoia 15.7.2で使えるのだが、Sequoia 15.7.2にはネットワークからは設定できない。VPNの項目がなくなったのはSequoiaのときから??
困るので設定方法をChatGPTのお助けで解決した。ChatGPTの説明では必ずしも新しいmacOSのプロンプトそのものと一致しないが、大体わかる。また何故なのか等を言ってくるから、はいそうですかとするだけでいい。
L2TP 用 の解決方法 構成プロファイル (.mobileconfig) を作り、これをインストールする。
必要な物
①サーバアドレス:IP Address あるいは vpn.example.com など(サーバ管理者が指定)
②アカウント名:VPN ログインユーザ(サーバ管理者が指定)
③ユーザパスワード:そのユーザのパスワード(サーバ管理者が指定)
④共有シークレット(事前共有鍵):L2TP/IPsec の共有鍵(サーバ管理者が指定)
⑤Macで表示される接続名称:〜〜VPN (等、ユーザの任意)
.mobileconfigの作成 以下をtextで作成。@@…@@ となっている部分を自分の値に書き換える。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>PayloadType</key>
<string>Configuration</string>
<key>PayloadVersion</key>
<integer>1</integer>
<key>PayloadIdentifier</key>
<string>jp.example.vpn.l2tp</string>
<key>PayloadUUID</key>
<string>@@PROFILE-UUID@@</string>
<key>PayloadDisplayName</key>
<string>L2TP VPN</string>
<key>PayloadDescription</key>
<string>L2TP over IPsec VPN 設定</string>
<key>PayloadOrganization</key>
<string>@@ORG-NAME@@</string>
<key>PayloadRemovalDisallowed</key>
<false/>
<key>PayloadScope</key>
<string>User</string>
<key>PayloadContent</key>
<array>
<dict>
<key>PayloadType</key>
<string>com.apple.vpn.managed</string>
<key>PayloadVersion</key>
<integer>1</integer>
<key>PayloadIdentifier</key>
<string>jp.example.vpn.l2tp.vpn</string>
<key>PayloadUUID</key>
<string>@@VPN-PAYLOAD-UUID@@</string>
<key>PayloadDisplayName</key>
<string>L2TP VPN</string>
<key>PayloadEnabled</key>
<true/>
<!-- メニュー上のサービス名 -->
<key>UserDefinedName</key>
<string>@@VPN-SERVICE-NAME@@</string>
<!-- L2TP を指定 -->
<key>VPNType</key>
<string>L2TP</string>
<!-- PPP 部分(ユーザ認証+接続先) -->
<key>PPP</key>
<dict>
<!-- 接続先アドレス -->
<key>CommRemoteAddress</key>
<string>@@SERVER-ADDRESS@@</string>
<!-- ユーザ名 / パスワード -->
<key>AuthName</key>
<string>@@ACCOUNT-NAME@@</string>
<key>AuthPassword</key>
<string>@@ACCOUNT-PASSWORD@@</string>
<key>AuthenticationMethod</key>
<string>Password</string>
</dict>
<!-- IPsec 部分(共有シークレット) -->
<key>IPSec</key>
<dict>
<key>AuthenticationMethod</key>
<string>SharedSecret</string>
<!-- base64 エンコードした共有シークレット -->
<key>SharedSecret</key>
<data>
@@SHARED-SECRET-BASE64@@
</data>
</dict>
<!-- すべてのトラフィックをトンネルする場合 -->
<key>IPv4</key>
<dict>
<key>OverridePrimary</key>
<integer>1</integer>
</dict>
<!-- プロキシを使わないなら空 -->
<key>Proxies</key>
<dict/>
</dict>
</array>
</dict>
</plist>
UUID を作る ターミナルで:
uuidgen uuidgen
uidgen uuidgen
と2回入力し 1回目の出力を @@PROFILE-UUID@@、 2回目のの出力を @@VPN-PAYLOAD-UUID@@ と置き換える。 95788D0A-1234-4E1D-ABCD-0123456789AB みたいな文字列である。
共有シークレットを base64 にする
共有シークレットが MySecretKey だとすると: ターミナルで echo -n ‘MySecretKey’ | base64
として 例として TXlTZWNyZXRLZXk= のような結果が出るので、それを @@SHARED-SECRET-BASE64@@ と入れ替える
このテキストを L2TP-vpn.mobileconfig と名付けて保存。(文字コード:UTF-8 拡張子:.mobileconfig) プレーンテキストだが拡張子が.mobileconfigにする。
システム設定 → 一般 → デバイス管理 を開く。
[+]= 新しいプロファイルを追加なので + ボタンをクリックすると、どのファイルかと聞いてくるから L2TP-vpn.mobileconfig を選択する。選択したプロファイルでいいか?ときいてくるから 続ける をクリック。インストールしていいかと聞いてくるから OK。macの管理者パスワードが要求される。
これでシステム管理のネットワークの下にVPNという項目があるはず。あるいはネットワークを開くとVPNのL2PT/IPSecに全てを入力できる画面が出てくるはず。使う頻度が高いのならメニューバーにアイコンを表示させておく。
おしまい。
ちなみに、この.mobileconfigを作成するのは面倒なんで、ChatGPTに「mac で 「ネットワーク」の下に VPN 項目が最初から無い」と質問するとTahoeの仕様だとかいってくるから、「解決してくれ」と頼めばいい。①〜⑤を伝えて.mobileconfigを作ってくれというと作成してくれるから、これを利用したほうが、ミスタイプ等で引っかからないので楽です。