맥 DNS over HTTPS 설정하는 방법

맥에서 DNS over HTTPS를 설정하는 방법에 관한 글입니다. DNS over HTTPS 설정은 사용자가 DNS 서버에 요청한 주소를 통신사(ISP)가 알 수 없게 암호화하는 작업이며 최근 이슈화된 SNI 필드를 이용한 차단을 우회하는 방법은 아닙니다. DNS over HTTPS 설정법을 찾고 계신 분들은 아마도 필요성에 관한 내용을 다 알고 계시리라 생각하고 설정법에 대해서만 다루었습니다. 기타 관련 내용은 구글링을 통해 검색해보시기 바랍니다.

본글은 Cloudflare 보안 테스트 사이트에서 ‘Secure DNS’ 부분이 설정되지 않은 상태로 진행합니다. ▼


맥 DNS over HTTPS 설정

Cloudflared DoH 클라이언트를 사용하여 Cloudflare DNS 서버(1.1.1.1)에 연결하는 방법입니다. 본 설정이 완료되면 사용자의 DNS 쿼리는 보호될 수 있습니다. Cloudflare 공식 문서 ‘Running a DNS over HTTPS Client’를 참고하여 작성되었으며 부족한 내용이 있다면 원문을 참고 바랍니다.

사전 준비 Homebrew ▼

원활한 진행을 위해서 터미널에서 사용하는 패키지 관리 툴 Homebrew가 필요합니다. 터미널에서 아래 커맨드를 활용하여 Homebrew를 설치해주시기 바랍니다.

$ /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

 

모든 내용은 터미널에서 진행됩니다. 터미널 앱을 실행해주시고 아래 내용을 따라가주시면 됩니다.

1) Cloudflared 데몬을 설치합니다. ▼

$ brew install cloudflare/cloudflare/cloudflared

혹은

$ curl https://bin.equinox.io/c/VdrWdbjqyF/cloudflared-stable-darwin-amd64.tgz | tar xzC /usr/local/bin

설치 확인 

$ cloudflared --version
cloudflared version 2019.2.0 (built 2019-02-11-2027 UTC)
2) 아래 커맨드로 DNS Proxy를 시작합니다. 따로 언급을 해주지 않는 이상 localhost(127.0.0.1)의 53 포트를 사용합니다.
$ sudo cloudflared proxy-dns

포트와 주소 등을 변경할 경우의 예시

$ cloudflared proxy-dns --port 5053 --address 0.0.0.0 --upstream https://1.1.1.1/dns-query https://1.0.0.1/dns-query

검증 ▼

$ dig +short @127.0.0.1 cloudflare.com AAAA
2606:4700::c629:d7a2
2606:4700::c629:d6a2

 

3) Configuration 파일을 만드는 과정입니다. /usr/local/etc/cloudflared 디렉토리를 만들고 config.yml 파일을 생성합니다. 아래 터미널 커맨드를 그대로 사용하셔도 무방하고 GUI 환경에서 내용을 추가하셔도 됩니다.

디렉토리 생성 ▼

mkdir -p /usr/local/etc/cloudflared

config.yml 파일 생성 ▼

~ (209) $cat << EOF > /usr/local/etc/cloudflared/config.yml
> proxy-dns: true
> proxy-dns-upstream:
> - https://1.1.1.1/dns-query
> - https://1.0.0.1/dns-query
> EOF

 

4) 사용자 로그인 시 자동으로 시작하게 하기 위해서 서비스를 설치합니다. – 관련 공식 문서

$ sudo cloudflared service install

 

5) ‘cloudflared’로 실행해주시면 성공적으로 진행된 것을 확인하실 수 있습니다.

성공적으로 실행되었을 경우 ▼

~ (273) $sudo cloudflared
INFO[0000] Build info: {GoOS:darwin GoVersion:go1.11.1 GoArch:amd64}
INFO[0000] Version 2019.2.0
INFO[0000] Flags map[proxy-dns:true]
INFO[0000] Adding DNS upstream url="https://1.1.1.1/dns-query"
INFO[0000] Adding DNS upstream url="https://1.0.0.1/dns-query"
INFO[0000] Starting DNS over HTTPS proxy server addr="dns://localhost:53"
INFO[0000] cloudflared will not automatically update when run from the shell. To enable auto-updates, run cloudflared as a service: https://developers.cloudflare.com/argo-tunnel/reference/service/
INFO[0000] Starting metrics server addr="127.0.0.1:51054"

이미 사용 중이라는 ‘address already in use’ 메시지가 나올 경우 ▼

위에서 사용했던 검증 커맨드로 검증하시면 이미 실행 중이라는 것을 확인하실 수 있습니다. 아래 결과가 나오신다면 이미 정상적으로 사용 중인 것입니다.

$ dig +short @127.0.0.1 cloudflare.com AAAA
2606:4700::c629:d7a2
2606:4700::c629:d6a2

 

6) 마지막으로 DNS 서버를 127.0.0.1로 변경합니다. ▼

  • ‘System Preferences > Network > 연결된 어뎁터 선택 후 Advanced 버튼’으로 아래 설정으로 이동하시고, DNS 서버는 localhost(127.0.01)로 변경하시면 됩니다.
  • DoH(DNS over HTTP) 사용을 원치 않는 경우 이 경로에서 DNS만 1.1.1.1 등으로 변경해주시면 됩니다.

 

Cloudflare 보안 테스트 사이트에서 재확인


이상입니다.

참고

참조

댓글 남기기