Passa al contenuto principale

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

ObiettivoTipo di payload VPNRequisito di distribuzione
Instradare il traffico idoneo del dispositivo in un tunnelcom.apple.vpn.managedInstallare direttamente o distribuire tramite MDM.
Instradare tramite Vylos le app gestite assegnatecom.apple.vpn.managed.applayerMDM è 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

FunzionePosizione nel profilo
Interfaccia e peer WireGuardVendorConfig.WgQuickConfigBase64 o WgQuickConfig
Split DNS e domini di ricercaVendorConfig.VylosConfigBase64 o VylosConfig
Attivazione automaticaVPN.OnDemandEnabled e VPN.OnDemandRules
Blocco delle connessioni senza VPNVPN.IncludeAllNetworks
Attivazione per appOnDemandMatchAppEnabled e VPNUUID al livello superiore
Restrizioni e preferenze di VylosConfigurazione 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:

ChiaveValore
WgQuickConfigContenuto UTF-8 multiriga non modificato di un file WireGuard .conf.
WgQuickConfigBase64Codifica 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:

bash
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:

ChiaveValore
VylosConfigTesto UTF-8 multilinea delle impostazioni Vylos nel formato settings.conf.
VylosConfigBase64Codifica 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:

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

Quindi copia il valore codificato su macOS:

bash
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:

xml
<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
<?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:

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

Sostituisci nello stesso modo anche la chiave VylosConfig e la relativa stringa multiriga:

xml
<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.

ImpostazioneValore
PayloadTypecom.apple.vpn.managed.applayer
VPNTypeVPN
VPNSubTypeio.cbnventures.vylos
VPN.ProviderBundleIdentifierio.cbnventures.vylos.packet-tunnel
VPN.ProviderTypepacket-tunnel
VPNUUIDValore univoco condiviso con ogni app gestita assegnata a questa VPN.
OnDemandMatchAppEnabledtrue 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:

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>

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.