'Dig'에 해당되는 글 2건

  1. 2011.02.01 이집트 정부의 인터넷 차단 4
  2. 2010.11.11 DNS 요청에 대한 TimeOut시간의 진실은.
IT이야기2011. 2. 1. 09:01
이집트 민주화시위로 인해 이집트 정부는 인터넷을 차단했다.


집권세력들이 자기 잘 못은 생각하지 않고, 국민의 입을 막겠다? 표현의 자유를 없애겠다? 온라인상으로 표현할 공간이 없을수록, 국민들에게 남은 선택은 한가지 밖에 없다. 더 격렬하게 시위하여 자신들의 의사를 표현하는 것 뿐이다.
집권세력은 더욱 힘을 잃고 있다. 내부적으로는 국민들의 격렬한 저항을 받아야 한다. 외부적으로는 다른 국가들의 압박을 받아야 한다. 전세계 네티즌으로부터는 비난을 받을 것이다. 샌드위치로 눌리는 집권세력들. 그들이 보기엔 사방이 적이다. 그러나 생각해보면 잘못을 뉘우칠 수 있는 희망의 손길이다.

그건 그렇고, 실제 인터넷이 차단되었는지 .eg 도메인으로 접속시도를 해봤다. 아~ 접속이 되지 않았다. ㅠ.ㅠ

1. 구글에서 site:gov.eg 를 검색해서 적당한 도메인을 고른다.
2. 그 후 dig으로 lookup해보면 도메인을 찾지 못한다. 물론 사이트 접속도 안된다.

$ dig nosi.gov.eg

; <<>> DiG 9.7.1-P2 <<>> nosi.gov.eg
;; global options: +cmd
;; connection timed out; no servers could be reached

$ dig nosi.gov.eg +trace

; <<>> DiG 9.7.1-P2 <<>> nosi.gov.eg +trace
;; global options: +cmd
.            349239    IN    NS    c.root-servers.net.
.            349239    IN    NS    a.root-servers.net.
.            349239    IN    NS    i.root-servers.net.
.            349239    IN    NS    d.root-servers.net.
.            349239    IN    NS    f.root-servers.net.
.            349239    IN    NS    h.root-servers.net.
.            349239    IN    NS    j.root-servers.net.
.            349239    IN    NS    g.root-servers.net.
.            349239    IN    NS    b.root-servers.net.
.            349239    IN    NS    k.root-servers.net.
.            349239    IN    NS    e.root-servers.net.
.            349239    IN    NS    m.root-servers.net.
.            349239    IN    NS    l.root-servers.net.
;; Received 228 bytes from 8.8.8.8#53(8.8.8.8) in 137 ms

eg.            172800    IN    NS    ns5.univie.ac.at.
eg.            172800    IN    NS    frcu.eun.eg.
eg.            172800    IN    NS    rip.psg.com.
;; Received 183 bytes from 192.228.79.201#53(b.root-servers.net) in 215 ms

nosi.gov.eg.        86400    IN    NS    NS2.STARNET.COM.eg.
nosi.gov.eg.        86400    IN    NS    NS1.RAYATELECOM.COM.
;; Received 92 bytes from 147.28.0.39#53(rip.psg.com) in 224 ms

;; connection timed out; no servers could be reached

$ dig eeaa.gov.eg +trace

; <<>> DiG 9.7.1-P2 <<>> eeaa.gov.eg +trace
;; global options: +cmd
.            349523    IN    NS    j.root-servers.net.
.            349523    IN    NS    l.root-servers.net.
.            349523    IN    NS    k.root-servers.net.
.            349523    IN    NS    i.root-servers.net.
.            349523    IN    NS    d.root-servers.net.
.            349523    IN    NS    a.root-servers.net.
.            349523    IN    NS    f.root-servers.net.
.            349523    IN    NS    e.root-servers.net.
.            349523    IN    NS    b.root-servers.net.
.            349523    IN    NS    m.root-servers.net.
.            349523    IN    NS    h.root-servers.net.
.            349523    IN    NS    c.root-servers.net.
.            349523    IN    NS    g.root-servers.net.
;; Received 228 bytes from 8.8.8.8#53(8.8.8.8) in 129 ms

eg.            172800    IN    NS    frcu.eun.eg.
eg.            172800    IN    NS    ns5.univie.ac.at.
eg.            172800    IN    NS    rip.psg.com.
;; Received 183 bytes from 128.8.10.90#53(d.root-servers.net) in 272 ms

