이미 뉴스를 통해서 많이 접하셨겠지만 정부에서 DNS 서버를 이용한 사이트 접속 차단을 시작했습니다. 공익적 목적이라고 하니 백프로 이해 못 하는 부분은 아니지만, 거기에 사용되는 기술이 정치적 상황에 따라서 악용될 위험성도 있고, 무엇보다 SKB의 경우에는 구글 같은 해외 DNS로 나가는 통신까지 모니터해서 변조한다고 한다는 글까지 올라오는 것 보니 그렇게 유쾌하지가 않네요.
혹시 프라이버시가 걱정되시는 분들을 위해 'Simple DNSCrypt'라고 하는 프로그램을 이용하여 간단하게 DNS 통신도 암호화를 적용하는 방법을 소개합니다.
-----
[1. 현재 내가 사용하는 DNS 상태 확인]
https://dnsleaktest.com/ 로 접속 후 지도 아래 나오는 [Standard Test]를 클릭해서 테스트를 진행합니다.
이는 암호화 적용 전 통신하는 DNS과 암호화 적용 후 통신하는 DNS를 비교하기 위함입니다.
특별히 컴퓨터나 공유기에 수동으로 DNS를 지정해주시지 않으셨다면,
아래와 같이 지금 사용하는 인터넷 업체의 DNS가 표시됩니다.
'ISP' 이름만 머릿속에 기억해 두시고 창을 닫습니다.
[2. Simple DNSCrypt 설치]
https://github.com/bitbeans/SimpleDnsCrypt/releases/ 로 접속해서
PC 환경에 맞는 인스톨러를 다운받습니다.
32비트 운영체제인 경우는 SimpleDNSCrypt.msi
64비트 운영체제인 경우는 끝에 '64'가 붙은 .msi 파일을 내려받으시면 됩니다.
(작성 시점 최신 버전은 0.5.4입니다)
설치 과정 중에 바탕화면(Desktop)과 시작 메뉴(Start Menu)에 아이콘을 추가할 것인지,
설치할 폴더는 어디로 할지 물어보는 과정이 제외하면 (특별히 바꾸실 필요는 없습니다.)
설치가 자동으로 이뤄지고, 마지막에 나오는 'Launch Simple DNSCrypt'(실행) 내용에 체크한 후 설치를 마치시면 됩니다.
[3. 실행 및 적용]
실행을 하게 되면 'Visual C++ 재배포 패키지'가 컴퓨터에 없는 경우 자동으로 받아 설치를 하게 되고,
아래에 같은 창이 나오면서 조정해주실 부분이 두 개 있습니다.
아래처럼 첫 번째 서비스를 먼저 켜 주시고, 적용할 랜카드를 선택해주셔서 '불이 들어오도록'(?) 바꿔주시면 됩니다.
↑ 이렇게 나오도록 하세요 ↑
앞서 설명해드렸던 https://dnsleaktest.com/ 에 접속해서 테스트를 진행한 후 결과값이 바뀌었는지 확인합니다:
(테스트 결과는 연결된 서버에 따라서 달라질 수 있습니다)
-----
[FAQ 1. 클라우드플레어 서버를 사용하고 싶어요]
답변:
'Resolver' 탭을 클릭한 후 'Automatic' 모드를 해제하고 'cloudflare'만 선택된 상태로 적용해주시면 됩니다.
다시 테스트를 실시하면 한국인 경우 국내 클라우드플레어 서버에 접속된 것을 확인하실 수 있습니다.
[FAQ 2. 구글 서버를 사용하고 싶어요]
답변:
구글 DNS 역시 암호화 통신을 지원하기는 하지만, 구글의 로깅(logging) 정책 때문에 기본적으로 선택에서 제외되어 있습니다.
구글에서는 수집한 정보를 타 구글 서비스와 연계시키지 않는다고 밝히고 있기는 합니다 :
https://developers.google.com/speed/public-dns/privacy
구글이 정보를 영구적으로 보관하는 것에 상관이 없으시다면,
Main Menu로 돌아와 Only servers without logging에 체크된 것을 해제해줍니다.↓
그러면 Resolvers(서버) 목록에 구글 서버가 추가되며 선택할 수 있게 됩니다.
여기서 'google'만 선택 후 적용해주시면 됩니다.
테스트를 진행해서 구글로 접속되는지 확인 후 설정을 마치시면 됩니다. 읽어주셔서 감사합니다.
https://dnscrypt.info/public-servers/
(맨 아래 'Rows per page : All'로 설정하셔서 보시는 것을 추천)
빨간 느낌표 : 접속 기록을 저장하는 서버
금지 표시 : 광고 차단이나 자녀 보호 같은 차단 필터가 있는 서버
자물쇠 표시 : DNSSEC 서버 https://한국인터넷정보센터.한국/jsp/resources/dns/dnssecInfo/dnssecInfo.jsp
차단 필터가 있는 DNS를 사용하시려고 하는 경우 Simple DNSCrypt에서 'Only servers without filter' 체크해제해주시면 애드가드 등의 DNS를 선택하실 수 있게 되니 참고하세요. (애드가드는 DNSSEC도 추가로 해제해주셔야 합니다.)
Quad9도 DoH 지원합니다.
점선 아래 내용 무시해주세요~
https://www.clien.net/service/board/news/12678589CLIEN
----
음.. 덧붙이면 여기서 다루는 프로그램은 DNSCrypt와 DNS-over-HTTPS만 지원해서
DNS-over-TLS만 지원하는 IBM Quad9을 이용하시려면 다른 툴을 이용하셔야 됩니다.
* GitHub 이슈 참조 : https://github.com/jedisct1/dnscrypt-proxy/issues/68
* 프로토콜 차이 : https://dnscrypt.info/faq ('Other protocols' 부분 참조)
클라우드플레어는 DoH와 DoT를 모두 지원한다고 하고
https://developers.cloudflare.com/1.1.1.1/dns-over-https/
https://developers.cloudflare.com/1.1.1.1/dns-over-tls/
구글은 DoH 위주로 지원하는 듯 하네요.
https://developers.google.com/speed/public-dns/docs/dns-over-https
유럽쪽이기는 한데 3개 다 지원하는 DNS도 있습니다. https://www.securedns.eu/
PC 크롬입니다.
크롬 확장기능이나 통신에 방해되는 프로그램은 없는지 한번 체크해보시는 게 좋을 것 같습니다.
특정 브라우저 안에서만 적용하는 게 아니라 시스템 전체의 통신을 바꾸는 게 이 프로그램의 목적이므로,
익스플로러 같은 다른 브라우저에서 테스트하셔도 상관없습니다.
Test in progress... Query round Progress... Servers found 에서 안 넘어 갑니다.
여기 사이트 테스트 구조가 실제로는 없는 가짜 주소를 DNS로 먼저 쏴서
서버에서 돌아오는 값을 확인해 보여주는 간단한 방식입니다.
즉 돌아오는 과정에서 막힌다는 건데 방화벽이나, 백신이나.. 이런 쪽을 한번 체크해보시는 게 좋겠네요.
DNSCrypt 설치 전 지금 어떤 DNS를 쓰는지 확인하시는 거면
'안전 모드 (네트워킹 사용)' 모드로 부팅하셔서,
다른 프로그램에 의해 방해받을 확률이 적은 상태에서 확인하시는 건 어떨까 싶습니다.
(윈10 안전모드 부팅 후 Edge에서 테스트되는 거 확인했습니다.)
kaspersky antivirus > 설정 > 보호 > 웹 안티바이러스 기능을 끄니 정상적으로 접속,확인이 됩니다.
---------------------------------------------------------------------------------------------------------------------생각도 못했는데 몇 주 만에 처음으로 이걸 꺼 볼까? 하고 보호감시를 끄고 하니 휘리릭~ 아주 빨리 진행되고 결과도 명쾌하고 빠르게 나오네요.. 이것은 KAV입니다. Free버젼이라 네트워크 감시가 의심되서 네트워크 감시만 끄려다가 전체 감시를 끄고 테스트 하니 바로 해결 ~ ^^
수동으로 클라우드플레어만 설정하시는 게 일반적으로는 가장 낫지 않을까 싶고요.
저 같은 경우 (추천까지는 아니고) 보조로 스웨덴 VPN 업체인 IPreadtor 서버를 추가로 지정하긴 했습니다.
---
7/10 수정
안드로이드 애드가드 나이틀리에 반영되었습니다.
애드가드 설정 - 고급 설정 - 업데이트 채널 Nightly (unstable) 선택 후
첫 화면 돌아가셔서 오른쪽 위 새로고침 아이콘 누르신 다음에 업데이트 화면 나오면 APK 수동 설치하세요.
---
아이폰은 DNSCloak이라는 앱이 있다고 합니다. (확인은 못 해봤네요)
https://itunes.apple.com/kr/app/dnscloak-dnscrypt-client/id1330471557
안드로이드는 제가 알고 있는 한에서는 애드가드 앱에서 DNSCrypt 설정을 지원하는데,
DNS-over-HTTPS나 TLS는 지원하지 않습니다.
그래서 후자 규격을 쓰는 클라우드플레어나 구글 서버를 이용하는 것은 불가능하고요.
한국에서 그나마 가장 가까운 DNSCrypt 서버는 시스코의 OpenDNS입니다. 서버 목록에서 터치 한 번으로 설정할 수 있게 되어 있어요.
DoH 추가 계획도 있다고 하는데 정확하게 일정 잡힌 건 없다네요.
https://forum.adguard.com/index.php?threads/add-custom-dns-server-by-cloudflare-with-https.28399/
https://play.google.com/store/apps/details?id=app.intra
구글과 관련된 회사(Jigsaw)라서 그런지 구글 서버로 기본적으로 설정되어 있고, 클라우드플레어로 변경도 가능합니다.
DNS over TLS 보다 DoH 쪽이 성능이 더 좋다해서 질문드려봅니다 ㅎㅎ
위에 다른 분들 댓글에 남긴 것과 같이 클라우드플레어도 DNSCrypt 서버가 없고 DoH 서버를 운영하고 있어서 통신에는 DoH를 이용합니다. Crypt가 DoH와 달리 인터넷 표준화된 규격은 아니어서 대기업쪽에서는 적용하는 사례가 없어 보이네요.
그리고 Simple DNSCrypt는
원래 터미널 명령어로 작동하는 dnscrypt-proxy ( https://github.com/jedisct1/dnscrypt-proxy ) 를 바탕으로 사용하기 쉽게 GUI 요소를 입힌 프로그램입니다.
오히려 dnscrypt-proxy 개발자("jedisct1") 말에 따르면 DNSCrypt가 DoH보다 빠르고 안전하다고 말하는데요. 가능한 한 두 개 프로토콜을 다 열어놓을 것을 추천하고 있는데, 그러면 프로토콜과 상관없이 가장 빠른 서버를 찾아 설정한다고 합니다.
https://www.reddit.com/r/privacytoolsIO/comments/7wakeh/dnscrypt_v2_vs_dnsoverhttp2/
DNS ㅎㅎ
잘됩니다.
방금 적용했는데 잘 됩니다. ^^
윈도우에서는 부팅할 때마다 자동으로 실행돼요.
("DNSCrypt client proxy"라는 서비스로 등록)
+댓글 수정했습니다
저도 궁금해서 평가판 설치해보니,, 나머지 인터넷은 대충 잘 되는 것 같은데 DNS 테스트가 진행이 안 되네요.
위에 테스트가 안 된다는 분들이 계셨는데.. 그게 애드가드 때문인가 보군요 ;;
PC버전은 예전에 한 번 설치했다가 안 써서 몰랐습니다.
아무래도 충돌이 있는 것 같은데
애드가드는 프로그램이 아니라 브라우저 확장기능으로 사용하시거나,
파이어폭스를 주로 쓰시면 Simple DNSCrypt 대신 파이어폭스 자체의 DNS-over-HTTPS 기능을 이용하셔야 될 듯 합니다. ^^;
https://www.clien.net/service/board/lecture/12080785CLIEN
USB 이더넷이라 그럴까요 음..
확실히 속도저하에 영향을 미쳐 불편함도 있지만, 파이어폭스만 설정하였네요! 기회가 닿는다면 아이폰 어플도 궁금하네요 ㅎ
저만 이런 문제가 있는건지..
그런데 혹시 이거 설정해놓으면 속도저하가 생기는 건가요?
암호화 통신으로 인한 약간의 속도 저하는 있습니다.