이 문서에서는 클라이언트 운영 체제에서 DNS 쿼리를 처리하는 방법 및 Cisco IOS® Secure Client를 사용한 도메인 이름 확인에 미치는 영향에 대해 설명합니다.
이 문서에 대한 특정 요건이 없습니다.
이 문서는 특정 소프트웨어 및 하드웨어 버전으로 한정되지 않습니다. 실습에서는 Windows, macOS, Linux 및 Apple iOS에서 Secure Firewall ASA/FTD 그룹 정책 및 Cisco Secure Client를 사용합니다.
이 문서의 정보는 특정 랩 환경의 디바이스를 토대로 작성되었습니다. 이 문서에 사용된 모든 디바이스는 초기화된(기본) 컨피그레이션으로 시작되었습니다. 현재 네트워크가 작동 중인 경우 모든 명령의 잠재적인 영향을 미리 숙지하시기 바랍니다.
이 문서에서는 스플릿 터널링 또는 전체 터널링과 함께 Cisco Secure Client(이전의 Cisco AnyConnect)를 사용할 때 클라이언트 운영 체제에서 DNS 쿼리를 처리하는 방법 및 도메인 이름 확인에 미치는 영향에 대해 설명합니다. Cisco Secure Firewall ASA 및 FTD(이전의 ASA)와 관련된 VPN 헤드엔드 split-dns, dns-server, split-tunnel-all-dns와 같은 그룹 정책 설정은 달리 명시되지 않는 한 둘 다에 적용됩니다.
섹션에서 명시적으로 이전 클라이언트 릴리스를 참조하는 경우 Secure Client 4.2 이상(현재 Secure Client 5.x 릴리스 포함)에 대해 설명된 동작이 적용됩니다. Cisco AnyConnect 4.x 단종 지원되는 DNS 및 터널링 기능을 위해 Cisco Secure Client로 마이그레이션합니다.
DNS 확인 동작은 세 가지 요인에 따라 달라집니다.
split-include 터널링 명령을 실행할 때 그룹 정책에서 사용할 수 있는 3가지 DNS 옵션은 다음과 같습니다.
| 모드로 들어갑니다 |
설명 |
|---|---|
| 스플릿 DNS | 헤드엔드에 구성된 도메인 이름과 일치하는 DNS 쿼리(스플릿-dns)가 터널을 통해 VPN DNS 서버(dns-server)로 전송됩니다. 다른 모든 쿼리는 클라이언트 OS 확인자 및 물리적 어댑터 DNS 서버를 사용합니다. |
| Tunnel-all-DNS | 헤드엔드에서 정의한 DNS 서버에 대한 DNS 트래픽만 허용됩니다. 그룹 정책에서 split-tunnel-all-dns enable로 구성합니다. |
| 표준 DNS | 모든 DNS 쿼리는 먼저 헤드엔드에서 정의한 VPN DNS 서버로 전송됩니다. 부정적인(NXDOMAIN 또는 응답 없음) 응답에서 확인자는 물리적 어댑터에서 DNS 서버를 시도할 수도 있습니다. |
참고: split-tunnel-all-dns 명령은 ASA 버전 8.2(5)에서 처음 구현되었습니다. 그 이전에는 스플릿 DNS 또는 표준 DNS만 사용할 수 있었습니다. 모든 경우 터널을 통과하도록 정의된 DNS 쿼리는 헤드엔드에 의해 정의된 DNS 서버로 전달됩니다. 헤드엔드에 정의된 DNS 서버가 없으면 터널의 DNS 설정이 비어 있습니다.
스플릿 DNS가 정의되지 않은 경우 모든 DNS 쿼리는 헤드엔드에 의해 정의된 DNS 서버로 전송됩니다(이 문서의 뒷부분에서 설명하는 OS 관련 동작에 따름). 그러나 이 문서에 설명된 동작은 운영 체제(OS)에 따라 다를 수 있습니다.
참고: 클라이언트에서 이름 확인을 테스트할 때는 NSLookup 또는 dig를 사용하지 마십시오. 대신 웹 브라우저를 사용하거나 ping 명령을 실행합니다. NSLookup과 dig는 대부분의 애플리케이션이 사용하는 것과 동일한 방식으로 OS DNS 확인자 스텁을 사용하지 않습니다. Secure Client는 특정 인터페이스를 통해 모든 DNS 요청을 강제하지 않습니다. 스플릿 DNS 및 tunnel-all-DNS 정책을 기반으로 요청을 허용하거나 거부합니다.
올바른 장애 조치 동작을 관찰하려면 네이티브 OS DNS 확인자(브라우저, ping 및 대부분의 비즈니스 앱)를 사용하는 애플리케이션에서만 테스트하십시오. 자체 DNS 확인(NSLookup, dig 및 일부 맞춤형 앱)을 수행하는 도구는 클라이언트가 올바르게 작동하는 경우에도 오해의 소지가 있는 오류를 표시할 수 있습니다.
AnyConnect 릴리스 2.4에는 진정한 스플릿 DNS가 아니며 레거시 IPsec 클라이언트에서도 발견된 스플릿 DNS 폴백(best-effort split DNS)이 도입되었습니다.
최선형(폴백) 동작:
따라서 레거시 기능을 스플릿 터널링을 위한 DNS 폴백이라고 하는데, 이는 진정한 스플릿 DNS가 아닙니다. Secure Client는 일치하는 스플릿 DNS 도메인 쿼리만 터널에 들어가도록 보장하지만 최종 해결을 위해 OS 확인자 동작을 계속 사용합니다.
보안 문제: VPN DNS 서버가 NXDOMAIN을 반환하거나 확인하지 못하면 비공개 도메인 이름이 공용 DNS 서버로 유출될 수 있습니다. 확인자가 물리적 어댑터에서 다시 시도합니다.
진정한 스플릿 DNS: Cisco 버그 ID CSCtn14578
AnyConnect 3.0(4235)의 Microsoft Windows에서 해결되고 Secure Client 4.2+)에서 유지됨:
참고: 등록된 Cisco 사용자만 내부 Cisco 버그 툴 및 자세한 버그 정보에 액세스할 수 있습니다.
스플릿 터널링이 비활성화되면(tunnel-all 컨피그레이션) 터널을 통해 DNS 트래픽이 엄격하게 허용됩니다.
tunnel-all-DNS 컨피그레이션(그룹 정책에서 split-tunnel-all-dns 활성화)은 터널을 통해 모든 DNS 조회를 전송하며, 일부 스플릿 터널링 형태도 구성되며, DNS 트래픽은 터널 인터페이스를 통해 엄격하게 허용됩니다.
이는 Microsoft Windows에서 한 번의 주의를 통해 여러 플랫폼에서 일관되며, tunnel-all 또는 tunnel-all-DNS가 구성된 경우 Secure Client에서는 DNS 트래픽을 보안 게이트웨이에 구성된 DNS 서버로 엄격하게 허용합니다(VPN 어댑터에 적용됨). 이러한 보안 향상은 진정한 스플릿 DNS로 구현되었습니다. 문제가 있는 경우(예: DNS 업데이트/등록이 비 VPN DNS 서버에 도달해야 함) 다음 단계를 완료하십시오.
스플릿 터널링과 tunnel-all-DNS가 모두 활성화된 경우 DNS는 커널 레벨에서 인터셉트되며 올바른 VPN 인터페이스를 전송하지 않을 경우 차단됩니다. 암호화된 DNS를 사용할 수 없는 네트워크에서는 Secure Client Umbrella 모듈(이전의 AnyConnect Roaming Security)이 영향을 받을 수 있습니다. tunnel-all-DNS는 VPN을 통해 DNS를 요구하지만 모듈은 LAN 인터페이스를 통해 표준 DNS를 시도할 수 있기 때문입니다.
기본적으로 Umbrella 모듈은 일반적으로 tunnel-all-DNS에 의해 차단되지 않는 암호화된 DNS(UDP 포트 443)를 사용합니다. 이 문제는 주로 암호화를 사용할 수 없고 일반 DNS를 사용하는 경우에 나타납니다.
권장 사항: Umbrella 모듈과 함께 tunnel-all-DNS를 사용하는 경우 Cisco Umbrella 확인자 주소를 스플릿-포함 목록에 추가합니다. 또는 Enable Tunnel All DNS for Secure Client with Umbrella Module 문서(문서 ID: 224809)
이 Microsoft Windows 문제는 다음과 같은 조건에서 가장 널리 발생합니다.
이로 인해 이름 확인이 상당히 지연될 수 있으며, 특히 헤드엔드가 여러 DNS 접미사를 푸시할 때 더욱 그러합니다. 해결 프로그램은 긍정적인 응답을 받을 때까지 접미사와 서버를 거쳐야 합니다.
이 문제는 AnyConnect 3.0(4235) 이상 Secure Client 릴리스에서 해결되었습니다. 자세한 내용은 Cisco 버그 ID CSCtq02141 및 Cisco 버그 ID CSCtn14578을 참조하십시오.
참고: 등록된 Cisco 사용자만 내부 Cisco 버그 도구에 액세스할 수 있습니다.
로컬 DNS에서 물리적 어댑터를 사용할 수 있도록 IP 주소에 대해 스플릿 제외 터널링을 활성화합니다. 링크-로컬 서브넷 169.254.0.0/16의 주소는 일반적으로 VPN을 통과할 가능성이 낮은 해당 주소에 대한 트래픽으로 사용됩니다.
스플릿 제외 터널링을 활성화한 후 클라이언트 프로파일 또는 클라이언트에서 로컬 LAN 액세스를 활성화하고 tunnel-all-DNS를 비활성화합니다. 다음은 ASA/FTD 컨피그레이션의 예입니다.
access-list acl_linklocal_169.254.1.1 standard permit host 169.254.1.1
group-policy gp_access-14 attributes
split-tunnel-policy excludespecified
split-tunnel-network-list value acl_linklocal_169.254.1.1
split-tunnel-all-dns disable
exit
클라이언트 프로필 XML:
true
Secure Client GUI에서도 이 기능을 활성화할 수 있습니다. VPN 사용 시 로컬(LAN) 액세스 허용 → 기본 설정
Secure Client에 대해 스플릿 터널링(스플릿 DNS 없음)을 사용하는 DNS는 클라이언트 운영 체제에 따라 다르게 처리됩니다. 이 섹션에서는 이러한 차이점에 대해 설명합니다.
Windows의 경우 DNS 설정은 네트워크 인터페이스마다 다릅니다. 스플릿 터널링을 사용하면 VPN 터널 어댑터에서 장애가 발생한 후 DNS 쿼리가 물리적 어댑터 DNS 서버로 폴백될 수 있습니다. 스플릿 터널링을 스플릿 DNS 없이 사용하면 내부 및 외부 확인 모두 확인자가 외부 DNS 서버로 폴백될 수 있으므로 작동할 수 있습니다. Cisco 버그 ID CSCuf07885에 대한 수정 후 릴리스 4.2에서 Windows용 Secure Client가 크게 변경되었습니다. 이 동작은 Secure Client 5.x에서 변경되지 않습니다.
참고: 등록된 Cisco 사용자만 내부 Cisco 버그 도구에 액세스할 수 있습니다.
사전 보안 클라이언트 4.2(AnyConnect 4.1 이하):
Secure Client 4.2 이상
Secure Client 드라이버는 네이티브 DNS 확인자를 방해하지 않습니다. 네트워크 어댑터 주문을 준수하는 문제 해결 VPN이 연결된 경우 보안 클라이언트가 기본 어댑터입니다.
DNS 쿼리는 먼저 터널을 통해 전송됩니다. 확인되지 않은 경우 해결 프로그램은 공용 인터페이스를 시도할 수 있습니다. 스플릿-포함 액세스 목록에는 4.2 이전 릴리스의 터널 DNS 서버를 커버하는 서브넷이 포함되어야 합니다. Secure Client 4.2부터 터널 DNS 서버에 대한 호스트 경로가 스플릿-포함 네트워크(보안 경로)로 자동으로 추가되므로 스플릿-포함 ACL에 더 이상 명시적 터널 DNS 서버 서브넷이 필요하지 않습니다.
split-includes와 동일한 확인자 동작을 먼저 터널링한 다음 공용 인터페이스 폴백을 수행합니다. 스플릿 제외 액세스 목록은 터널 DNS 서버를 다루는 서브넷을 포함하지 않아야 합니다. Secure Client 4.2부터 터널 DNS 서버에 대한 자동 호스트 경로는 일반적인 split-exclude 오구성을 방지합니다.
Windows의 Split-DNS에는 split-include 터널링(split-tunnel-policy tunnelspecified)이 필요합니다. 스플릿 DNS 컨피그레이션에 대해서는 스플릿 제외 전용 터널 정책을 지원하지 않습니다.
Pre-Secure Client 4.2:
Secure Client 4.2 이상(Windows에서 진정한 스플릿 DNS):
Secure Client 5.x 관리 설명서는 스플릿 제외 컨피그레이션에 대해 스플릿 DNS를 추가합니다. Secure Client 5.x Administrator Guide — Configure Split DNS for Split Exclude Tunneling for headend and policy requirements를 참조하십시오. 스플릿 DNS가 활성화되면 OS 레벨 시행 규칙은 계속 적용됩니다.
HTTPS를 통한 DNS(DoH) 또는 TLS를 통한 DNS(DoT)를 사용하는 애플리케이션 또는 OS 기능은 Secure Client가 필터링하는 Windows 스텁 확인자 경로를 우회할 수 있습니다. 스플릿 DNS가 특정 앱에 대해 실패한 것으로 나타나지만 브라우저에서 작동하는 경우, 해당 앱이 암호화된 DNS 또는 사용자 지정 DNS를 사용하는지 확인합니다. 표준 스플릿 DNS 테스트는 NSLookup/dig가 아닌 OS 확인자(브라우저, ping)를 사용해야 합니다.
macOS에서는 DNS 설정이 전역(인터페이스별 아님)입니다. 스플릿 DNS 없이 스플릿 터널링을 사용하는 경우 DNS 쿼리가 예상대로 터널 외부의 DNS 서버에 도달할 수 없는 경우가 많습니다. 공용 경로를 통해 외부 이름이 아니라 내부 이름만 확인할 수 있습니다. 이는 Cisco 버그 ID CSCtf20226 및 Cisco 버그 ID CSCtz86314에 설명되어 있습니다.
해결 방법:
macOS의 스플릿 DNS는 다음 조건에 따라 AnyConnect 3.1 이상에서 지원됩니다.
참고: Secure Client는 기본적으로 macOS에서 /etc/resolv.conf을 통해 이름 확인을 관리하지 않습니다. OS 레벨 DNS 설정을 구성합니다. macOS는 호환성을 위해 resolv.conf를 업데이트 유지할 수 있습니다. scutil —dns를 실행하여 유효한 DNS 컨피그레이션을 확인합니다.
Secure Client가 연결된 경우 터널 DNS 서버만 시스템 DNS 컨피그레이션에 남습니다. 요청은 터널 DNS 서버로만 진행됩니다.
Secure Client는 네이티브 확인자를 방해하지 않습니다. 터널 DNS 서버는 공용 확인자보다 선호되므로 첫 번째 쿼리 시도가 터널을 통과합니다. DNS는 macOS에서 전역적이므로 쿼리가 터널 외부의 공용 DNS를 안정적으로 사용하지 않습니다(Cisco 버그 ID: CSCtf20226).
Secure Client 4.2부터는 터널 DNS 서버의 호스트 경로가 보안 경로로 자동으로 추가됩니다.
다음과 같은 경우 진정한 스플릿 DNS(Windows와 유사)가 적용됩니다.
진정한 스플릿 DNS는 일치하는 스플릿 DNS 도메인이 터널을 통해서만 확인되며 외부 리졸버로 유출되지 않음을 의미합니다.
스플릿 DNS가 한 개의 프로토콜에 대해서만 활성화되고 클라이언트 주소가 다른 프로토콜에 대해 할당된 경우 스플릿 터널링에 대한 DNS 대안만 적용됩니다. Secure Client는 터널을 통해 일치하는 쿼리를 허용하지만(다른 쿼리는 장애 조치를 강제하는 것을 거부할 수 있음), 공용 어댑터를 통해 암호화되지 않은 상태로 전송된 스플릿 DNS 도메인 쿼리의 유출을 완전히 방지할 수는 없습니다.
플랫폼 지원(Secure Client 관리 설명서): Windows 및 macOS에서는 전체 스플릿 DNS가 지원됩니다. Linux는 지원이 제한적입니다(Linux 섹션 참조).
보안 클라이언트가 연결되면 터널 DNS 서버만 시스템 DNS 컨피그레이션에서 유지 관리됩니다.
Secure Client는 네이티브 확인자를 방해하지 않습니다. 터널 DNS 서버가 선호됩니다. 초기 확인 시도는 터널을 통과합니다.
스플릿 DNS가 활성화된 경우 Linux에서는 스플릿 터널링에 대한 DNS 대안만 적용됩니다.
Secure Client 관리 설명서는 Linux에서 제한된 스플릿 DNS를 기록합니다. 터널링된 DNS 요청만 스플릿 DNS 정책의 적용을 받습니다. 터널 외부의 일부 쿼리는 스플릿 DNS 정책을 준수할 수 없습니다.
Secure Client는 tunnel-from-any-source 사용자 지정 특성을 지원하므로 소스 주소가 있는 패킷을 VM 인스턴스 또는 Docker 컨테이너 내에서 분할 포함 또는 분할 제외 모드로 라우팅할 수 있습니다. 컨피그레이션에 대한 자세한 내용은 Secure Client 5.x 관리자 설명서를 참조하십시오.
iOS 동작은 macOS와 다르며 Windows와 동일하지 않습니다. 스플릿 터널링이 스플릿 DNS 없이 구성된 경우 DNS 쿼리는 일반적으로 Windows와 동일한 대체 패턴이 아니라 디바이스에 대해 정의된 전역 DNS 서버를 사용합니다.
실질적인 영향: 스플릿 DNS 도메인 항목은 스플릿 DNS 없이 스플릿 터널링을 사용할 때 안정적인 내부 이름 확인을 위해 필요한 경우가 많습니다.
기록 수정: Cisco 버그 ID CSCtq09624 - (iOS 2.5.4038 이상용 AnyConnect) 현재 iOS용 보안 클라이언트는 동일한 일반 요구 사항을 준수합니다. windows 스타일 대안에 의존하지 않고 split-include/split and exclude를 사용하는 경우 내부 도메인에 대해 split DNS를 구성합니다.
참고: iOS DNS 쿼리는 .local 도메인을 무시합니다(Cisco 버그 ID CSCts89292.).
Apple은 이것을 설계된 행동으로 간주합니다. iOS에서 표준 스플릿 DNS를 통한 .로컬 확인은 기대하지 마십시오. iOS에서는 스플릿 터널링이 특정 스플릿 DNS 목록 컨피그레이션과 결합되는 경우 Secure Client 스플릿 DNS 동작도 다른 플랫폼과 다릅니다. iOS별 정책 조합(split-dns none, default-domain 등)에 대해서는 Secure Client Administrator Guide(보안 클라이언트 관리자 가이드) 섹션 Split DNS Resolution Behavior with Split Tunnel(스플릿 터널로 DNS 확인 동작 스플릿)을 참조하십시오.
동적 스플릿 터널링은 연결 시 또는 온디맨드 시 FQDN을 확인하고, 지정된 도메인에 대한 트래픽에 대한 라우팅 및 필터를 조정합니다. 이는 고정 IP 목록 없이 터널에 포함되거나 터널에서 제외됩니다.
| 기능 | 설명 |
|---|---|
| 동적 분할 제외 | 도메인(example.com)은 응용 프로그램에서 해당 이름을 확인할 때 런타임에 터널에서 제외됩니다. |
| 동적 분할 포함 | 도메인은 터널에 동적으로 포함됩니다. |
| 향상된 동적 분할 | 포함/제외 도메인 목록을 우선순위 규칙과 결합했습니다(예: example.com 제외, mail.example.com 포함). |
동적 스플릿 터널링에서는 DNS 확인을 사용하여 라우팅 변경 사항을 적용합니다. 헤드엔드의 Secure Client 사용자 지정 특성(예: dynamic-split-exclude-domains, dynamic-split-include-domains)을 통해 구성됩니다.
동적 스플릿 터널링은 tunnel-all 및 split-exclude(동적 제외) 또는 split-include(동적 포함) 정책에 적용됩니다. 스플릿 DNS 정책을 대체하지는 않지만 다음과 같이 보완합니다. 터널링되는 쿼리를 스플릿 DNS 제어, 동적 스플릿 터널링은 확인된 이름을 기반으로 터널링되는 IP 트래픽을 제어합니다. 컨피그레이션 세부사항: 동적 스플릿 터널링 구성 및 Secure Client 5.x 관리자 설명서를 참조하십시오.
스플릿 제외 장애 조치(Secure Client 5.x): 선택적 사용자 지정 특성 SplitExcludeFailoverEnabled는 공용 경로에 스플릿 제외 대상에 대한 연결이 없을 때 VPN을 통해 트래픽을 라우팅합니다. 사용자 지정 특성 설정에 대한 관리자 설명서를 참조하십시오.
다음 표는 사용하지 않는 클라이언트를 여전히 실행 중인 레거시 구축에만 적용됩니다.
| 버전 | 관련성 |
|---|---|
| AnyConnect 2.4 | 모범 사례 스플릿 DNS 폴백 도입 |
| AnyConnect 2.5(iOS) | Cisco 버그 ID: CSCtq09624 iOS DNS 정렬 |
| AnyConnect 3.0(4235) | Windows에서 진정한 스플릿 DNS, DNS 성능 수정 |
| AnyConnect 3.1(macOS) | IPv4/IPv6 조건의 스플릿 DNS 지원 |
| AnyConnect 4.2 | Cisco 버그 ID: CSCuf07885 어댑터 기반 시행; 자동 터널 DNS 호스트 경로 |
현재 수정 사항 및 기능을 위해 지원되는 모든 플랫폼에 Secure Client 5.x를 구축합니다.
참고: 등록된 Cisco 사용자만 내부 Cisco 버그 도구에 액세스할 수 있습니다.
| 개정 | 날짜 | 의견 |
|---|---|---|
| 4.0 | 2026년 7월 28일 | 전체 실체 업데이트: 보안 클라이언트 브랜딩, 플랫폼 리프레시, 동적 스플릿 터널링, Umbrella/tunnel-all-DNS, 오타 및 컨피그레이션 수정, 관련 링크 수정 |
| 3.0 | 2024년 5월 23일 | 재인증(Cisco.com) |
| 1.0 | 2014년 6월 12일 | 최초 릴리스 |
| 개정 | 게시 날짜 | 의견 |
|---|---|---|
4.0 |
10-Aug-2026
|
서론 업데이트, 맞춤법, 문법, 고정 URL, 가독성을 위해 별도의 섹션에 삽입된 수평선, 고정 CCW 오류 |
3.0 |
23-May-2024
|
재인증 |
1.0 |
12-Jun-2014
|
최초 릴리스 |