출처 : http://socooool.egloos.com/1946017
한참동안 DNS 설정 후 NSlookup 이 엉뚱하게 되는 현상에 대해 명확한 해답을 찾아서 기록한다.
---------------------------------------------------------------------------------------------
이하 원문 발췌
일부 회사에 대해 메일이 발송이 안 되는 문제때문에 원인 분석에 들어갔다.
메일이 안 되면 제일 먼저 하는 것이 nslookup을 이용하여 MX 레코드를 검색해 보는 것인데,
특이 하게도 nslookup에 실패하는 것이었다.
1단계> 사내 DNS를 이용한 lookup
>nslookup -type=mx naver.com
메일 서버를 찾지 못한다.
2단계> 공인 DNS 서버를 이용한 lookup
공인 DNS 서버는 코넷(168.126.63.1), 데이콤(164.124.101.2)이다.
>nslookup
>server 168.126.63.1
>set type=mx
>naver.com
마찬가지로 메일서버에 대한 쿼리를 못하였다.
3단계> 사내 방화벽에 문제가 있을지 몰라 방화벽을 테스트해 보았다.
>portqry -n 164.124.63.1 -e 53 -p both
정상적으로 방화벽에는 문제가 없었다.
4단계> 정상적으로 메일이 발송되는 도메인에 대해 테스트 해보았다.
>nslookup -type=mx daum.net
어라~ 정상적으로 확인이 된다.
그럼. 혹시 .com 도메인만의 문제일까 싶어서 다른 도메인으로 위의 테스트를 반복하였더니
정말 .com 도메인만 query를 할 수가 없었다.
5단계> 바이러스나 스파이웨어등 이상한 것이 뭔가 설치되지는 않았는지 테스트
regmon, filemon, autorun, 백신등 사용가능한 모든 툴을 이용하여 검사를 하였으나,
전혀 문제가 발견되지 않았다.
이쯤 되니까 도대체 뭔지 반드시 알아야 겠다는 오기가 발동하기 시작했다.
6단계> 다른 회사에서도 문제가 발생하는지 테스트
테스트 결과 co.kr 도메인을 사용하는 모든 회사에서 문제가 발생하였다.
com, net, org 를 사용하는 도메인에서는 아무런 문제가 발견되지 않았다.
특이한 것은 co.kr을 사용하더라도, query는 실패하지만 메일은 정상적으로
발송이 되는 곳도 있었다. 도대체 차이점이 무엇인지 확인해 보니,
정상적으로 발송이 되는 곳을 해당 .com 도메인에 대해 사내 DNS서버가
정상적인 주소를 Caching하고 있었다.
그럼. Cache를 지우면 문제가 발생할 것인지 궁금하여
Cache를 지우고 테스트 해보니 마찬가지로 메일이 발송이 되질 않았다.
한가지 특이한 것은 lookup을 해보면 실패하면서 항상 같은 도메인에
대한 정보를 보여주고 있었다.
-com.co.kr
-primary dns server = kidc.pagemoa.com
-reponsible mail addr = admin.pagemoa.com
처음 보는 정보에 이상하단 생각이 들었다.
무심코 봤던 정보 com.co.kr 이 정상적인 루트 도메인이 아닌것이다.
7단계> com.co.kr 의 정보는 무엇일까?
>whois com.co.kr 결과는 그림과 같이 나왔다.
보통은 도메인을 1년내지 2년 주기로 갱신을 하는데, 특이하게 10년이 등록이 되어있었다.
이쯤되면 여기에서 무슨 짓을 하고 있다는 생각이 들었다.
8단계> 원인분석
원인은 Windows DNS Server 기본적인 편의 기능을 악용해서 발생하는 것이다.
test.co.kr 도메인을 이용하여 Domain Controller와 DNS를 설치하면,
기본적으로 DNS suffix는 두 개가 설정이 된다.
하나는 test.co.kr 이고, 또 하나는 co.kr이다.
lookup을 하면 기본적으로 lookup의 대상을 호스트명으로 인식한다.
예를 들어 naver.com을 lookup하는 과정을 살펴보면
먼저, naver.com(한 덩어리로 봄)이라는 것이 있는지 broadcast를 이용하여 검사하고,
다음, naver.com.test.co.kr (첫번째 suffix 적용됨) 이라는 것을 검사하고,
다음, naver.com.co.kr (두번째 suffix 적용됨) 이라는 것을 검사하고,
.....중간 생략.....
마지막으로, naver.com. 을 검사하게 된다.
왜 이런순서가 되냐하면, 원래 도메인명의 마지막은 항상 .(점-루트를 의미)으로 끝나게 되어있다.
그러나, 누구나 아는 것은 생략하여 편리하게 사용하도록 생략이 가능하도록 변경되어졌다.
따라서 naver.com 하면 이것은 처음 호스트명으로 인식하게 되어있는 것이다.
정확하게 사용하려면 naver.com. 이처럼 마지막에 .(점)을 꼭 넣어 주어야 한다.
9단계> 루트를 명시적으로 표시하면 제대로 lookup이 되는지 테스트
-nslookup -type=mx naver.com.
그림과 같이 정상적으로 lookup을 할 수 있다.
그러나 DNS 서버나 메일서버 어디에도 lookup에 강제적으로 .(점-루트)를 넣어 줄 방법은 존재하지 않는다.
그래서 다른 해결방법을 찾아야만 했다. 원리는 간단하다 기본 DNS lookup 순서에서 co.kr을 거치지 않도록
하면 되는 것이다. 언뜻 이해가 안 간다면 다음 그림을 보자
DNS 서버의 TCP/IP 등록정보를 보면 기본적으로 그림과 같이 설정이 되어있다.
이럴 경우 co.kr 도메인을 사용할 경우 항상 문제가 발생하는 것이다.
이것을 아래의 그림과 같이 변경해 주면 문제는 해결된다.
이렇게 하면 test.com.co.kr 에 대한 lookup은 생략이 되는 것이다. 따라서 문제는 해결된다.
재밌는 것은 웹브라우저를 이용한 lookup에는 아무런 영향을 미치지 않는데,
이유는 웹브라우저에 입력하는 url(예, www.naver.com)의 마지막에는 항상 .(점) 이
있는 것으로 인식하기 때문이다.
--------------------------------------------------------------------------------------------
인터넷을 편리하게 사용하기위해 만든 기능을 가지고, 악용하는 것은 결코 좋아 보이지 않는다.
이렇게해서 pagemoa라는 사이트로 들어오게끔 만들어 놓아 봐야 누구도 좋은 말을 하진 않을 것인데,
해결은 했지만, 개운한 기분이 아니고 씁쓸하기만 하다.
이 글을 읽는 분 중 co.kr도메인을 사용하시 곳이 있다면, 빨리 확인하고 적용하기 바라며,
이것은 Windows DNS 뿐만 아니라 BIND에도 동일하게 작동한다. 그나마 BIND는 루트를 명시적으로
표시할 수 있어 원천적으로 해결이 가능하다.
'IT 관련 이야기 > Windows' 카테고리의 다른 글
SQL injectin detection tool (0) | 2008.12.14 |
---|---|
Windows 2003/2008 AD 역할 변경 (0) | 2008.12.07 |
Windows Server 2003 x64 Edition을 실행하는 컴퓨터에 .NET Framework 2.0용 보안 업데이트를 설치하려고 하면 "오류 1324. 'Program Files' 폴더에 사용할 수 없는 문자가 들어 있습니다." 오류 메시지가 나타난다 (0) | 2008.11.04 |
Active Directory Domain 명 변경 절차 (0) | 2008.07.30 |
DNS 쿼리 관련 (1) | 2008.06.25 |