Przejdź do głównej zawartości

Wdrażanie za pomocą profili .mobileconfig

Utwórz profil Apple .mobileconfig, aby zainstalować tunel Vylos WireGuard jako zarządzany, systemowy element tylko do odczytu.

Wybór typu profilu

CelTyp danych VPNWymagania
Kierowanie kwalifikującego się ruchu urządzenia jednym tunelemcom.apple.vpn.managedInstalacja bezpośrednia lub dostarczenie przez MDM.
Kierowanie przypisanych aplikacji zarządzanych przez Vyloscom.apple.vpn.managed.applayerPrzypisanie aplikacji w środowisku produkcyjnym wymaga MDM, nawet jeśli sam profil VPN zainstalowano ręcznie.

Oba profile tworzą w Vylos tunel zarządzany. Nie należy ich mylić z zarządzaną konfiguracją aplikacji, która steruje zachowaniem aplikacji, ale nie instaluje VPN.

Miejsce każdej konfiguracji

FunkcjaMiejsce w profilu
Interfejs i peery WireGuardVendorConfig.WgQuickConfigBase64 lub WgQuickConfig
Podzielony DNS i domeny wyszukiwaniaVendorConfig.VylosConfigBase64 lub VylosConfig
Automatyczna aktywacjaVPN.OnDemandEnabled i VPN.OnDemandRules
Blokowanie połączeń bez VPNVPN.IncludeAllNetworks
Aktywacja dla aplikacjiOnDemandMatchAppEnabled i VPNUUID na najwyższym poziomie
Ograniczenia i preferencje VylosKonfiguracja zarządzana aplikacji, nie profil VPN

Poniższe przykłady używają formatu listy właściwości Apple. Jeśli MDM wyświetla formularz, odtwórz to samo zagnieżdżenie słowników i typy wartości; nie twórz dosłownych kluczy z nazw rozdzielonych kropkami.

Przekazywanie konfiguracji WireGuard

Umieść tylko jeden z poniższych kluczy w słowniku VendorConfig danych VPN:

KluczWartość
WgQuickConfigNiezmieniona, wielowierszowa zawartość UTF-8 pliku WireGuard .conf.
WgQuickConfigBase64Jednowierszowe kodowanie Base64 tej samej zawartości UTF-8 pliku .conf.

Jeśli pole MDM nie zachowuje podziałów wiersza, użyj WgQuickConfigBase64. Gdy dane zawierają oba klucze, Vylos je odrzuci, ponieważ nie można jednoznacznie wybrać źródła.

Base64 to kodowanie transportowe, a nie szyfrowanie. Kodowana jest treść .conf, a nie plik .vylos, archiwum ZIP ani ścieżka do któregoś z tych plików.

Na macOS poniższe polecenie kopiuje do schowka wartość gotową do wklejenia:

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

base64 koduje plik, tr -d '\n' usuwa podziały wiersza z wyniku, a pbcopy umieszcza go w schowku. W edytorze klucz-wartość MDM wklej wynik jako WgQuickConfigBase64 i pomiń WgQuickConfig.

Przekazywanie ustawień podzielonego DNS

Gdy tunel zarządzany używa podzielonego DNS, dodaj dokładnie jeden z poniższych opcjonalnych kluczy do tego samego słownika VendorConfig:

KluczWartość
VylosConfigWielowierszowy tekst UTF-8 z ustawieniami Vylos w formacie settings.conf.
VylosConfigBase64Jednowierszowe kodowanie Base64 tego samego tekstu.

W MDM używaj VylosConfigBase64, aby edytor klucz-wartość nie usunął ani nie zmienił znaków nowego wiersza. Utwórz plik taki jak poniżej:

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

Następnie skopiuj zakodowaną wartość w systemie macOS:

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

Wklej ją jako VylosConfigBase64. Konfiguracja WireGuard musi też zawierać co najmniej jeden serwer DNS w sekcji [Interface]. Domains wybiera zapytania korzystające z tych serwerów, SearchDomains dodaje przyrostki do krótkich nazw hostów, a AllowedIPs nadal kontroluje trasowanie ruchu.

