Distribuire con profili .mobileconfig
Crea profili Apple .mobileconfig che installano i tunnel WireGuard Vylos come elementi di sistema gestiti e di sola lettura.
Scegliere un tipo di profilo
| Obiettivo | Tipo di payload VPN | Requisito di distribuzione |
|---|---|---|
| Instradare il traffico idoneo del dispositivo in un tunnel | com.apple.vpn.managed | Installare direttamente o distribuire tramite MDM. |
| Instradare tramite Vylos le app gestite assegnate | com.apple.vpn.managed.applayer | MDM è necessario per le assegnazioni di app in produzione, anche se il profilo VPN è stato installato direttamente. |
Entrambi i tipi di profilo creano in Vylos un tunnel gestito. Sono distinti dalla Configurazione app gestita, che controlla il comportamento dell’app ma non installa una VPN.
Posizione di ogni impostazione
| Funzione | Posizione nel profilo |
|---|---|
| Interfaccia e peer WireGuard | VendorConfig.WgQuickConfigBase64 o WgQuickConfig |
| Split DNS e domini di ricerca | VendorConfig.VylosConfigBase64 o VylosConfig |
| Attivazione automatica | VPN.OnDemandEnabled e VPN.OnDemandRules |
| Blocco delle connessioni senza VPN | VPN.IncludeAllNetworks |
| Attivazione per app | OnDemandMatchAppEnabled e VPNUUID al livello superiore |
| Restrizioni e preferenze di Vylos | Configurazione app gestita, non il profilo VPN |
Gli esempi seguenti utilizzano il formato elenco proprietà di Apple. Se l’MDM mostra un modulo, riproduci la stessa struttura di dizionari e gli stessi tipi; non trasformare i nomi con punti in chiavi letterali.
Trasporto della configurazione WireGuard
Inserisci esattamente una delle seguenti chiavi nel dizionario VendorConfig del payload VPN:
| Chiave | Valore |
|---|---|
WgQuickConfig | Contenuto UTF-8 multiriga non modificato di un file WireGuard .conf. |
WgQuickConfigBase64 | Codifica Base64 su una sola riga dello stesso contenuto UTF-8 del file .conf. |
Usa WgQuickConfigBase64 quando un campo MDM non conserva le interruzioni di riga. Vylos rifiuta un payload che contiene entrambe le chiavi, perché la sorgente da usare sarebbe ambigua.
Base64 è una codifica di trasporto, non una cifratura. Il valore codificato è il testo stesso del file .conf, non un file .vylos, un archivio ZIP o il percorso di uno di questi elementi.
Su macOS, questo comando copia negli appunti un valore pronto da incollare:
base64 -i "tunnel.conf" | tr -d '\n' | pbcopy
base64 codifica il file, tr -d '\n' rimuove le interruzioni di riga dall’output codificato e pbcopy inserisce il risultato negli appunti. In un editor chiave-valore MDM, incolla il risultato come WgQuickConfigBase64 e ometti WgQuickConfig.
Trasporto delle impostazioni Split DNS
Quando il tunnel gestito usa lo Split DNS, aggiungi esattamente una delle seguenti chiavi facoltative allo stesso dizionario VendorConfig:
| Chiave | Valore |
|---|---|
VylosConfig | Testo UTF-8 multilinea delle impostazioni Vylos nel formato settings.conf. |
VylosConfigBase64 | Codifica Base64 su una sola riga dello stesso testo. |
Usa VylosConfigBase64 con un MDM per evitare che l’editor chiave-valore rimuova o modifichi le interruzioni di riga. Crea un file come questo:
[SplitDNS]
Domains = corp.example.com, *.internal.example.com
SearchDomains = example.com
Quindi copia il valore codificato su macOS:
base64 -i "settings.conf" | tr -d '\n' | pbcopy
Incollalo come VylosConfigBase64. La configurazione WireGuard deve includere anche almeno un server DNS in [Interface]. Domains seleziona le query che usano tali server, SearchDomains aggiunge suffissi ai nomi host brevi e AllowedIPs continua a controllare l’instradamento del traffico.
Kill switch per i tunnel gestiti
Usa la chiave Apple IncludeAllNetworks nel dizionario VPN per assegnare un comportamento kill switch a un tunnel gestito per tutto il dispositivo:
<key>IncludeAllNetworks</key>
<integer>1</integer>
Inseriscila accanto a RemoteAddress e AuthenticationMethod. Configura separatamente l’attivazione automatica tramite OnDemandRules.
IncludeAllNetworks non amplia le route WireGuard in AllowedIPs. Impedisce al traffico ordinario di aggirare la VPN, ma AllowedIPs continua a determinare le destinazioni che ogni peer può raggiungere. Usa 0.0.0.0/0 e ::/0 per un tunnel dual-stack completo. Le route parziali diventano una lista consentita rigorosa e devono coprire anche ogni server DNS in [Interface].
Apple mantiene eccezioni per il traffico di controllo della rete e alcuni servizi del dispositivo. Consulta il campo IncludeAllNetworks del payload VPN prima della distribuzione.
Profilo per tutto il dispositivo
Usa com.apple.vpn.managed per un tunnel convenzionale che copre tutto il dispositivo. Sostituisci ogni identificatore, UUID, chiave, indirizzo ed endpoint di esempio prima della distribuzione.
<?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>
Genera UUID univoci con uuidgen. Ogni tunnel aggiuntivo è un altro dizionario com.apple.vpn.managed nell’array esterno PayloadContent.
Per usare un valore su una sola riga, sostituisci la chiave WgQuickConfig di esempio e la stringa multiriga con:
<key>WgQuickConfigBase64</key>
<string>BASE64_ENCODED_CONF</string>
Sostituisci nello stesso modo anche la chiave VylosConfig e la relativa stringa multiriga:
<key>VylosConfigBase64</key>
<string>BASE64_ENCODED_SETTINGS_CONF</string>
Profilo VPN per app
Usa com.apple.vpn.managed.applayer con il provider di tunnel di pacchetti Vylos per instradare WireGuard per app. Il payload accetta le stesse alternative WgQuickConfig e WgQuickConfigBase64, oltre alle impostazioni Split DNS facoltative in VylosConfig o VylosConfigBase64.
| Impostazione | Valore |
|---|---|
PayloadType | com.apple.vpn.managed.applayer |
VPNType | VPN |
VPNSubType | io.cbnventures.vylos |
VPN.ProviderBundleIdentifier | io.cbnventures.vylos.packet-tunnel |
VPN.ProviderType | packet-tunnel |
VPNUUID | Valore univoco condiviso con ogni app gestita assegnata a questa VPN. |
OnDemandMatchAppEnabled | true per connettersi quando un’app assegnata avvia una comunicazione di rete. |
Il seguente dizionario può sostituire il dizionario VPN per tutto il dispositivo nell’array PayloadContent del profilo:
<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>
L’installazione di questo payload crea la VPN ma non le assegna applicazioni. Continua con Configurare la VPN per app per associare le app gestite allo stesso VPNUUID e comprendere i campi di instradamento supportati.
Installare e rimuovere i profili
Distribuisci i profili tramite MDM per centralizzarne proprietà, sostituzione e rimozione. Se MDM non è disponibile, un utente può anche installare direttamente un profilo per tutto il dispositivo e rimuoverlo in seguito dalle impostazioni di gestione dei profili del sistema operativo.
Vylos considera entrambi i metodi come gestiti dal profilo e di sola lettura. Il modo supportato per modificare il tunnel consiste nell’aggiornare o rimuovere il profilo, non nel modificarlo in Vylos.
Per l’esperienza risultante nell’app, consulta Distribuire i tunnel gestiti. Per il contratto completo dei payload Apple, consulta i riferimenti VPN e AppLayerVPN.