DNS의 원리 yahoo.com. 의 IP를 알아내는 방법을 예로 들어 설명.
(c)2008 가치있는 삶
COM,NET 의 최상위 관리기관인 베리사인은 매우 많은 DDOS 공격을 받고 있다고 한다.
하지만 베리사인은 돈이 많기때문에 아무리 공격을 해도 막아낼수 있다. 만약 막지못한다면? 인터넷 전체가 마비된다.
이 베리사인의 네임서버를 gtld-servers 라고 하는데
nslookup 을 사용하면 gtld-servers 목록을 알 수 있다.
> set type=ns
> com.
Server: kns.kornet.net
Address: 168.126.63.1
Non-authoritative answer:
com nameserver = g.gtld-servers.net
com nameserver = i.gtld-servers.net
com nameserver = k.gtld-servers.net
com nameserver = j.gtld-servers.net
com nameserver = b.gtld-servers.net
com nameserver = l.gtld-servers.net
com nameserver = e.gtld-servers.net
com nameserver = a.gtld-servers.net
com nameserver = f.gtld-servers.net
com nameserver = h.gtld-servers.net
com nameserver = d.gtld-servers.net
com nameserver = c.gtld-servers.net
com nameserver = m.gtld-servers.net
e.gtld-servers.net internet address = 192.12.94.30
g.gtld-servers.net internet address = 192.42.93.30
f.gtld-servers.net internet address = 192.35.51.30
d.gtld-servers.net internet address = 192.31.80.30
c.gtld-servers.net internet address = 192.26.92.30
a.gtld-servers.net internet address = 192.5.6.30
a.gtld-servers.net AAAA IPv6 address = 2001:503:a83e::2:30
l.gtld-servers.net internet address = 192.41.162.30
h.gtld-servers.net internet address = 192.54.112.30
m.gtld-servers.net internet address = 192.55.83.30
i.gtld-servers.net internet address = 192.43.172.30
k.gtld-servers.net internet address = 192.52.178.30
j.gtld-servers.net internet address = 192.48.79.30
b.gtld-servers.net internet address = 192.33.14.30
b.gtld-servers.net AAAA IPv6 address = 2001:503:231d::2:30
>
네임서버들의 이름과 IP를 알수 있다.
만약 우리가 yahoo.com 에 접속을 하면 gtld-servers 중에서 아무곳이나 접속해서
A 레코드를 조회하게 된다.
실제로 어떻게 응답을 하는지 테스트를 해보자.
테스트로 g.gtld-servers.net 192.42.93.30 에 접속을 해서 yahoo.com. 의 A 레코드를 조회해보자..
> server 192.42.93.30
Default Server: g.gtld-servers.net
Address: 192.42.93.30
> set type=a
> yahoo.com.
Server: g.gtld-servers.net
Address: 192.42.93.30
Name: yahoo.com
Served by:
- ns1.yahoo.com
66.218.71.63
yahoo.com
- ns2.yahoo.com
68.142.255.16
yahoo.com
- ns3.yahoo.com
217.12.4.104
yahoo.com
- ns4.yahoo.com
68.142.196.63
yahoo.com
- ns5.yahoo.com
119.160.247.124
yahoo.com
>
이렇게 하면 위와같이 도메인에 지정된 NS 목록이 응답된다.
베리사인의 네임서버는 도메인의 A 레코드 정보를 갖고 있지 않고 NS 정보(NS주소와 IP)만을 갖고 있어서
어떤 도메인을 정보를 요구하면 자기가 가진정보를 알려준다. 즉, 위에 응답받은 NS서버들이 A레코드를 갖고있으니 물어보라는 뜻이다.
이제 A 레코드를 요청하려면 위 NS 서버들을 아무데나 접속해서 물어보면 된다.
실제로 갖고있을지 없을지는 알지못한다. 어떤곳은 접속조차 안될수도 있다.
그래서 여러개가 있는 것이다.
도메인등록기관을 보면 최소2개는 넣으라고 되어있는 이유가 바로 이때문이다.
위에 ns1.yahoo.com / ns2.yahoo.com / ns3.yahoo.com / ns4.yahoo.com / ns5.yahoo.com
이 네임서버들은 REGISTRY 에 등록된 네임서버이므로 REGISTRY에 등록된 모든 도메인은 이 네임서버를 가리키도록 지정될 수 있다. 물론 해당 도메인의 정보변경권한을 갖고 있는 사람만 가능하다.
이제 남은 일은 ns1.yahoo.com 에 접속해서 A레코드를 물어보면 된다.
> server ns1.yahoo.com.
Default Server: ns1.yahoo.com
Address: 66.218.71.63
> set type=a
> yahoo.com.
Server: ns1.yahoo.com
Address: 66.218.71.63
Name: yahoo.com
Addresses: 206.190.60.37, 68.180.206.184
>
두개의 A 레코드가 응답되었다.
206.190.60.37, 68.180.206.184
웹브라우저는 둘 중에 아무곳이나 접속하게 된다.
댓글