레이블이 resolver인 게시물을 표시합니다. 모든 게시물 표시
레이블이 resolver인 게시물을 표시합니다. 모든 게시물 표시

2018년 4월 2일 월요일

클라우드플레어의 ​DNS 리졸버 1.1.1.1


4/1에 만우절 조크가 아니라 Cloudflare 가 퍼블릭 DNS 리졸버로 사용할 수 있는 1.1.1.1 (그리고 1.0.0.1)을 발표하였습니다.

https://blog.cloudflare.com/announcing-1111/

PC나 모바일의 경우 직접 DNS 리졸버를 변경해서 사용하면 됩니다. 공유기를 쓰는 경우라면 공유기의 DNS설정을 바꾸어도 되겠지요.

종종 그냥 DNS 서버라고 하는 경우가 있어 헷갈리는데, 일반적으로 DNS 서버라고 하면 authoritative DNS 서버를 말하고 해당 도메인의 마스터 정보를 갖고 있는 DNS서버를 말합니다. DNS 리졸버란 네트워크 설정시에 사용할 수 있는 DNS IP 주소로, 질의한 이름의 IP주소를 찾아서(resolve) 반환해 주는 역할을 합니다.​ 1.1.1.1은 바로 이 리졸버 설정에 사용할 수 있는 주소 입니다. 보통 집에서 인터넷을 쓰는 경우 ISP에서 기본 값을 자동으로 내려 주지만, 공유기 등에서 ​수동으로 설정할 수도 있습니다.​

1.1.1.1의 ​특징이라고 한다면
  • 외우기 쉬운 주소
  • IPv6 지원 (2606:4700:4700::1111, 2606:4700:4007::1001)
  • 프라이버시 (로그는 24시간 내로 지워짐)
  • DNS over TLS, DNS over HTTPS 등 보안 관련 ​기능 지원
인데, 요즘에 이런 DNS리졸버 서비스들이 몇 ​있습니다. 1.1.1.1 이외에도 유명한 것이​
약간 외우​기는 어렵지만 OpenDNS도 있지요.
왜 기억하기 쉬운 DNS 서비스가 좋냐 하면 고정IP로 네트워크 설정할 때 DNS 리졸버를 넣어야 하는데 DHCP가 아니라면 기억하기 쉬운 IP가 좋으니까요. 국내 IT업계 종사자라면 KT의 168.126.63.1 같은걸 외우고 계시는 분들도 많을 겁니다.​

다만 이런 서비스는 모두 애니캐스트 기반이라 외부 네트워크의 피어링이 어려운 중국 내에서는 잘 동작하지 않을 수 있는데, 중국 내부라면 아래 서비스가 중국 내에서 애니캐스트 기반으로 동작 합니다. 더 있을지도 모르겠네요.
또한 IP주소 ​1.x는 A class 에 속하는 영역이라 어떻게 확보했을까 하는 궁금증이 있었는데 해당 주소를 관리하는 APNIC과의 연계로 가능했던 것이네요. 자세한 사항은 APNIC의 관련 블로그 글을 읽어 보시면 됩니다.​​

주의 사항이라고 하면,
  • edns-client-subnet extension (privacy 와 충돌하는 부분이 있으니 향후 추가될 지​ 모르겠지만) 지원이 없는 관계로 애니캐스트 기반이 아니라 유니캐스트 기반의 ​CDN (Akamai, CDNetworks 등)이라면 로드밸런싱에 문제가 있을 수도 있으니, 혹 많이 가는 사이트가 느려 진다면 설정 전후로 테스트를 해 보시기 바랍니다. 해당 옵션의 영향에 대해서는 예전에 썼던 이 글을 읽어 보시면 도움이 됩니다​.
  • 1.1.1.1 은 일부 ISP에서 차단/하이재킹이나 Captive Portal 등​ 각종 이상한 용도로 사용되는 경우가 있어서 DNS lookup 에 문제가 발생할 수 있습니다. 따라서 기본 리졸버를 바꾸기 전에 반드시 테스트를 하는 것이 좋습니다. 이게 아마 1.x 가 오래동안 일반 서비스에 사용되지 않다 보니 Private 영역이 아님에도 불구하고 Private처럼 쓰이는 경우가 있어서 그런 것으로 생각됩니다.​
한국 기준으로 하면 좋은 점도 있는데, OpenDNSGoogle Public DNS의 경우 한국에는 POP이 없어서 일본이나 대만으로 연결되기 때문에 레이턴시가 40-60ms 정도 추가 됩니다.  1.1.1.1의 경우 클라우드플레어가 한국에 POP이 있으므로 매우 빠르게 연결이 될 수 있습니다.