Wyłącznik awaryjny tuneli zarządzanych

Użyj klucza Apple IncludeAllNetworks w słowniku VPN, aby nadać zarządzanemu tunelowi ogólnosystemowemu działanie wyłącznika awaryjnego:

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

Umieść go obok RemoteAddress i AuthenticationMethod. Automatyczną aktywację skonfiguruj oddzielnie za pomocą OnDemandRules.

IncludeAllNetworks nie rozszerza tras WireGuard w AllowedIPs. Zapobiega omijaniu VPN przez zwykły ruch, ale AllowedIPs nadal określa miejsca docelowe dostępne przez każdy peer. Dla pełnego tunelu dual-stack użyj 0.0.0.0/0 i ::/0. Trasy częściowe stają się ścisłą listą dozwolonych miejsc, a trasy muszą również obejmować każdy serwer DNS z [Interface].

Apple zachowuje wyjątki dla ruchu sterującego siecią i niektórych usług urządzenia. Przed wdrożeniem przeczytaj opis pola IncludeAllNetworks w ładunku VPN.

Profil ogólnosystemowy

Tradycyjny tunel ogólnosystemowy używa com.apple.vpn.managed. Przed wdrożeniem zastąp wszystkie przykładowe identyfikatory, UUID, klucze, adresy i punkty końcowe.

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>

Wygeneruj unikalne UUID za pomocą uuidgen. Każdy dodatkowy tunel to kolejny słownik com.apple.vpn.managed w zewnętrznej tablicy PayloadContent.

Aby użyć wartości jednowierszowej, zastąp przykładowy klucz WgQuickConfig i wielowierszowy ciąg następującą zawartością:

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

W ten sam sposób zastąp także klucz VylosConfig i jego wielowierszowy ciąg:

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

Profil dla aplikacji

Do routingu WireGuard dla aplikacji użyj com.apple.vpn.managed.applayer i dostawcy tunelu pakietowego Vylos. Dane obsługują te same warianty WgQuickConfig i WgQuickConfigBase64 oraz opcjonalne ustawienia podzielonego DNS w VylosConfig lub VylosConfigBase64.

UstawienieWartość
PayloadTypecom.apple.vpn.managed.applayer
VPNTypeVPN
VPNSubTypeio.cbnventures.vylos
VPN.ProviderBundleIdentifierio.cbnventures.vylos.packet-tunnel
VPN.ProviderTypepacket-tunnel
VPNUUIDUnikalna wartość wspólna dla każdej aplikacji zarządzanej przypisanej do VPN.
OnDemandMatchAppEnabledUstaw true, aby łączyć automatycznie, gdy przypisana aplikacja rozpoczyna komunikację.

Poniższy słownik może zastąpić słownik VPN ogólnosystemowego w tablicy PayloadContent profilu:

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>

Instalacja tych danych tworzy VPN, ale nie przypisuje do niego aplikacji. Przejdź do Konfiguracji VPN dla aplikacji, aby powiązać aplikacje zarządzane z tym samym VPNUUID i poznać obsługiwane pola routingu.

Instalowanie i usuwanie profili

Dostarczaj profile przez MDM, aby centralnie zarządzać własnością, zastępowaniem i usuwaniem. Gdy MDM nie jest dostępny, użytkownik może też bezpośrednio zainstalować profil ogólnosystemowy, a następnie usunąć go w systemowych ustawieniach zarządzania profilami.

W obu przypadkach Vylos traktuje tunel jako należący do profilu i tylko do odczytu. Obsługiwaną metodą zmiany jest aktualizacja lub usunięcie profilu, a nie edycja tunelu w Vylos.

Efekt w aplikacji opisuje strona Wdrażanie zarządzanych tuneli. Pełne zasady Apple znajdziesz w dokumentacji VPN i AppLayerVPN.