gov.eg.            86400    IN    NS    NS.IDSC.gov.eg.
gov.eg.            86400    IN    NS    FRCU.EUN.eg.
gov.eg.            86400    IN    NS    RIP.PSG.COM.
;; Received 131 bytes from 193.171.255.77#53(ns5.univie.ac.at) in 319 ms

eeaa.gov.eg.        86400    IN    NS    NS1.TEDATA.NET.
eeaa.gov.eg.        86400    IN    NS    NS2.TEDATA.NET.
;; Received 75 bytes from 147.28.0.39#53(RIP.PSG.COM) in 214 ms

;; connection timed out; no servers could be reached


Posted by 좋은진호
시스템이야기2010. 11. 11. 22:04
커피닉스(coffeenix.net)의 '범냉이'님이 dig과 nslookup툴을 사용하여, resolv.conf에서 지정한 DNS 서버가 죽었을 경우 timeout시간은 어떻게 되는지 테스트를 하셨다. 테스트한 글은 '커피닉스'에 'DNS 질의 TimeOut의 진실은..'  에 정리되어 있다.

lookup

※ 이미지 출처 : 구글 'domain lookup' 이미지 검색


resolv.conf에 지정한 DNS서버 중 한대가 응답이 없을 때, DNS 요청의 timeout은 5초일까? 1초일까?
왜 이런 궁금증을 갖게됐을까? /usr/include/resolv.h에는 RES_TIMEOUT은  5초로 설정되어 있다. 하지만 dig이나 nslookup으로 테스트한 결과는 1초였기 때문이다.

1) Primary 정상, Secondary 정상
2) Primary 비정상, Secondary 정상
3) Primary 정상
4) Primary 비정상

위 4가지 상황에 대한 테스트 결과는 범냉이님의 글을 읽어보면 결과를 확인할 수 있다.
이후, 추가적인 실험은 제가 넘겨받아 하게 됐다. 자세한 글은 '커피닉스'의 'DNS 질의 TimeOut의 진실은.. (2번째)' 에 쓰여있고, 여기에는 간단하게 요약해서 적었다.

1. dig, nslookup에서는 왜 timeout이 1초인가?

결론적으로는 bind 소스내의 dig과 nslookup툴은 resolv.h의 설정값을 사용하지 않는다. dig소스의 dig.h에 timeout이 1초(#define SERVER_TIMEOUT 1)로 정의되어 있기 때문이다.

2. 만약 resolv.conf에 지정한 모든 서버가 응답이 없다면 dig, nslookup의 timeout 결과는?

정리하면 다음과 같다.
1) resolv.conf에 나열된 서버간 요청 대기는 1초(SERVER_TIMEOUT)
2) 나열된 모든 서버 요청 후 retry시 대기는 5초(UDP_TIMEOUT)
3) retry 횟수는 3번이다.

resolv.conf에 지정한 서버 대수에 따라서,

1) 1대일 때 응답없다면 : 5초 + 5초 + 5초 = 총 15초 소요.
2) 2대일 때 모두 응답이 없다면 : 1초+5초  +  1초+5초  +  1초+5초 = 총 18초 소요
3) 3대일 때 모두 응답이 없다면 : 1초+1초+5초  +  1초+1초+5초   +  1초+1초+5초 = 총 21초 소요

3. gethostbyname() 함수, ping 프로그램 테스트 결과는?

gethostbyname()함수를 사용하는 C프로그램이라면 지금까지 설명한 resolv.h와 resolv.conf을 따르게 된다. 대표적인 것이 ping일 것이다.

resolv.conf에 지정한 DNS서버에서 ICMP응답을 받을 수 있느냐 없느냐에 따라서 대기시간(timeout시간)은 달라지게 된다.

ICMP Port Unreachable

ICMP Port Unreachable (UDP Port 53)


1) ICMP응답이 온다면, timeout없이 바로 다음 서버로 요청을 한다.
2) ICMP응답이 없다면, timeout동안(5초) 대기하다가 다음 서버로 요청을 한다.

4. 효과적인 resolv.conf 설정

만약 resolv.conf에 지정한 첫번째 네임서버(또는 네임서버 VIP) 자체가 죽는다면 ICMP 응답을 못받을 것이다. 따라서 응답시간을 줄이고자 한다면 resolv.conf에서 timeout시간을 줄여주는게 더 나은 대비책이 될 것이다.

options timeout:1 attempts:2 또는
options timeout:1 attempts:1

하지만 resolv.conf 설정을 사용하지 않는 프로그램도 있다. 모든게, resolv.conf 설정대로 될 것이라는 믿음은 절대 금물.

Posted by 좋은진호