기존에 DNS서버를 변경해서 쓰고 있거나, 새로운 서비스에 흥미가 생긴 분들은 한번 도전해 보시는 것도 좋겠네요. https://1.1.1.1 에 가시면 기본 설명이 되어 있습니다.​

p.s. 1.0.0.1 은 많은 경우 https://1.1 로 줄여 쓸 수 있다고 하네요. IPv6주소는 중간에 0 이 연속되면 줄여 쓸 수 있는데 v4 도 되는 줄은 몰랐습니다.​

2014년 6월 18일 수요일

Unbound win32 버전으로 PC에 DNS 리졸버 만들기

unbound 는 DNS서버이긴 한데 캐시 모드만 동작 시키면 기존 ISP의 DNS서버를 지정하는 대신 자신의 PC에 DNS 로컬 리졸버를 설치할 수 있습니다. 즉 ISP에서 제공하는 DNS서버를 자신의 PC에 설치한다고 보면 됩니다.

1. 설치


http://unbound.net/download.html

에서 Win32 (32비트 버전 또는 64비트 버전)을 설치하면 됩니다. 설치시에 특별히 해 주어야 할 일은 없습니다. 저는 XP에서 해 보았지만 Vista 이후 버전에서도 문제 없을 겁니다.

2. 설정


C:\Program Files\Unbound 에 설치 되었다고 가정 하고, 다음과 같이 설정 합니다. DNS서버로 설정 하려면 더 복잡한 설정이 필요하겠지만 이건 캐시 용도로만 사용할 거니까요.

C:\Program Files\Unbound\service.conf :
server:
directory: "c:\Program Files\Unbound"
root-hints: "c:\Program Files\Unbound\root.hints"
interface: 127.0.0.1
access-control: 127.0.0.0/8 allow_snoop
verbosity: 1
hide-identity: yes
hide-version: yes
prefetch: yes
do-ip4: yes
do-ip6: no
do-udp: yes
do-tcp: no
private-address: 10.0.0.0/8
private-address: 172.16.0.0/12
private-address: 192.168.0.0/16
private-address: 127.0.0.1/8
logfile: "c:\unbound.log"


그리고 root 서버의 목록인 root.hints를 만들어야 합니다. 이 파일은 IANA에서 보급하는 네임서버용 root.hints를 사용하면 되므로, http://www.internic.net/domain/named.root 를 다운로드해서 C:\Program Files\Unbound\root.hints 로 저장하면 됩니다. 이 파일을 종종 업데이트되니 위 URL에서 최신 버전을 다운로드받아 쓰는게 제일 좋습니다.

