跳至主要内容

使用 .mobileconfig 描述檔部署

建立 Apple .mobileconfig 描述檔,將 Vylos WireGuard 通道安裝為受管理、唯讀的系統項目。

選擇描述檔類型

目標VPN 承載資料類型傳送要求
將符合條件的裝置流量經由一個通道路由com.apple.vpn.managed直接安裝或透過 MDM 傳送。
將指定的受管理 App 經由 Vylos 路由com.apple.vpn.managed.applayer即使 VPN 描述檔本身是直接安裝,用於正式環境的 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 限制和偏好設定受管理 App 設定,而不是 VPN 描述檔

下方範例使用 Apple 屬性列表格式。如果 MDM 顯示表單,請依相同的字典巢狀結構和值類型填寫;不要直接把帶有句點的名稱當成鍵。

傳送 WireGuard 設定

在 VPN 承載資料的 VendorConfig 字典中,只能放入下列其中一個鍵:

鍵值
WgQuickConfigWireGuard .conf 檔案未修改的多行 UTF-8 內容。
WgQuickConfigBase64相同 .conf UTF-8 內容的單行 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 字典中只加入下列一個選用鍵:

鍵值
VylosConfig採用 settings.conf 格式的多行 UTF-8 Vylos 設定文字。
VylosConfigBase64相同文字的單行 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] 中包含至少一個 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 字典。

若要使用單行值,請將範例中的 WgQuickConfig 鍵和多行字串替換為:

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

請以相同方式替換範例中的 VylosConfig 鍵和多行字串:

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

個別 App 描述檔

使用 com.apple.vpn.managed.applayer 與 Vylos 的封包通道提供者,為個別 App 提供 WireGuard 路由。承載資料支援相同的 WgQuickConfig 與 WgQuickConfigBase64 兩種方式,以及 VylosConfig 或 VylosConfigBase64 中的選用分割 DNS 設定。

設定值
PayloadTypecom.apple.vpn.managed.applayer
VPNTypeVPN
VPNSubTypeio.cbnventures.vylos
VPN.ProviderBundleIdentifierio.cbnventures.vylos.packet-tunnel
VPN.ProviderTypepacket-tunnel
VPNUUID與指定給此 VPN 的每個受管理 App 共用的唯一值。
OnDemandMatchAppEnabled設為 true,讓指定的 App 開始網路通訊時自動連線。

下列字典可替換描述檔 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 指派給它。請接著參閱設定個別 App VPN,將受管理 App 與同一個 VPNUUID 建立關聯,並瞭解支援的路由欄位。

安裝與移除描述檔

請透過 MDM 傳送描述檔,以便集中管理擁有權、替換與移除。若無法使用 MDM,使用者也可直接安裝裝置範圍描述檔,再透過作業系統的描述檔管理設定移除它。

無論使用哪種方式,Vylos 都會將其視為由描述檔擁有且為唯讀。若要變更內容,應更新或移除描述檔,而不是在 Vylos 中編輯通道。

如需瞭解 App 中最後呈現的使用體驗,請參閱部署受管理通道。Apple 的完整承載資料慣例則請參閱 VPN 與 AppLayerVPN 參考資料。