macOS에서 DNS over HTTPS 구성하기

이 가이드는 macOS 시스템에서 DNS over HTTPS (DoH)를 설정하고 구성하는 방법을 기본 설정부터 고급 구성까지 완전한 지침을 제공합니다.

필수 조건

  • macOS 10.15 (Catalina) 이상
  • 관리자 권한
  • 안정적인 네트워크 연결
  • 기본 명령줄 지식

시스템 수준 구성

1단계: 시스템 설정 사용

  1. Apple 메뉴 클릭
  2. “시스템 설정” (또는 “시스템 환경설정”) 선택
  3. “네트워크” 클릭
  4. 현재 네트워크 연결 선택
  5. “세부 정보…” 클릭
  6. “DNS” 탭 선택

2단계: DNS 서버 구성

  1. ”+” 버튼을 클릭하여 DNS 서버 추가
  2. 다음 서버 주소 입력:
    1.1.1.1
    1.0.0.1
    2606:4700:4700::1111
    2606:4700:4700::1001

3단계: 터미널 구성

터미널을 열고 다음 명령을 실행합니다:

# 현재 DNS 설정 보기
scutil --dns

# DNS 서버 구성
networksetup -setdnsservers Wi-Fi 1.1.1.1 1.0.0.1

# 설정 확인
networksetup -getdnsservers Wi-Fi

타사 클라이언트 사용

DNSCrypt-Proxy

  1. 설치
# Homebrew를 사용하여 설치
brew install dnscrypt-proxy

# 또는 수동 설치
curl -L https://github.com/DNSCrypt/dnscrypt-proxy/releases/latest/download/dnscrypt-proxy-macos-amd64.tar.gz | tar xz
  1. 구성

dnscrypt-proxy.toml 파일을 편집합니다:

listen_addresses = ['127.0.0.1:53']
server_names = ['cloudflare', 'google']
doh_servers = true
require_dnssec = true
require_nolog = true
require_nofilter = true
force_tcp = false
timeout = 2500
keepalive = 30
  1. 서비스 시작
# 서비스 설치
sudo brew services start dnscrypt-proxy

# 또는 수동 시작
sudo dnscrypt-proxy -service install
sudo dnscrypt-proxy -service start

암호화된 DNS 프로필

  1. 구성 프로필 생성

.mobileconfig 파일을 생성합니다:

<?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>PayloadContent</key>
    <array>
        <dict>
            <key>DNSSettings</key>
            <dict>
                <key>DNSProtocol</key>
                <string>HTTPS</string>
                <key>ServerURL</key>
                <string>https://cloudflare-dns.com/dns-query</string>
            </dict>
            <key>PayloadDescription</key>
            <string>Configure DNS over HTTPS</string>
            <key>PayloadDisplayName</key>
            <string>DNS Settings</string>
            <key>PayloadIdentifier</key>
            <string>com.example.dns</string>
            <key>PayloadType</key>
            <string>com.apple.dnsSettings.managed</string>
            <key>PayloadUUID</key>
            <string>A1B2C3D4-E5F6-G7H8-I9J0-K1L2M3N4O5P6</string>
            <key>PayloadVersion</key>
            <integer>1</integer>
        </dict>
    </array>
    <key>PayloadDescription</key>
    <string>DNS over HTTPS Configuration</string>
    <key>PayloadDisplayName</key>
    <string>DoH Configuration</string>
    <key>PayloadIdentifier</key>
    <string>com.example.doh</string>
    <key>PayloadRemovalDisallowed</key>
    <false/>
    <key>PayloadType</key>
    <string>Configuration</string>
    <key>PayloadUUID</key>
    <string>Q1R2S3T4-U5V6-W7X8-Y9Z0-A1B2C3D4E5F6</string>
    <key>PayloadVersion</key>
    <integer>1</integer>
</dict>
</plist>
  1. 프로필 설치
    • 구성 파일을 더블클릭
    • 시스템 프롬프트에 따라 설치
    • 시스템 설정에서 확인

구성 확인

방법 1: 터미널 사용

# DNS 확인 테스트
dig example.com @127.0.0.1

