إنتقل إلى المحتوى الرئيسي

النشر بملفات .mobileconfig

أنشئ ملف Apple .mobileconfig لتثبيت نفق Vylos WireGuard كعنصر نظام مُدار وللقراءة فقط.

اختيار النوع

الهدفنوع VPNالمتطلبات
توجيه حركة الجهاز المؤهلة عبر نفقcom.apple.vpn.managedتثبيت مباشر أو MDM.
توجيه التطبيقات المُدارة المعيّنةcom.apple.vpn.managed.applayerيتطلب تعيين التطبيقات في الإنتاج MDM حتى مع تثبيت الملف مباشرة.

ينشئ كلاهما نفقًا مُدارًا، بخلاف تكوين التطبيق المُدار الذي لا يثبت VPN.

موضع كل إعداد

الإمكانيةالموضع في ملف التعريف
واجهة WireGuard والأقرانVendorConfig.WgQuickConfigBase64 أو WgQuickConfig
تقسيم DNS ونطاقات البحثVendorConfig.VylosConfigBase64 أو VylosConfig
التفعيل التلقائيVPN.OnDemandEnabled وVPN.OnDemandRules
منع الاتصالات من دون VPNVPN.IncludeAllNetworks
التفعيل لكل تطبيقOnDemandMatchAppEnabled وVPNUUID في المستوى الأعلى
قيود Vylos وتفضيلاتهتكوين التطبيق المُدار، وليس ملف VPN

تستخدم الأمثلة أدناه صيغة قائمة الخصائص من Apple. إذا كان MDM يعرض نموذجًا بدلًا منها، فأنشئ تداخل القواميس وأنواع القيم نفسها، ولا تحوّل الأسماء المنقوطة إلى مفاتيح حرفية.

إرسال تكوين WireGuard

ضع مفتاحًا واحدًا فقط من المفتاحين التاليين داخل قاموس VendorConfig الخاص بحمولة VPN:

المفتاحالقيمة
WgQuickConfigمحتوى UTF-8 متعدد الأسطر لملف WireGuard بصيغة .conf دون تعديل.
WgQuickConfigBase64ترميز Base64 في سطر واحد لمحتوى UTF-8 نفسه من ملف .conf.

استخدم WgQuickConfigBase64 إذا كان حقل MDM لا يحافظ على فواصل الأسطر. يرفض Vylos الحمولة التي تحتوي على المفتاحين معًا لأن مصدر التكوين سيكون ملتبسًا.

Base64 ترميز للنقل وليس تشفيرًا. القيمة المشفّرة هي نص ملف .conf نفسه، وليست ملف .vylos أو أرشيف ZIP أو مسارًا إلى أي منهما.

على macOS، ينسخ الأمر التالي قيمة جاهزة للصق إلى الحافظة:

bash
base64 -i "tunnel.conf" | tr -d '\n' | pbcopy

يحوّل base64 الملف إلى Base64، ويزيل tr -d '\n' فواصل الأسطر من الناتج، ثم يضع pbcopy النتيجة في الحافظة. في محرر مفاتيح MDM، الصق النتيجة في WgQuickConfigBase64 ولا تضف WgQuickConfig.

إرسال إعدادات تقسيم DNS

أضف مفتاحًا واحدًا فقط من المفتاحين الاختياريين التاليين إلى قاموس VendorConfig نفسه عندما يستخدم النفق المُدار تقسيم DNS:

المفتاحالقيمة
VylosConfigنص إعدادات Vylos متعدد الأسطر بترميز UTF-8 وبصيغة settings.conf.
VylosConfigBase64ترميز Base64 في سطر واحد للنص نفسه.

استخدم VylosConfigBase64 مع MDM حتى لا يزيل محرر المفاتيح والقيم فواصل الأسطر أو يغيّرها. أنشئ ملفًا مثل الآتي:

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

ثم انسخ القيمة المرمّزة في macOS:

