Mac VPN クライアントで Export をクリックすると、接続そのものではなく接続を説明するファイルが得られます。サーバーアドレス、ポート、プロトコル、そして多くの場合証明書がその中にあります。ログインパスワード、秘密鍵のパスフレーズ、そしてこの Mac を認可する登録は通常含まれません。だからこそ、プロファイルはきれいにインポートでき、クライアントの一覧に現れても、最初の認証要求で失敗します。この隙間は形式の性質であり、壊れたダウンロードではありません。

Part of the connectionWhere it lives on the old MacWhat an export does with it
Server, port, protocol, routesClient profile or managed settingsUsually included when the client exports configuration
Client certificate and private keyInside the package, the login keychain, or issued by MDMIncluded only if the format packs it; a keychain-held key stays behind
Login password, key passphraseLogin keychainLeft out by design
Device authorization or enrollmentServer side, bound to the certificate or the device recordNot transferable; the new device has to enroll

エクスポートされたファイルに実際に含まれるもの

エクスポートは容器であり、ファイル拡張子は中身より多くを語りません。OpenVPN プロファイルはテキストです。ディレクティブに加えて、任意のインライン <ca>、<cert>、<key> ブロックがあります。Tunnelblick のセットアップは構成と設定をまとめた圧縮アーカイブです。管理対象の .mobileconfig はペイロードの plist です。何かをインポートする前に、二つの一覧が疑問の大半に答えます。

テキストプロファイルの場合は、それが持つ PEM ブロックを数えます。grep -c "PRIVATE KEY" your-profile.ovpn。ゼロ以外の結果は、ファイルに鍵素材が含まれ、その時点からパスワードのように扱わなければならないことを意味します。アーカイブの場合は、展開せずに一覧します。tar -tf export.tbz、またはクライアントが zip を作成した場合は unzip -l export.zip。その一覧にある鍵ファイル、証明書ファイル、アップまたはダウンスクリプトは、ユーザーアカウントの再発行では再現されない部分です。

逆のケースも同じくらい重要です。プロファイルが鍵を埋め込む代わりにファイル名で指す場合、エクスポートは意図的に不完全であり、欠けた半分はそれを発行した側から来なければなりません。証明書機関を所有している場合はそのファイルを隣にコピーして構いません。ファイルが古い Mac で生成されたデバイス結合の証明書とともに来た場合は適切ではありません。

キーチェーンの半分が決して移動しない理由

macOS は VPN のパスワードと鍵のパスフレーズをログインキーチェーンに保存し、クライアントは独自の設定ファイルではなくそこに保存します。Tunnelblick はエクスポートとインポートのガイドでそう述べています。セットアップアーカイブは構成と設定を運び、キーチェーンに保持されたユーザー名、パスワード、パスフレーズは除外します。この省略は意図的です。キーチェーン項目はユーザーごと、マシンごとに保護されるため、コピーされた項目は宛先で有効なアクセス制御を持たず、役に立たないファイルか平文の秘密のどちらかが残ります。

移動を計画する前に、資格情報がどこに住んでいるかを確認できます。security find-internet-password -s vpn.example.com は一致する項目の属性を出力し、存在しない場合は非ゼロのコードで終了します。同じコマンドに -g を付けるとパスワードの開示を求めるため、それを付けない問い合わせの方が安全な確認です。そこで見つかるということは、プロファイルがパスワードを運んでおらず、運ばせることもできないということです。また、新しい Mac でパスワードが再び要求され、古い Mac での「常に許可」はそこで何の意味も持ちません。

ただし、すべての秘密がキーチェーン項目というわけではありません。Tunnelblick 自身のパッケージドキュメントは、パッケージに鍵、証明書、スクリプトのファイルが含まれ得ると述べています。したがって、エクスポートがキーチェーン項目を除外していることは、エクスポートがメールで送るのに安全だという主張と同じではありません。中身を一覧するまでは、アーカイブを機密として扱ってください。

ネイティブおよび管理対象の VPN にはエクスポート経路がない

システム設定で構成された接続は、サポートされたエクスポートを提供しません。scutil --nc list はシステムが知っているサービスを表示し、scutil --nc show "Work VPN" は 一つのサービスの構成を出力します。サーバーとプロトコルを読むには十分です。どちらも移行ツールではありません。/Library/Preferences/SystemConfiguration/preferences.plist に保存されたサービス識別子はそのファイルへの参照であるため、ファイルをコピーして識別子を書き換えることはサポートされた転送ではなく、宛先の無関係なネットワークサービスを乱す可能性があります。

サポートされた経路は Apple が文書化しているものです。管理者が提供する VPN 設定ファイルをインストールするか、運用者が渡す設定を入力します。接続が管理されている場合は、古いダイアログのスクリーンショットから再構築するのではなく、新しいファイルまたは新しい登録を求めてください。MDM が配信するプロファイルでは、証明書ペイロードが身元を運び、秘密鍵はデバイス上で生成されることがあり、その場合、古いプロファイルの完璧なコピーでも新しい Mac を認証できません。

一覧を信じるのではなく復元を検証する

一覧にあるプロファイルと機能するトンネルは 二つの異なる状態であり、報告に値するのはそのうち 一つだけです。インポートして接続したら、トンネルインターフェースが存在することを確認し、次にトンネルが何をしているかを確認します。

ifconfig | grep -A3 utun はトンネルインターフェースとそのアドレスを表示します。scutil --dns | grep nameserver は接続後にどのリゾルバが有効かを表示し、split-DNS プロファイルが通常分かれるのはここです。次に、本当に重要なリソースに到達します。curl -sS -o /dev/null -w "%{http_code}" https://intranet.example.com。三つすべてが通れば、設定、DNS、ルートが届いています。クライアントの緑のアイコンは、それ自体では何も意味しません。

インポート後に 二つの失敗がよく現れ、どちらもファイルのせいにされます。公開名は解決するが内部名は解決しない場合、通常はプロファイルの DNS サーバーが落とされたか、split-DNS が保持されなかったことを意味します。トンネルが上がってもトラフィックが通らない場合、通常はルートまたはサーバー側の認可がプロファイルに従わなかったことを意味します。同じアーカイブを再インポートすると、どちらも再現します。

古い Mac を退役させる前に

エクスポートを削除しても失効ではありません。古いデバイスが証明書で認証していた場合、サーバーはその証明書が失効または再発行されるまで信頼し続けます。共有アカウントで認証していた場合、そのアカウントのセッションはまだ生きている可能性があります。ハードウェアがまだ目の前にあるうちに、サーバー側の手順を済ませてください。

鍵を含む場合は新しいプロファイルを他の資格情報と一緒に保管し、パスワードはファイルではなく新しいキーチェーンに入るようクライアントに入力してください。最後の確認: 古い Mac の電源を切った状態で、代替機から接続します。移行元のマシンがオンラインの間しか機能しない引き継ぎは、決して完全ではありませんでした。

関連記事