C:\Program Files\Unbound\root.hints :
;       This file holds the information on root name servers needed to
;       initialize cache of Internet domain name servers
;       (e.g. reference this file in the "cache  .  "
;       configuration file of BIND domain name servers).
;
;       This file is made available by InterNIC 
;       under anonymous FTP as
;           file                /domain/named.cache
;           on server           FTP.INTERNIC.NET
;       -OR-                    RS.INTERNIC.NET
;
;       last update:    June 2, 2014
;       related version of root zone:   2014060201
;
; formerly NS.INTERNIC.NET
;
.                        3600000  IN  NS    A.ROOT-SERVERS.NET.
A.ROOT-SERVERS.NET.      3600000      A     198.41.0.4
A.ROOT-SERVERS.NET.      3600000      AAAA  2001:503:BA3E::2:30
;
; FORMERLY NS1.ISI.EDU
;
.                        3600000      NS    B.ROOT-SERVERS.NET.
B.ROOT-SERVERS.NET.      3600000      A     192.228.79.201
B.ROOT-SERVERS.NET.      3600000      AAAA  2001:500:84::B
;
; FORMERLY C.PSI.NET
;
.                        3600000      NS    C.ROOT-SERVERS.NET.
C.ROOT-SERVERS.NET.      3600000      A     192.33.4.12
C.ROOT-SERVERS.NET.      3600000      AAAA  2001:500:2::C
;
; FORMERLY TERP.UMD.EDU
;
.                        3600000      NS    D.ROOT-SERVERS.NET.
D.ROOT-SERVERS.NET.      3600000      A     199.7.91.13
D.ROOT-SERVERS.NET.  3600000      AAAA  2001:500:2D::D
;
; FORMERLY NS.NASA.GOV
;
.                        3600000      NS    E.ROOT-SERVERS.NET.
E.ROOT-SERVERS.NET.      3600000      A     192.203.230.10
;
; FORMERLY NS.ISC.ORG
;
.                        3600000      NS    F.ROOT-SERVERS.NET.
F.ROOT-SERVERS.NET.      3600000      A     192.5.5.241
F.ROOT-SERVERS.NET.      3600000      AAAA  2001:500:2F::F
;
; FORMERLY NS.NIC.DDN.MIL
;
.                        3600000      NS    G.ROOT-SERVERS.NET.
G.ROOT-SERVERS.NET.      3600000      A     192.112.36.4
;
; FORMERLY AOS.ARL.ARMY.MIL
;
.                        3600000      NS    H.ROOT-SERVERS.NET.
H.ROOT-SERVERS.NET.      3600000      A     128.63.2.53
H.ROOT-SERVERS.NET.      3600000      AAAA  2001:500:1::803F:235
;
; FORMERLY NIC.NORDU.NET
;
.                        3600000      NS    I.ROOT-SERVERS.NET.
I.ROOT-SERVERS.NET.      3600000      A     192.36.148.17
I.ROOT-SERVERS.NET.      3600000      AAAA  2001:7FE::53
;
; OPERATED BY VERISIGN, INC.
;
.                        3600000      NS    J.ROOT-SERVERS.NET.
J.ROOT-SERVERS.NET.      3600000      A     192.58.128.30
J.ROOT-SERVERS.NET.      3600000      AAAA  2001:503:C27::2:30
;
; OPERATED BY RIPE NCC
;
.                        3600000      NS    K.ROOT-SERVERS.NET.
K.ROOT-SERVERS.NET.      3600000      A     193.0.14.129
K.ROOT-SERVERS.NET.      3600000      AAAA  2001:7FD::1
;
; OPERATED BY ICANN
;
.                        3600000      NS    L.ROOT-SERVERS.NET.
L.ROOT-SERVERS.NET.      3600000      A     199.7.83.42
L.ROOT-SERVERS.NET.      3600000      AAAA  2001:500:3::42
;
; OPERATED BY WIDE
;
.                        3600000      NS    M.ROOT-SERVERS.NET.
M.ROOT-SERVERS.NET.      3600000      A     202.12.27.33
M.ROOT-SERVERS.NET.      3600000      AAAA  2001:DC3::35
; End of File

2.1. 설정 확인


cmd 를 쓰면 쉽게 할 수 있습니다.

> cd c:\program files\unbound
> unbound-checkconf
unbound-checkconf: no errors in C:\Program Files\Unbound\service.conf

이렇게 나오면 문제 없습니다. 다른 오류가 나오면 설정 파일을 수정하시기 바랍니다.

2.2. 서비스로 실행


이미 서비스로 설치가 되어 있으니, cmd 또는 services.msc 에서 재시작만 해 주면 됩니다.

> net stop unbound
> net start unbound

2.3. DNS resolver 변경


이제 사용하는 PC 네트워크 장치의 DNS resolver 를 127.0.0.1 로 변경해 주세요.

동작 확인은 직접 브라우저를 띄워 보거나, nslookup 명령으로 해 볼 수 있습니다.

> nslookup daum.net
Server: localhost
Address: 127.0.0.1

Non-authoritative answer:
Name: daum.net
Addresses: 110.45.215.23, 114.108.157.19, 61.111.62.173, 114.108.157.50


3. 끝으로


굳이 ISP의 네임서버를 쓰면 되지 이게 왜 필요할까 하지만... ISP의 네임서버에 문제가 있을 경우 (오래전의 인터넷대란)라든가, ISP 네임서버의 정책을 우회하고 싶다거나 (접속이 안되는 사이트), DNS 기반으로 로드밸런싱을 하는 CDN 에게 자신의 위치를 더 정확하게 알려 주어서 인터넷 속도가 (주로 웹 브라우징이나 비디오이겠죠) 향상되는 효과를 거둘 수 있습니다. 기존에 이런 용도로 Google DNS (8.8.8.8)이나 OpenDNS를 쓰기도 하는데, 이런걸 자신의 PC에 설치한다고 생각하면 되겠죠. Google DNS나 OpenDNS가 edns-client-subnet extension을 지원해서 CDN의 로드밸런싱을 방해하는 일은 거의 없어졌지만, 아직 모든 DNS서버가 그걸 지원하는 것도 아니고 아무래도 자신의 PC에 DNS서버 (127.0.0.1 로만 뜨니까 외부에서 접속 염려는 없습니다)가 있다는 점에 안심하는 분들도 있겠죠.

이 글은 http://npr.me.uk/unbound.html의 내용을 많이 참고하고 있습니다 (설정 파일 등은 거의 그대로). 위 링크에 가시면 필터링 등의 추가 예제도 있으니 살펴 보세요.