DNS over HTTPS

 

DNS 접속 암호화

DNS 접속을 암호화하는 방법으로 DNS over HTTPS, DNS over SSH, DNS over TLS 등이 있는데, 이 중에서 DNS over HTTPS (DoH)는 CloudFlare와 Google도 사용하는 방식으로 개인 시스템에 적용하기도 쉽다.

 

DNS over HTTPS 적용

현재까지의 컴퓨터 운영체제에는 DNS 접속 암호화 기능이 내장되어 있지 않으므로, 이를 구현하기 위해서는 별도의 프로그램이 필요하다.

가장 간편한 방법은 DNS over HTTPS 기능이 내장된 Firefox 웹 브라우저를 사용하는 것이다. 다만 이 방법은 오직 Firefox로 웹사이트에 접속할 때에만 DNS 접속이 암호화된다.

다른 방법은 컴퓨터에 dnscrypt-proxy 같은 DNS 접속 암호화 프로그램을 설치하는 것이다. dnscrypt-proxy는 DNS over HTTPS를 지원하며, 여러 가지 운영체제에 설치할 수 있다. dnscrypt-proxy를 컴퓨터에 설치하면 그 컴퓨터의 모든 DNS 접속이 암호화 된다.

만일 Asus 또는 Netgear 회사의 라우터 (인터넷 공유기) 를 사용하면서 Asuswrt-Merlin 펌웨어가 설치되어 있다면 dnscrypt-proxy를 Asuswrt-Merlin 펌웨어에 쉽게 설치할 수 있게 만든 dnscrypt-asuswrt-installer를 이용하면 편리하게 설치할 수 있다. 이 경우에는 라우터 하단에 연결된 모든 디바이스의 DNS 접속이 암호화 된다.

 

Firefox 웹 브라우저

Firefox는 60 버전부터 TRR (Trusted Recursive Resolver) 이라는 이름으로 DNS over HTTPS 기능을 내장하고 있다. 이 기능은 기본적으로 활성화되어 있지 않기 때문에 활성화해주는 작업이 필요하다.

Firefox의 주소창에 about:config 를 입력해서 고급 환경 설정 페이지를 연다.

검색(R): 창에 network.trr.mode 를 입력하고 검색된 항목을 더블클릭해서 숫자 2 를 입력한다.

설정 값의 의미는 다음과 같다:
0 – TRR 끔
1 – TRR과 컴퓨터의 기본 DNS 중에서 빠른 방식을 자동 선택
2 – TRR을 우선으로 사용
3 – TRR만을 사용
5 – TRR을 명시적으로 사용 안 함

설정했으면 반드시 Firefox를 재실행한다.

DNS 접속이 암호화되는지 여부는 CloudFlare의 테스트 페이지 https://www.cloudflare.com/ssl/encrypted-sni/ 에 접속해서 Check My Browser 버튼을 클릭하고 Secure DNS 항목을 확인해보면 된다.

sdns-check.png

 

윈도우 PC

윈도우 PC에서는 dnscrypt-proxy를 윈도우 PC용으로 재구성한 SimpleDnsCrypt를 설치하면 편리하게 이용할 수 있다. 자세한 내용은 SimpleDnsCrypt의 설명을 참고한다.

 

라우터

Asuswrt-Merlin 펌웨어가 설치된 라우터의 설정 페이지에 접속해서 관리시스템Enable JFFS custom scripts and configs로 설정하고, SSH 접속 기능을 활성화한다.

PuTTY 등의 SSH 접속 클라이언트로 라우터에 접속한다.

cd /jffs

/jffs 디렉토리로 이동한다.

curl -L -s -k -O https://raw.githubusercontent.com/thuantran/dnscrypt-asuswrt-installer/master/installer && sh installer ; rm installer

dnscrypt-proxy를 Asuswrt-Merlin 펌웨어에 쉽게 설치할 수 있게 만든 dnscrypt-asuswrt-installer가 제공하는 설치 명령을 실행한다.

몇가지 선택 사항을 질문해오면 원하는 대로 응답한다. 나의 경우에는 아래의 방식으로 설치했다:

Do you want to install dnscrypt-proxy to /jffs? y
Do you want to redirect all DNS resolutions on your network through this proxy? y
Do you want to use DNS server over IPv6 (yes only if your connection has IPv6)? n
Choose DNS resolving load balancing strategy: (p2 선택)
Choose how your DNS servers are selected: (Manually 선택)
Please choose DNS server: (cloudflare 선택)
Please choose next DNS server or press n to stop:n
Set a DNS server for initializing dnscrypt-proxy and router services (e.g. ntp) at boot
=> Default is 8.8.8.8: 1.1.1.1
Set log level, default is 2, 0 is the most verbose, [0-6]: 2


다음 추가로 timezoneAsia/Seoul로 설정하고 (P)RNGHAVEGED 방식으로 설치했다.

설치를 완료했으면 라우터의 SSH 접속 기능을 다시 비활성화해도 된다.

추가로 라우터 설정 페이지의 WAN인터넷 연결에서 자동으로 DNS 서버에 접속합니다.아니오로 선택하고, DNS 서버11.1.1.1, DNS 서버21.0.0.1을 입력해서 dnscrypt-proxy 설치 시에 선택한 CloudFlare의 DNS 주소로 맞춰주었다.

최종적으로 라우터를 한 번 재시작한다.

라우터 하단에 연결된 디바이스에서 DNS 접속이 암호화되는지 여부를 확인하려면 CloudFlare의 테스트 페이지 https://www.cloudflare.com/ssl/encrypted-sni/ 에 접속해서 Check My Browser 버튼을 클릭하고 Secure DNS 항목을 확인해보면 된다.

sdns-check.png

 

본 글의 저작권은 작성자 Varins에게 있습니다.
Varins의 사전 서면 동의 없이는 본 글의 전부 또는 일부를 무단으로 전재, 게시, 배포하는 것을 금지합니다.

코멘트 없음
맨위로