.mobileconfig 프로파일로 배포
Apple .mobileconfig 프로파일을 만들어 Vylos WireGuard 터널을 관리형 읽기 전용 시스템 항목으로 설치합니다.
프로파일 유형 선택
| 목표 | VPN 페이로드 유형 | 전달 요구 사항 |
|---|---|---|
| 해당하는 기기 트래픽을 하나의 터널로 라우팅 | com.apple.vpn.managed | 직접 설치하거나 MDM으로 전달합니다. |
| 할당한 관리형 앱을 Vylos로 라우팅 | com.apple.vpn.managed.applayer | VPN 프로파일 자체를 직접 설치하더라도 운영 환경의 앱 할당에는 MDM이 필요합니다. |
두 프로파일 모두 Vylos에 관리형 터널을 만듭니다. 앱 동작을 제어하지만 VPN을 설치하지는 않는 관리형 앱 구성과는 별개입니다.
각 설정의 위치
| 기능 | 프로파일 내 위치 |
|---|---|
| WireGuard 인터페이스 및 피어 | VendorConfig.WgQuickConfigBase64 또는 WgQuickConfig |
| 분할 DNS 및 검색 도메인 | VendorConfig.VylosConfigBase64 또는 VylosConfig |
| 자동 활성화 | VPN.OnDemandEnabled 및 VPN.OnDemandRules |
| VPN 없이 연결 차단 | VPN.IncludeAllNetworks |
| 앱별 활성화 | 최상위 OnDemandMatchAppEnabled 및 VPNUUID |
| Vylos 제한 및 환경설정 | VPN 프로파일이 아닌 관리형 앱 구성 |
아래 예제는 Apple 속성 목록 형식을 사용합니다. MDM이 양식을 제공하는 경우에도 동일한 사전 중첩 구조와 값 유형을 구성하십시오. 점으로 구분된 이름을 그대로 키로 만들지 마십시오.
WireGuard 구성 전달
VPN 페이로드의 VendorConfig 사전에는 다음 키 중 하나만 넣습니다.
| 키 | 값 |
|---|---|
WgQuickConfig | WireGuard .conf 파일의 수정하지 않은 여러 줄 UTF-8 내용입니다. |
WgQuickConfigBase64 | 같은 .conf UTF-8 내용을 한 줄의 Base64로 인코딩한 값입니다. |
MDM 필드가 줄 바꿈을 보존하지 못한다면 WgQuickConfigBase64를 사용하십시오. 페이로드에 두 키가 모두 있으면 Vylos가 의도한 원본을 판단할 수 없어 거부합니다.
Base64는 전송 인코딩이지 암호화가 아닙니다. 인코딩할 값은 .conf 텍스트 자체이며 .vylos 파일, ZIP 아카이브 또는 해당 파일의 경로가 아닙니다.
macOS에서는 다음 명령이 바로 붙여 넣을 수 있는 값을 클립보드에 복사합니다.
base64 -i "tunnel.conf" | tr -d '\n' | pbcopy
base64는 파일을 인코딩하고, tr -d '\n'은 출력의 줄 바꿈을 제거하며, pbcopy는 결과를 클립보드에 넣습니다. MDM의 키-값 편집기에서 결과를 WgQuickConfigBase64 값으로 붙여 넣고 WgQuickConfig는 생략하십시오.
분할 DNS 설정 전달
관리형 터널에서 분할 DNS를 사용하는 경우 동일한 VendorConfig 사전에 다음 선택적 키 중 하나만 추가하십시오.
| 키 | 값 |
|---|---|
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 사전에서 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 페이로드의 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 배열에 또 하나의 com.apple.vpn.managed 사전으로 들어갑니다.
한 줄 값을 사용하려면 예제의 WgQuickConfig 키와 여러 줄 문자열을 다음 내용으로 바꾸십시오.
<key>WgQuickConfigBase64</key>
<string>BASE64_ENCODED_CONF</string>
같은 방식으로 예제의 VylosConfig 키와 여러 줄 문자열도 바꾸십시오.
<key>VylosConfigBase64</key>
<string>BASE64_ENCODED_SETTINGS_CONF</string>
앱별 프로파일
com.apple.vpn.managed.applayer와 Vylos 패킷 터널 제공자를 사용해 앱별 WireGuard 라우팅을 구성합니다. 페이로드는 동일한 WgQuickConfig 및 WgQuickConfigBase64 전송 방식과 VylosConfig 또는 VylosConfigBase64의 선택적 분할 DNS 설정을 지원합니다.
| 설정 | 값 |
|---|---|
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로 설정합니다. |
다음 사전으로 프로파일의 PayloadContent 배열에 있는 기기 전체 VPN 사전을 대체할 수 있습니다.
<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 구성을 계속 읽고 관리형 앱을 동일한 VPNUUID에 연결한 뒤 지원되는 라우팅 필드를 확인하십시오.
프로파일 설치 및 제거
소유권, 교체 및 제거를 중앙에서 관리하려면 MDM으로 프로파일을 전달하십시오. MDM을 사용할 수 없는 경우 사용자가 기기 전체 프로파일을 직접 설치한 뒤 운영 체제의 프로파일 관리 설정에서 제거할 수도 있습니다.
어떤 방식으로 설치해도 Vylos는 프로파일 소유의 읽기 전용 항목으로 취급합니다. 지원되는 변경 방식은 Vylos에서 터널을 편집하는 것이 아니라 프로파일을 업데이트하거나 제거하는 것입니다.
앱에서 최종적으로 표시되는 방식은 관리형 터널 배포를 참조하십시오. Apple의 전체 페이로드 규칙은 VPN 및 AppLayerVPN 참조 문서를 확인하십시오.