[swift] Reachability를 사용해 특정 도메인의 DNS 장애 유무 확인하기

DNS(Domain Name System) 서비스는 인터넷에서 도메인 이름을 IP 주소로 변환하는 역할을 합니다. 때때로 특정 도메인의 DNS 서버가 장애를 겪을 수 있습니다. iOS 앱에서 네트워크 연결 상태를 확인하고, 특정 도메인의 DNS 장애를 감지하는 방법을 살펴보겠습니다.

Reachability 라이브러리

네트워크 연결 상태를 확인하는데 도움이 되는 Reachability 라이브러리를 사용하겠습니다. 이 라이브러리를 사용하여 특정 도메인의 연결 가능 여부를 확인할 수 있습니다.

  1. 먼저, Reachability 클래스 파일을 프로젝트에 추가합니다. Reachability.swift 파일을 다운로드하여 프로젝트에 추가하거나, Carthage 혹은 CocoaPods를 통해 라이브러리를 설치할 수 있습니다.

  2. Reachability 클래스를 사용하기 위해 다음과 같이 import 문을 추가합니다:

import Reachability

특정 도메인의 DNS 장애 확인

다음은 특정 도메인의 DNS 장애를 확인하는 예제 코드입니다.

import Reachability

func checkDNSStatus(for domain: String) -> Bool {
    let reachability = try? Reachability(hostname: domain)
    let status = reachability?.connection
    
    if status == .unavailable {
        return false
    } else {
        return true
    }
}

let domainToCheck = "example.com"
let isDNSAvailable = checkDNSStatus(for: domainToCheck)

if isDNSAvailable {
    print("DNS is available for \(domainToCheck)")
} else {
    print("DNS is unavailable for \(domainToCheck)")
}

위의 코드는 주어진 도메인 이름의 DNS 연결 상태를 확인하고, DNS 서버의 장애 여부를 반환합니다. Reachability 클래스의 hostname 속성을 사용하여 도메인 이름을 전달하고, connection 속성을 사용하여 연결 가능한 상태인지 확인합니다.

참고 자료