# DNSSEC 확인
dig example.com @127.0.0.1 +dnssec

# DoH 서버 확인
dig whoami.cloudflare CH TXT @127.0.0.1

방법 2: 시스템 도구 사용

  1. “네트워크 유틸리티” 열기
  2. “조회” 선택
  3. 테스트할 도메인 이름 입력
  4. 확인 결과 확인

방법 3: 온라인 테스트

  1. DNS 유출 테스트 웹사이트 방문
  2. 표준 테스트 실행
  3. DNS 요청 라우팅 확인

문제 해결

일반적인 문제

  1. DNS 확인 실패

    • 네트워크 연결 확인
    • DNS 설정 확인
    • 네트워크 서비스 재시작
    • DNS 캐시 지우기
  2. 성능 문제

    • 가장 가까운 서버 선택
    • 캐시 설정 최적화
    • 응답 시간 모니터링
    • 시스템 리소스 확인
  3. 구성 프로필 문제

    • 파일 형식 확인
    • 권한 설정 확인
    • 구성 재설치
    • 시스템 버전 업데이트

시스템 진단

  1. 네트워크 진단
# 네트워크 연결 테스트
ping 1.1.1.1

# 라우팅 확인
traceroute 1.1.1.1

# 네트워크 상태 보기
networksetup -listallnetworkservices
  1. DNS 진단
# DNS 캐시 지우기
sudo dscacheutil -flushcache
sudo killall -HUP mDNSResponder

# DNS 구성 보기
scutil --dns

# DNS 확인 테스트
dig +trace example.com

모범 사례

  1. 제공업체 선택

    • 개인정보 보호 정책 평가
    • 서비스 가용성 확인
    • 지리적 위치 고려
    • 연결 속도 테스트
  2. 보안 권장사항

    • DNSSEC 활성화
    • 신뢰할 수 있는 제공업체 사용
    • 정기적인 시스템 업데이트
    • 네트워크 활동 모니터링
  3. 성능 최적화

    • 가장 가까운 서버 선택
    • 캐시 설정 최적화
    • 성능 메트릭 모니터링
    • 정기적인 유지보수

기업 배포

MDM 구성

  1. 구성 파일 생성

    • DNS 매개변수 설정
    • 보안 옵션 구성
    • 배포 범위 정의
    • 서명 인증서 준비
  2. 배포 전략

    • 구성 프로필 푸시
    • 배포 상태 모니터링
    • 오류 보고 처리
    • 구성 업데이트

자동화된 구성

  1. 스크립트 사용
#!/bin/bash
# DoH 구성
configure_doh() {
    # 필요한 도구 설치
    brew install dnscrypt-proxy

    # 구성 백업
    cp /usr/local/etc/dnscrypt-proxy.toml /usr/local/etc/dnscrypt-proxy.toml.bak

    # 서비스 시작
    brew services start dnscrypt-proxy
}
  1. 구성 관리 도구 사용
# Ansible 예시
- name: Configure DNS over HTTPS
  hosts: macos_clients
  tasks:
    - name: Install dnscrypt-proxy
      homebrew:
        name: dnscrypt-proxy
        state: present

    - name: Configure dnscrypt-proxy
      template:
        src: dnscrypt-proxy.toml.j2
        dest: /usr/local/etc/dnscrypt-proxy.toml

추가 리소스

중요 참고사항

  1. 시스템 호환성

    • 시스템 버전 확인
    • 하드웨어 요구사항 확인
    • 소프트웨어 호환성 테스트
    • 성능 영향 평가
  2. 네트워크 영향

    • 네트워크 지연 시간 모니터링
    • 대역폭 사용량 평가
    • 장애 조치 옵션 고려
    • 라우팅 설정 최적화
  3. 보안 고려사항

    • 구성 파일 보호
    • 접근 권한 제한
    • 시스템 로그 모니터링
    • 정기적인 보안 감사
  4. 유지보수 권장사항

    • 정기적인 소프트웨어 업데이트
    • 구성 백업
    • 시스템 상태 모니터링
    • 비상 계획 개발

다음 단계