メインコンテンツまでスキップ

.mobileconfigプロファイルで配信する

Vylos WireGuardトンネルを、管理対象の読み取り専用システム項目としてインストールするApple .mobileconfigプロファイルを作成します。

プロファイルの種類を選ぶ

目的VPNペイロードの種類配信要件
対象となるデバイス通信を1つのトンネルに通すcom.apple.vpn.managed直接インストールするかMDMで配信します。
割り当てた管理対象AppをVylosに通すcom.apple.vpn.managed.applayerVPNプロファイル自体を直接インストールした場合でも、本番のApp割り当てにはMDMが必要です。

どちらの種類も、Vylosに管理対象トンネルを作成します。Appの動作を制御する管理対象App構成とは別であり、こちらはVPNをインストールしません。

各設定の場所

機能プロファイル内の場所
WireGuardのインターフェイスとピアVendorConfig.WgQuickConfigBase64またはWgQuickConfig
スプリットDNSと検索ドメインVendorConfig.VylosConfigBase64またはVylosConfig
自動アクティベーションVPN.OnDemandEnabledとVPN.OnDemandRules
VPNなしの接続をブロックVPN.IncludeAllNetworks
App別アクティベーション最上位のOnDemandMatchAppEnabledとVPNUUID
Vylosの制限と設定VPNプロファイルではなく管理対象App構成

以下の例ではAppleのプロパティリスト形式を使用します。MDMにフォームが表示される場合も、同じ辞書の入れ子構造と値の型を再現してください。ピリオド区切りの名前をそのままキーとして入力しないでください。

WireGuard構成の受け渡し

VPNペイロードのVendorConfig辞書には、次のキーのどちらか一方だけを入れます。

キー値
WgQuickConfigWireGuard .confファイルの未変更の複数行UTF-8内容。
WgQuickConfigBase64同じ.conf UTF-8内容を1行にしたBase64エンコード。

MDMの入力欄が改行を保持しない場合はWgQuickConfigBase64を使用します。両方のキーがあると使用するソースが不明確になるため、Vylosはペイロードを拒否します。

Base64は転送用のエンコードであり、暗号化ではありません。エンコードするのは.confのテキストそのもので、.vylosファイル、ZIPアーカイブ、それらへのパスではありません。

macOSでは、次のコマンドで貼り付け可能な値をクリップボードへコピーできます。

bash
base64 -i "tunnel.conf" | tr -d '\n' | pbcopy

base64がファイルをエンコードし、tr -d '\n'が出力から改行を削除し、pbcopyが結果をクリップボードに入れます。MDMのキーと値のエディタでは、結果をWgQuickConfigBase64として貼り付け、WgQuickConfigは省略します。

スプリットDNS設定の受け渡し

管理対象トンネルでスプリットDNSを使用する場合は、同じVendorConfig辞書に次の任意キーのどちらか一方だけを追加します。

キー値
VylosConfigsettings.conf形式のVylos設定の複数行UTF-8テキスト。
VylosConfigBase64同じテキストを1行のBase64にエンコードした値。

キーと値のエディタで改行が削除または変更されないよう、MDMではVylosConfigBase64を使用してください。次のようなファイルを作成します。

settings.conf
ini
[SplitDNS]
Domains = corp.example.com, *.internal.example.com
SearchDomains = example.com

次に、macOSでエンコード済みの値をコピーします。

bash
base64 -i "settings.conf" | tr -d '\n' | pbcopy

結果をVylosConfigBase64として貼り付けます。WireGuard構成の[Interface]には、少なくとも1つのDNSサーバーも必要です。Domainsはそのサーバーを使う問い合わせを選び、SearchDomainsは短いホスト名に接尾辞を追加します。トラフィックの経路は引き続きAllowedIPsが制御します。

管理対象トンネルのキルスイッチ

管理対象のデバイス全体トンネルにキルスイッチ動作を設定するには、VPN辞書内でAppleのIncludeAllNetworksキーを使用します。

xml
<key>IncludeAllNetworks</key>
<integer>1</integer>

RemoteAddressとAuthenticationMethodの隣に配置します。自動アクティベーションはOnDemandRulesで別に設定します。

IncludeAllNetworksはWireGuardのAllowedIPs経路を広げません。通常のトラフィックがVPNを迂回することを防ぎますが、各ピアが到達できる宛先は引き続きAllowedIPsが決めます。完全なデュアルスタックトンネルには0.0.0.0/0と::/0を使用します。部分的な経路は厳格な許可リストになり、[Interface]の各DNSサーバーも経路に含める必要があります。

Appleはネットワーク制御トラフィックと一部のデバイスサービスを例外としています。配信前にVPNペイロードのIncludeAllNetworksフィールドを確認してください。

デバイス全体のプロファイル

通常のデバイス全体トンネルにはcom.apple.vpn.managedを使用します。配信前に、サンプルの識別子、UUID、鍵、アドレス、エンドポイントをすべて置き換えてください。

