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
| Cel | Typ danych VPN | Wymagania |
|---|---|---|
| Kierowanie kwalifikującego się ruchu urządzenia jednym tunelem | com.apple.vpn.managed | Instalacja bezpośrednia lub dostarczenie przez MDM. |
| Kierowanie przypisanych aplikacji zarządzanych przez Vylos | com.apple.vpn.managed.applayer | Przypisanie 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
| Funkcja | Miejsce w profilu |
|---|---|
| Interfejs i peery WireGuard | VendorConfig.WgQuickConfigBase64 lub WgQuickConfig |
| Podzielony DNS i domeny wyszukiwania | VendorConfig.VylosConfigBase64 lub VylosConfig |
| Automatyczna aktywacja | VPN.OnDemandEnabled i VPN.OnDemandRules |
| Blokowanie połączeń bez VPN | VPN.IncludeAllNetworks |
| Aktywacja dla aplikacji | OnDemandMatchAppEnabled i VPNUUID na najwyższym poziomie |
| Ograniczenia i preferencje Vylos | Konfiguracja 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:
| Klucz | Wartość |
|---|---|
WgQuickConfig | Niezmieniona, wielowierszowa zawartość UTF-8 pliku WireGuard .conf. |
WgQuickConfigBase64 | Jednowierszowe 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:
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:
| Klucz | Wartość |
|---|---|
VylosConfig | Wielowierszowy tekst UTF-8 z ustawieniami Vylos w formacie settings.conf. |
VylosConfigBase64 | Jednowierszowe 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:
[SplitDNS]
Domains = corp.example.com, *.internal.example.com
SearchDomains = example.com
Następnie skopiuj zakodowaną wartość w systemie macOS:
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:
<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 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ą:
<key>WgQuickConfigBase64</key>
<string>BASE64_ENCODED_CONF</string>
W ten sam sposób zastąp także klucz VylosConfig i jego wielowierszowy ciąg:
<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.
| Ustawienie | Wartość |
|---|---|
PayloadType | com.apple.vpn.managed.applayer |
VPNType | VPN |
VPNSubType | io.cbnventures.vylos |
VPN.ProviderBundleIdentifier | io.cbnventures.vylos.packet-tunnel |
VPN.ProviderType | packet-tunnel |
VPNUUID | Unikalna wartość wspólna dla każdej aplikacji zarządzanej przypisanej do VPN. |
OnDemandMatchAppEnabled | Ustaw 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:
<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.