使用 .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 字典中,只能放入下列其中一個鍵:
| 鍵 | 值 |
|---|---|
WgQuickConfig | WireGuard .conf 檔案未修改的多行 UTF-8 內容。 |
WgQuickConfigBase64 | 相同 .conf UTF-8 內容的單行 Base64 編碼。 |
如果 MDM 欄位無法保留換行,請使用 WgQuickConfigBase64。若承載資料同時包含兩個鍵,Vylos 會因無法判斷預期來源而拒絕它。
Base64 是傳輸編碼,不是加密。編碼值是 .conf 文字本身,而不是 .vylos 檔案、ZIP 封存檔,或指向這些檔案的路徑。
在 macOS 上,下列指令會將可直接貼上的值複製到剪貼板:
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,以免鍵值編輯器移除或變更換行符號。建立如下檔案:
[SplitDNS]
Domains = corp.example.com, *.internal.example.com
SearchDomains = example.com
然後在 macOS 上複製編碼值:
base64 -i "settings.conf" | tr -d '\n' | pbcopy
將結果貼成 VylosConfigBase64。WireGuard 設定還必須在 [Interface] 中包含至少一個 DNS 伺服器。Domains 選擇使用這些伺服器的查詢,SearchDomains 為短主機名稱加入字尾,而流量路由仍由 AllowedIPs 控制。
受管理通道的終止開關
若要讓受管理的裝置範圍通道具備終止開關行為,請在 VPN 字典中使用 Apple 的 IncludeAllNetworks 鍵:
<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 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 鍵和多行字串替換為:
<key>WgQuickConfigBase64</key>
<string>BASE64_ENCODED_CONF</string>
請以相同方式替換範例中的 VylosConfig 鍵和多行字串:
<key>VylosConfigBase64</key>
<string>BASE64_ENCODED_SETTINGS_CONF</string>
個別 App 描述檔
使用 com.apple.vpn.managed.applayer 與 Vylos 的封包通道提供者,為個別 App 提供 WireGuard 路由。承載資料支援相同的 WgQuickConfig 與 WgQuickConfigBase64 兩種方式,以及 VylosConfig 或 VylosConfigBase64 中的選用分割 DNS 設定。
| 設定 | 值 |
|---|---|
PayloadType | com.apple.vpn.managed.applayer |
VPNType | VPN |
VPNSubType | io.cbnventures.vylos |
VPN.ProviderBundleIdentifier | io.cbnventures.vylos.packet-tunnel |
VPN.ProviderType | packet-tunnel |
VPNUUID | 與指定給此 VPN 的每個受管理 App 共用的唯一值。 |
OnDemandMatchAppEnabled | 設為 true,讓指定的 App 開始網路通訊時自動連線。 |
下列字典可替換描述檔 PayloadContent 陣列中的裝置範圍 VPN 字典:
<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 參考資料。