xml
<?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>PayloadDisplayName</key>
    <string>Vylos Managed Tunnel</string>
    <key>PayloadIdentifier</key>
    <string>com.example.vylos.vpn</string>
    <key>PayloadType</key>
    <string>Configuration</string>
    <key>PayloadUUID</key>
    <string>00000000-0000-0000-0000-000000000003</string>
    <key>PayloadVersion</key>
    <integer>1</integer>
    <key>PayloadContent</key>
    <array>
        <dict>
            <key>PayloadDisplayName</key>
            <string>VPN</string>
            <key>PayloadIdentifier</key>
            <string>com.example.vylos.vpn.corp</string>
            <key>PayloadType</key>
            <string>com.apple.vpn.managed</string>
            <key>PayloadUUID</key>
            <string>00000000-0000-0000-0000-000000000004</string>
            <key>PayloadVersion</key>
            <integer>1</integer>
            <key>UserDefinedName</key>
            <string>Corporate VPN</string>
            <key>VPNType</key>
            <string>VPN</string>
            <key>VPNSubType</key>
            <string>io.cbnventures.vylos</string>
            <key>VendorConfig</key>
            <dict>
                <key>WgQuickConfig</key>
                <string>[Interface]
PrivateKey = AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=
Address = 10.0.0.2/32
DNS = 10.0.0.1

[Peer]
PublicKey = BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB=
AllowedIPs = 0.0.0.0/0
Endpoint = vpn.example.com:51820
PersistentKeepalive = 25
</string>
                <key>VylosConfig</key>
                <string>[SplitDNS]
Domains = corp.example.com, *.internal.example.com
SearchDomains = example.com
</string>
            </dict>
            <key>VPN</key>
            <dict>
                <key>RemoteAddress</key>
                <string>vpn.example.com</string>
                <key>AuthenticationMethod</key>
                <string>Password</string>
            </dict>
        </dict>
    </array>
</dict>
</plist>

uuidgenで一意のUUIDを生成してください。トンネルを追加するたびに、外側のPayloadContent配列へcom.apple.vpn.managed辞書を1つ追加します。

1行の値を使用するには、サンプルのWgQuickConfigキーと複数行文字列を次の内容に置き換えます。

xml
<key>WgQuickConfigBase64</key>
<string>BASE64_ENCODED_CONF</string>

同じ方法で、サンプルのVylosConfigキーと複数行文字列も置き換えます。

xml
<key>VylosConfigBase64</key>
<string>BASE64_ENCODED_SETTINGS_CONF</string>

アプリ別VPNプロファイル

アプリ別のWireGuardルーティングには、Vylosのパケットトンネルプロバイダとcom.apple.vpn.managed.applayerを使用します。ペイロードは同じWgQuickConfigとWgQuickConfigBase64に加えて、任意のスプリットDNS設定をVylosConfigまたはVylosConfigBase64で受け付けます。

設定値
PayloadTypecom.apple.vpn.managed.applayer
VPNTypeVPN
VPNSubTypeio.cbnventures.vylos
VPN.ProviderBundleIdentifierio.cbnventures.vylos.packet-tunnel
VPN.ProviderTypepacket-tunnel
VPNUUIDこのVPNへ割り当てるすべての管理対象Appと共有する一意の値。
OnDemandMatchAppEnabled割り当てたAppがネットワーク通信を開始したとき接続する場合はtrue。

次の辞書で、プロファイルのPayloadContent配列内にあるデバイス全体VPN辞書を置き換えられます。

xml
<dict>
    <key>PayloadDisplayName</key>
    <string>Vylos Per-App VPN</string>
    <key>PayloadIdentifier</key>
    <string>com.example.vylos.vpn.per-app</string>
    <key>PayloadType</key>
    <string>com.apple.vpn.managed.applayer</string>
    <key>PayloadUUID</key>
    <string>00000000-0000-0000-0000-000000000005</string>
    <key>PayloadVersion</key>
    <integer>1</integer>
    <key>UserDefinedName</key>
    <string>Corporate Per-App VPN</string>
    <key>VPNType</key>
    <string>VPN</string>
    <key>VPNSubType</key>
    <string>io.cbnventures.vylos</string>
    <key>VPNUUID</key>
    <string>00000000-0000-0000-0000-000000000006</string>
    <key>OnDemandMatchAppEnabled</key>
    <true/>
    <key>VendorConfig</key>
    <dict>
        <key>WgQuickConfigBase64</key>
        <string>BASE64_ENCODED_CONF</string>
        <key>VylosConfigBase64</key>
        <string>BASE64_ENCODED_SETTINGS_CONF</string>
    </dict>
    <key>VPN</key>
    <dict>
        <key>AuthenticationMethod</key>
        <string>Password</string>
        <key>RemoteAddress</key>
        <string>vpn.example.com</string>
        <key>ProviderBundleIdentifier</key>
        <string>io.cbnventures.vylos.packet-tunnel</string>
        <key>ProviderType</key>
        <string>packet-tunnel</string>
        <key>OnDemandEnabled</key>
        <integer>1</integer>
    </dict>
</dict>

このペイロードをインストールするとVPNは作成されますが、Appは割り当てられません。アプリ別VPNを構成するへ進み、同じVPNUUIDを管理対象Appへ関連付けて、対応するルーティングフィールドを確認してください。

プロファイルをインストール、削除する

所有権、置き換え、削除を一元管理するには、MDMでプロファイルを配信します。MDMを使用できない場合、ユーザーはデバイス全体のプロファイルを直接インストールし、あとでOSのプロファイル管理設定から削除することもできます。

どちらの配信方法でも、Vylosではプロファイル所有の読み取り専用項目として扱われます。トンネルを変更するには、Vylos内で編集せず、プロファイルを更新または削除してください。

Appでの表示については管理対象トンネルを配信するを参照してください。Appleの完全なペイロード仕様は、VPNおよびAppLayerVPNのリファレンスを参照してください。