Implementarea prin profiluri .mobileconfig
Creați un profil Apple .mobileconfig pentru a instala un tunel Vylos WireGuard ca element de sistem gestionat și doar în citire.
Alegerea tipului de profil
| Obiectiv | Tip de payload VPN | Cerințe de livrare |
|---|---|---|
| Direcționarea traficului eligibil al dispozitivului printr-un tunel | com.apple.vpn.managed | Instalare directă sau livrare prin MDM. |
| Direcționarea aplicațiilor gestionate atribuite prin Vylos | com.apple.vpn.managed.applayer | Atribuirile de producție necesită MDM chiar dacă profilul VPN este instalat direct. |
Ambele profiluri creează în Vylos un tunel gestionat. Ele sunt diferite de configurarea aplicației gestionate, care controlează aplicația, dar nu instalează un VPN.
Locul fiecărei configurări
| Funcție | Loc în profil |
|---|---|
| Interfața și peerii WireGuard | VendorConfig.WgQuickConfigBase64 sau WgQuickConfig |
| DNS separat și domenii de căutare | VendorConfig.VylosConfigBase64 sau VylosConfig |
| Activare automată | VPN.OnDemandEnabled și VPN.OnDemandRules |
| Blocarea conexiunilor fără VPN | VPN.IncludeAllNetworks |
| Activare per aplicație | OnDemandMatchAppEnabled și VPNUUID la nivel superior |
| Restricții și preferințe Vylos | Configurație gestionată a aplicației, nu profilul VPN |
Exemplele de mai jos folosesc formatul listă de proprietăți Apple. Dacă MDM afișează un formular, reproduceți aceeași imbricare a dicționarelor și aceleași tipuri; nu transformați numele cu puncte în chei literale.
Transmiterea configurației WireGuard
Introduceți o singură cheie dintre cele de mai jos în dicționarul VendorConfig al payload-ului VPN:
| Cheie | Valoare |
|---|---|
WgQuickConfig | Conținutul UTF-8 nemodificat, pe mai multe linii, al fișierului WireGuard .conf. |
WgQuickConfigBase64 | Același conținut UTF-8 .conf, codificat Base64 pe o singură linie. |
Dacă un câmp MDM nu păstrează liniile noi, folosiți WgQuickConfigBase64. Dacă payload-ul conține ambele chei, Vylos îl respinge deoarece sursa dorită este ambiguă.
Base64 este o codificare de transport, nu criptare. Valoarea codificată este textul .conf, nu un fișier .vylos, o arhivă ZIP sau o cale către aceste fișiere.
Pe macOS, următoarea comandă copiază în clipboard o valoare gata de lipit:
base64 -i "tunnel.conf" | tr -d '\n' | pbcopy
base64 codifică fișierul, tr -d '\n' elimină liniile noi, iar pbcopy pune rezultatul în clipboard. În editorul cheie-valoare MDM, lipiți rezultatul pentru WgQuickConfigBase64 și omiteți WgQuickConfig.
Transmiterea configurărilor DNS separat
Când tunelul gestionat folosește DNS separat, adăugați exact una dintre următoarele chei opționale în același dicționar VendorConfig:
| Cheie | Valoare |
|---|---|
VylosConfig | Text UTF-8 pe mai multe linii cu configurările Vylos în format settings.conf. |
VylosConfigBase64 | Codificarea Base64 pe o singură linie a aceluiași text. |
Folosiți VylosConfigBase64 cu MDM pentru ca editorul cheie-valoare să nu elimine sau să modifice întreruperile de linie. Creați un fișier ca acesta:
[SplitDNS]
Domains = corp.example.com, *.internal.example.com
SearchDomains = example.com
Apoi copiați valoarea codificată în macOS:
base64 -i "settings.conf" | tr -d '\n' | pbcopy
Lipiți-o ca VylosConfigBase64. Configurația WireGuard trebuie să includă și cel puțin un server DNS în [Interface]. Domains selectează interogările care folosesc acele servere, SearchDomains adaugă sufixe numelor de gazdă scurte, iar AllowedIPs continuă să controleze rutarea traficului.
Kill switch pentru tunelurile gestionate
Folosiți cheia Apple IncludeAllNetworks în dicționarul VPN pentru a oferi funcția kill switch unui tunel gestionat la nivelul dispozitivului:
<key>IncludeAllNetworks</key>
<integer>1</integer>
Plasați-o lângă RemoteAddress și AuthenticationMethod. Configurați separat activarea automată prin OnDemandRules.
IncludeAllNetworks nu extinde rutele WireGuard din AllowedIPs. Împiedică traficul obișnuit să ocolească VPN-ul, dar AllowedIPs continuă să stabilească destinațiile pe care le poate transporta fiecare peer. Pentru un tunel dual-stack complet, folosiți 0.0.0.0/0 și ::/0. Rutele parțiale devin o listă strictă de permisiuni și trebuie să acopere fiecare server DNS din [Interface].
Apple păstrează excepții pentru traficul de control al rețelei și anumite servicii ale dispozitivului. Consultați câmpul IncludeAllNetworks al payloadului VPN înainte de implementare.
Profil la nivelul dispozitivului
Un tunel tradițional la nivelul dispozitivului folosește com.apple.vpn.managed. Înainte de implementare, înlocuiți toți identificatorii, UUID-urile, cheile, adresele și endpoint-urile din exemplu.
<?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ți UUID-uri unice cu uuidgen. Fiecare tunel suplimentar este un alt dicționar com.apple.vpn.managed în lista exterioară PayloadContent.
Pentru o valoare pe o singură linie, înlocuiți cheia WgQuickConfig și șirul multiliniar din exemplu cu:
<key>WgQuickConfigBase64</key>
<string>BASE64_ENCODED_CONF</string>
Înlocuiți în același mod și cheia VylosConfig împreună cu șirul său multiliniar:
<key>VylosConfigBase64</key>
<string>BASE64_ENCODED_SETTINGS_CONF</string>
Profil per aplicație
Folosiți com.apple.vpn.managed.applayer și furnizorul de tunel de pachete Vylos pentru rutarea WireGuard per aplicație. Payload-ul acceptă aceleași variante WgQuickConfig și WgQuickConfigBase64, plus configurările opționale DNS separat din VylosConfig sau VylosConfigBase64.
| Configurare | Valoare |
|---|---|
PayloadType | com.apple.vpn.managed.applayer |
VPNType | VPN |
VPNSubType | io.cbnventures.vylos |
VPN.ProviderBundleIdentifier | io.cbnventures.vylos.packet-tunnel |
VPN.ProviderType | packet-tunnel |
VPNUUID | Valoare unică partajată de fiecare aplicație gestionată atribuită acestui VPN. |
OnDemandMatchAppEnabled | Setați true pentru conectare automată când aplicația atribuită începe comunicarea în rețea. |
Dicționarul următor poate înlocui dicționarul VPN la nivelul dispozitivului din lista PayloadContent a profilului:
<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>
Instalarea payload-ului creează VPN-ul, dar nu îi atribuie aplicații. Continuați cu Configurarea VPN per aplicație pentru a asocia aplicațiile gestionate cu același VPNUUID și pentru câmpurile de rutare acceptate.
Instalarea și eliminarea profilurilor
Livrați profilurile prin MDM pentru administrarea centralizată a proprietății, înlocuirii și eliminării. Dacă MDM nu este disponibil, utilizatorul poate instala direct un profil la nivelul dispozitivului și apoi îl poate elimina din configurările de administrare a profilurilor ale sistemului.
În ambele cazuri, Vylos îl tratează ca element deținut de profil și doar în citire. Metoda acceptată de modificare este actualizarea sau eliminarea profilului, nu editarea tunelului în Vylos.
Pentru experiența finală în aplicație, consultați Implementarea tunelurilor gestionate. Convențiile complete Apple se află în referințele VPN și AppLayerVPN.