bash
base64 -i "settings.conf" | tr -d '\n' | pbcopy

الصقها في VylosConfigBase64. يجب أن يحتوي تكوين WireGuard أيضًا على خادم DNS واحد على الأقل في [Interface]. تحدد Domains استعلامات DNS التي تستخدم تلك الخوادم، بينما تضيف SearchDomains لواحق إلى أسماء المضيفين المختصرة. يظل AllowedIPs مسؤولًا عن توجيه حركة البيانات.

مفتاح الإيقاف للأنفاق المُدارة

استخدم مفتاح Apple‏ IncludeAllNetworks داخل قاموس VPN لمنح نفق مُدار على مستوى الجهاز سلوك مفتاح الإيقاف:

xml
<key>IncludeAllNetworks</key>
<integer>1</integer>

ضعه بجانب RemoteAddress وAuthenticationMethod. اضبط التفعيل التلقائي بصورة مستقلة عبر OnDemandRules.

لا يوسّع IncludeAllNetworks مسارات WireGuard في AllowedIPs. فهو يمنع حركة البيانات العادية من تجاوز VPN، بينما تظل AllowedIPs هي التي تحدد الوجهات التي يستطيع كل قرين حملها. استخدم 0.0.0.0/0 و::/0 لنفق كامل ثنائي المكدس؛ وتتحول المسارات الجزئية إلى قائمة سماح صارمة، كما يجب أن تغطي المسارات كل خادم DNS في [Interface].

توجد استثناءات من Apple لحركة التحكم في الشبكة وبعض خدمات الجهاز. راجع حقل IncludeAllNetworks في حمولة VPN قبل النشر.

ملف على مستوى الجهاز

يستخدم النفق التقليدي com.apple.vpn.managed. استبدل كل المعرّفات وUUID والمفاتيح والعناوين ونقاط النهاية في المثال.

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>

أنشئ UUID فريدًا بـuuidgen. وللقيمة ذات السطر الواحد استبدل WgQuickConfig بـ:

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

واستبدل VylosConfig ونصه متعدد الأسطر بالطريقة نفسها:

xml
<key>VylosConfigBase64</key>
<string>BASE64_ENCODED_SETTINGS_CONF</string>

ملف لكل تطبيق

استخدم com.apple.vpn.managed.applayer مع موفّر نفق الحزم في Vylos لتوجيه WireGuard لكل تطبيق. تقبل الحمولة البديلين نفسيهما: WgQuickConfig وWgQuickConfigBase64، إضافة إلى إعدادات تقسيم DNS الاختيارية في VylosConfig أو VylosConfigBase64.

الإعدادالقيمة
PayloadTypecom.apple.vpn.managed.applayer
VPNTypeVPN
VPNSubTypeio.cbnventures.vylos
VPN.ProviderBundleIdentifierio.cbnventures.vylos.packet-tunnel
VPN.ProviderTypepacket-tunnel
VPNUUIDقيمة فريدة مشتركة مع كل تطبيق مُدار معيّن إلى شبكة VPN هذه.
OnDemandMatchAppEnabledالقيمة true للاتصال عندما يبدأ تطبيق معيّن حركة مرور على الشبكة.

يمكن أن يحل القاموس التالي محل قاموس VPN على مستوى الجهاز داخل مصفوفة PayloadContent في ملف التعريف:

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>

ينشئ هذا VPN ولا يعيّن التطبيقات. راجع تكوين VPN لكل تطبيق.

التثبيت والإزالة

استخدم MDM للإدارة المركزية، أو ثبّت ملف الجهاز مباشرة عند عدم توفره ثم أزله من إعدادات ملفات التعريف. يظل النفق مملوكًا للملف وللقراءة فقط؛ غيّره بتحديث الملف أو إزالته. راجع نشر الأنفاق المُدارة ومرجعي Apple VPN وAppLayerVPN.