.mobileconfig प्रोफ़ाइल से डिप्लॉय करें
Vylos WireGuard टनल को प्रबंधित, केवल पढ़ने योग्य सिस्टम आइटम के रूप में इंस्टॉल करने के लिए Apple .mobileconfig प्रोफ़ाइल बनाएँ।
प्रोफ़ाइल प्रकार चुनें
| लक्ष्य | VPN payload प्रकार | आवश्यकता |
|---|---|---|
| योग्य डिवाइस ट्रैफ़िक को एक टनल से रूट करना | com.apple.vpn.managed | सीधे इंस्टॉल या MDM से डिलीवर करें। |
| असाइन किए गए प्रबंधित ऐप को Vylos से रूट करना | com.apple.vpn.managed.applayer | VPN प्रोफ़ाइल सीधे इंस्टॉल होने पर भी उत्पादन ऐप असाइनमेंट के लिए MDM चाहिए। |
दोनों Vylos में प्रबंधित टनल बनाते हैं। ये ऐप व्यवहार नियंत्रित करने वाले प्रबंधित ऐप कॉन्फ़िगरेशन से अलग हैं।
हर सेटिंग कहाँ रखी जाती है
| क्षमता | प्रोफ़ाइल में स्थान |
|---|---|
| WireGuard इंटरफ़ेस और पीयर | VendorConfig.WgQuickConfigBase64 या WgQuickConfig |
| स्प्लिट DNS और खोज डोमेन | VendorConfig.VylosConfigBase64 या VylosConfig |
| स्वचालित सक्रियण | VPN.OnDemandEnabled और VPN.OnDemandRules |
| VPN के बिना कनेक्शन रोकना | VPN.IncludeAllNetworks |
| प्रति-ऐप सक्रियण | शीर्ष स्तर के OnDemandMatchAppEnabled और VPNUUID |
| Vylos प्रतिबंध और प्राथमिकताएँ | प्रबंधित ऐप कॉन्फ़िगरेशन, VPN प्रोफ़ाइल नहीं |
नीचे दिए गए उदाहरण Apple के property-list रूप का उपयोग करते हैं। यदि MDM इसके बजाय फ़ॉर्म दिखाता है, तो वही dictionary nesting और value types बनाएँ; डॉट वाले नामों को वास्तविक कुंजियाँ न बनाएँ।
WireGuard कॉन्फ़िगरेशन भेजना
VPN payload के VendorConfig में केवल एक कुंजी रखें:
| कुंजी | मान |
|---|---|
WgQuickConfig | WireGuard .conf का बिना बदला बहु-पंक्ति UTF-8 कंटेंट। |
WgQuickConfigBase64 | उसी UTF-8 कंटेंट का एक-पंक्ति Base64 एन्कोडिंग। |
MDM पंक्ति-विराम न बचाए तो WgQuickConfigBase64 उपयोग करें। दोनों कुंजियाँ होने पर Vylos अस्पष्ट स्रोत के कारण payload अस्वीकार करता है। Base64 एन्क्रिप्शन नहीं है और केवल .conf टेक्स्ट को एन्कोड करता है।
base64 -i "tunnel.conf" | tr -d '\n' | pbcopy
base64 फ़ाइल एन्कोड करता है, tr -d '\n' पंक्ति-विराम हटाता है और pbcopy परिणाम क्लिपबोर्ड में रखता है।
स्प्लिट DNS सेटिंग्स भेजना
प्रबंधित टनल में स्प्लिट DNS उपयोग होने पर इसी VendorConfig dictionary में निम्न में से ठीक एक वैकल्पिक कुंजी जोड़ें:
| कुंजी | मान |
|---|---|
VylosConfig | settings.conf रूप में Vylos सेटिंग्स का मल्टीलाइन UTF-8 पाठ। |
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 dictionary में 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 payload का 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 array में अलग com.apple.vpn.managed शब्दकोश है। एक-पंक्ति मान के लिए WgQuickConfig को इससे बदलें:
<key>WgQuickConfigBase64</key>
<string>BASE64_ENCODED_CONF</string>
इसी तरह VylosConfig कुंजी और उसके मल्टीलाइन पाठ को बदलें:
<key>VylosConfigBase64</key>
<string>BASE64_ENCODED_SETTINGS_CONF</string>
प्रति-ऐप प्रोफ़ाइल
प्रति-ऐप WireGuard रूटिंग के लिए com.apple.vpn.managed.applayer और Vylos पैकेट-टनल प्रदाता का उपयोग करें। Payload WgQuickConfig या WgQuickConfigBase64 के साथ वैकल्पिक स्प्लिट DNS सेटिंग्स के लिए VylosConfig या VylosConfigBase64 भी स्वीकार करता है।
| सेटिंग | मान |
|---|---|
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 को असाइन हर प्रबंधित ऐप के साथ साझा अनूठा मान। |
OnDemandMatchAppEnabled | ऐप का नेटवर्क ट्रैफ़िक शुरू होते ही जोड़ने के लिए true। |
<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 बनाता है, ऐप असाइन नहीं करता। ऐप को वही VPNUUID देने के लिए प्रति-ऐप VPN कॉन्फ़िगर करें देखें।
प्रोफ़ाइल इंस्टॉल और हटाना
केंद्रीय स्वामित्व, बदलाव और हटाने के लिए MDM उपयोग करें। MDM न हो तो उपयोगकर्ता डिवाइस-वाइड प्रोफ़ाइल सीधे इंस्टॉल करके सिस्टम की प्रोफ़ाइल सेटिंग्स से हटा सकता है। Vylos इसे प्रोफ़ाइल-स्वामित्व वाला और केवल पढ़ने योग्य मानता है; बदलाव प्रोफ़ाइल को अपडेट/हटाकर करें। ऐप अनुभव के लिए प्रबंधित टनल डिप्लॉय करें और Apple नियमों के लिए VPN व AppLayerVPN देखें।