온라인 IT미디어 pcBee입니다.
네트워크 명령어 요리법-2
네임서버를 확인한다
     

  라우터까지 정상적으로 통신이 이뤄지면 대상 서버가 다운됐는지 혹은 통신 경로에 장해가 발생할 가능성이 높다. 어느 쪽 문제인지 분별하기 위해서는 tracert 명령어를 사용한다. TCP/IP 통신에서는 사내 랜에 없는 PC는 라우터를 경유하면서 패킷이 옮겨져 상대 서버까지 도달한다. tracert 명령어를 사용하면 어느 라우터를 경유하고 있는지 확인할 수 있으므로 어디서 통신 장애가 발생하는지 알 수 있는 것이다.
 한편 tracert 명령어 외에 pathping 명령어로 확인할 수 있다. pathping 명령어는 네트워크 지연과 네트워크 손실에 관한 정보를 제공하는 명령어다. 다만 경유하는 모든 라우터에 대해 일정시간 동안 ping을 실행해 통계 정보를 산출하기 때문에 인터넷상의 서버는 피하는 것이 좋다.


네임서버를 확인한다
 다음은 네임서버를 찾지 못하는 경우 대처 방법이다. 네임서버의 작동여부는 ping으로 금방알 수 있다(사례 3). 네임서버를 찾지 못하는 경우는 이름 해석(*4)이 되지 않은 경우로 윈도우XP는 7번과 같은 메시지가 표시된다. 이 예에서는 ‘aaa.bbb.ccc’라는 호스트를 발견할 수 없다는 것을 나타내고 있다. 즉 호스트명으로 IP주소를 검색할 수 없다는 얘기이다.

인터넷은 TCP/IP로 이뤄지는데 IP주소를 모르는 한, 통신 자체가 불가능하다. 평상시 웹 브라우저에서 ‘
http://www.betanews.net'이라는 도메인명을 입력하면 페이지가 표시되는 것은 DNS(*5)가 www.betanews.net를 IP 주소로 변환해 웹 서버와 연결하기 때문이다. 즉, 이름 해석이 정상적으로 이뤄지지 않으면 IP주소를 찾을 수 없기 때문에 서버에 접속하지 못할뿐더러 페이지도 표시할 수 없는 것이다.
 이름 해석은 OS와 애플리케이션에 의해 자동적으로 이뤄져 보통 사용자는 의식하지 못한다. 그러나 통신이 불가능한 경우 이름 해석 과정에서 원인이 발생하는 경우가 있으므로 한 번 확인하는 것이 좋을 것이다. 이름 해석이 올바르게 이뤄지고 있는지 어떤지를 확인하려면 nslookup 명령어를 사용하면 된다.


용어 해설 --------------------------------------------------------------------
※4 이름 해석
호스트명이 IP 주소를 요구하는 것. hosts 파일 등, 호스트명과 IP주소를 대응해 변환한다. 호스트명??우 이 이름 해석이 정상적으로 이루어지지 않을 가능성이 있다.

※5 DNS
Domain Name System의 약자. TCP/IP 네트워크에서 도메인/호스트명과 IP 주소에 맞는 표식을 준비하면 도메인/호스트명만 입력해도 IP주소를 찾을 수 있는 이름 해석의 구조. DNS는 전 세계적으로 13대의 루트 DNS서버를 정점으로 하는 디스트리뷰티드 데이터베이스이며 DNS 서버끼리가 서로 데이터를 조회하는 것으로 온 세상의 IP주소를 검색할 수 있다.

-------------------------------------------------------------------- 


사례 3. DNS 서버의 정보를 확인한다
Point! 서버에 등록되어 있는 정보를 확인하려면 nslookup

     
▲ 7. 이름 해석이 되지 않을 경우 이러한 에러 메시지가 표시된다.

     
▲ 8. nslookup 명령어를 사용하면 DNS의 트러블 슈팅을 실행할 수 있다. 보통 호스트의 레코드를 지정해(set type=a), 검색하고 싶은 호스트명을 입력하면 된다.

 검색하려는 호스트명이 발견되지 않는 경우는 그 도메인을 관리하고 있는 DNS 서버를 이용해 확인한다. 검색타입을 네임서버로 바꿔(set type=ns), 검색하고 싶은 호스트의 도메인 부분을 검색하면 DNS 서버 정보를 얻을 수 있다. 덧붙여 help를 같이 입력하면 이용할 수 있는 명령어를 표시한다.

(1) 호스트의 레코드를 지정
(2) 타입을 네임서버로 변경
(3) 검색 대상의 도메인을 관리하고 있는 DNS 서버로 변경
 

nslookup [도메인명][-서버명][-서브 명령어]

도메인명

도메인명을 IP주소로 변환한다.

-서버명

DNS 서버에 사용하는 서버를 지정한다.

-서브 명령어

명령어 라인의 옵션으로 1개 또는 복수의 nslookup 서브 명령어를 지정한다.

표 5. nslookup의 서식


 DNS와 연관된 트러블로 생각하기 힘든 것은 DNS 서버의 캐시가 오래된 경우 발생하는 문제다. DNS 서버는 자신이 관리하지 않는 도메인에 대한 문의가 있을 경우 그 도메인을 관리하고 있는 DNS 서버에 문의한다. 그리고 문의에 대한 회답을 최적화하고 네트워크의 부하를 줄이기 위해 저장해둔다. 저장되는 기간은 문의한 DNS 서버에서 설정하지만 그 기간이 지날 때까지는 동일한 내용을 다시 문의할 필요 없이 캐시에 저장된 내용을 회신한다.  따라서 접속하려는 서버의 IP주소 변경 등 DNS 서버 관리자가 정보를 변경해도 자신이 이용하는 DNS 서버의 캐시 기한이 끝날 때까지는 과거 정보로 회답하게 된다.

 이러한 경우 도메인을 관리하고 있는 서버에 nslookup 명령어로 검색하면 변경 사항을 확인할 수 있다. 물론 본래 이러한 문제가 발생하지 않도록 DNS 서버 관리자는 정보 변경 전에 캐시 저장기간을 짧게 하거나 캐시 기한이 지날 때까지 이전 IP주소로도 액세스할 수 있도록 조치를 해둔다.


DNS 리절버의 캐시를 없앤다
 클라이언트는 DNS 서버에 접속하는 형태로 동작하는데 이 DNS 서버에 문??버는 하나의 프로그램으로 존재하는 것이 아니라 다른 프로그램에서도 이용할 수 있는 라이브러리 형태가 일반적이다. 윈도우도 리절버는 라이브러리 형식으로 제공한다.


용어 해설 --------------------------------------------------------------------
※6 리절버
TCP/IP 네트워크에서 IP주소와 도메인명을 연결시키는 DNS를 이용해 호스트명으로 IP주소의 정보를 검색하거나 반대로 IP주소로 호스트명의 정보를 검색하는 소프트웨어. 통상 통신 애플리케이션에 포함되는 기능으로, 사용자는 존재를 의식할 필요가 없다. 이름 해석을 모두 DNS 서버에 맡기는 타입과 한 번 해결된 정보는 캐시에 저장하는 타입이 있다.

-----------------------------------------------------------------------------

 캐시 내용이 알고 싶을 때는 ipconfig 명령어에 displaydns 옵션을 붙여 실행하면 된다(사례 4). 또 윈도우2000/XP의 리절버는 문의에 성공한 내용을 저장할 뿐만 아니라 실패한 문의도 저장한다. 실패한 문의의 캐시는 네거티브 캐시라고 하는데 기본적으로 5분간 캐시에 저장된다(캐시에 남는 시간은 레지스트리의 ‘HKEY_LOCAL_MACHINESYSTEM CurrentControlSetServicesDnscacheParametersNegativeCacheTime’라인을 변경하면 된다(단위 : 초). 통신 상태가 좋지 않은 경우 네거티브 캐시에는 문의에 실패한 도메인 정보가 남는다. 따라서 정상적으로 통신이 가능하더라도 웹 페이지를 표시할 수 없거나 메일 서버에 접속할 수 없는 현상이 발생할 수도 있다.

 서버와 통신할 수 없는 경우에는 리절버의 캐시에 불필요한 정보가 포함되어 있는지, 없는지 확인하는 것이 좋다. 불필요한 정보가 포함되어 있는 경우 리절버가 저장한 정보를 파기하는 것이 좋다. 그러면 다시 DNS 서버에 문의하기 때문에 정상적인 통신이 가능하다. 리절버의 캐시를 없애려면 ipconfig 명령어에 flushdns 옵션을 붙인다.



사례 4. 리절버 캐시 내용을 표시
Point! DNS의 캐시를 없애려면 ipconfig

     
▲ 9. ipconfig 명령어에 displaydns 옵션을 붙이면 리절버의 캐시 내용을 볼 수 있다. ‘Record Type’나 ‘Time To Live’등의 레코드 정보가 캐시 정보다. ‘No Record of type’가 네거티브 캐시다.

     
▲ 10. 리절버의 캐시를 지우려면 ipconfig 명령어에 flushdns 옵션을 붙인다.

패킷을 캡쳐해 문제를 해결한다
 ping이나 tracert, nslookup 명령어를 사용하면 문제 해결을 위한 대부분의 실마리를 찾아낼 수 있지만, 트러블 내용이 복잡한 경우 원인을 단정할 수 없다는 약점이 있다. 네트워크 트러블을 해결하는 가장 강력한 수단은 송수신된 패킷를 캡처하는 방법이다(사례 5). 캡처한 데이터를 해석하기 위해서는 TCP/IP나 각종 프로토콜에 대한 많은 지식이 필요하지만 해석 도구를 이용하면 별다른 지식 없이도 패킷이 제대로 송수신되고 있는지 알 수 있다. 예를 들어 웹 서버에 접속할 수 없는 경우 패킷을 캡처하면 DNS 서버에 문의한 통신이 정상적으로 종료되었는지 혹은 웹 서버에 접속 하려는데 접속을 거부하는지 등을 쉽게 확인할 수 있다.



사례 5. 패킷 캡처의 개념

     
▲ 패킷 캡처의 개념

 일반적으로 통신은 애플리케이션에서 TCP/IP 스택, 그리고 네트워크 드라이버를 경유해 물리 네트워크로 송신되어 상대방에게 전달된다. 보통 네트워크 드라이버나 TCP/IP 스택에 의해 패킷은 파기된다. 그러나 패킷을 캡처하면 네트워크 드라이버까지 전달되는 모든 패킷을 데이터로서 저장할 수 있기 때문에 통신 흐름을 파악할 수 있다. 다만 스위칭 허브를 사용하지 않으면 자기 패킷뿐만이 아니라 다른 시스템의 패킷도 수신되므로 주의해야 한다. 


 그럼 실제로 패킷을 해석하는 방법을 알아보자. 먼저 Windows Support Tools의 netcap 명령어는 윈도우XP CD-ROM의 ‘supporttoolssetup.exe’를 실행해 Windows Support Tools를 설치해야 사용할 수 있다(사례 6). 설치를 끝내고 명령 프롬프트에서 netcap /?를 입력해 도움말을 보자. 가장 마지막 줄에 이용할 수 있는 인터페이스가 표시되므로 자신이 사용하고 있는 인터페이스 번호를 확인한다. 실제로 캡처를 하려면 n옵션으로 인터페이스 번호를 지정하여 netcap 명령어를 실행하면 된다. 캡처한 내용은 기본적으로 환경 변수(*7) TMP 폴더에 저장되지만 tcf 옵션으로 변경할 수 있다.


용어 해설 ------------------------------------------------------------------------------
※7 환경 변수
운영체제나 애플리케이션이 필요로 하는 정보를 등록하는 변수로 시스템이 자동적으로 설정하는 것 외 사용자가 독자적으로 설정할 수 있다. 구체적으로 환경 변수는 ‘windir=C:WINNT’처럼 정의된다. 환경 변수 windir에 의해 윈도우 시스템 디렉토리는 C:WINNT가 된다.

---------------------------------------------------------------------------------------

 윈도우2000 서버는 패킷 캡처와 해석도구로 ‘네트워크 모니터’가 기본으로 포함되어 있으나 윈도우XP는 별도의 소프트웨어가 필요하다. 대표적인 프로그램으로 Ethereal이 있다(사례 7). Ethereal은 패킷 캡처와 해석할 수 있는 도구로 다수의 프로토콜을 지원하며 netcap로 캡처한 파일 형식도 지원하기 때문에 상당히 유용하다.

 Ethereal은 3개의 창으로 구성되어 있다. 가장 위쪽은 캡처 패킷의 개요가 나타나는데  패킷을 선택하면 다른 창에 세부 정보가 표시된다. 선택 패킷의 내용은 중앙과 가장 아래의 창에 표시된다. 중앙 창에는 Ethereal이 해석한 패킷 내용이 나타나고 가장 아래에는 패킷데이터가 나타난다. 기본 설정에서는 캡처한 모든 패킷이 표시되지만 필요에 따라서 필터를 걸치거나 특정 TCP 세션만 표시할 수 있다.


 14번은 실제로 어떻게 패킷이 송수신되고 있는지 나타낸 것이다. 캡처 내용은 웹 브라우저에서
www.betanews.net표시한 경우로 처음 2패킷은 arp에 관한 것이고 그 다음 2개의 패킷이 DNS 문의와 그 회답이다. 패킷에 해당하는 프로토콜은 Protocol 란에서 확인할 수 있다. 문의 내용이나 회답 내용은 가운데 창에 표시된다. DNS에 의해 도메인명의 IP주소가 해결되면 웹 서버에 통신을 시작하며 웹 서버와 웹 브라우저의 통신은 HTML 파일이나 이미지를 수신하므로 거의 동시에 복수 세션을 이용하여 통신한다. 특정 TCP 세션만 표시하는 필터를 이용하면 HTML 파일을 수신하는 세션만 확인할 수도 있다. 또 수동으로 필터를 지정하면 특정 IP주소나 특정 프로토콜을 이용한 통신만 표시할 수 있기 때문에 문제를 발견하기가 수월하다. 
 이와 같이 Ethereal을 이용하면 캡처 패킷의 내용을 쉽게 알 수 있어 프로토콜이나 패킷에 대한 사전 지식 없이도 어느 정도 해석은 가능하다. 그러나 자세한 정보를 파악하기 위해서는 역시 프로토콜에 관한 지식이 필요하다.



사례 6. netcap의 사용 방법

Point! 패킷 캡처는 netcap

     
▲ netcap 명령어를 이용하려면 윈도우XP CD-ROM의 ‘support oolssetup.exe’를 실행하여 Windows Support Tools를 설치한다.

     

     
▲ 캡처할 때는 ‘netcap /N:1’ 등 인터페이스를 지정하여 실행한다.

netcap[/b:#][/t][/f:<필터 파일>][/c:][/n:#][/l:hh:mm:ss][/tcf:<폴더명 >]

/b:#

캡처 버퍼 크기를 설정한다(1M~1000M바이트, 표준은 1M바이트).

/t

버퍼 크기를 설정한다.

/f

필터를 지정한다.

/c

캡처 파일 저장장소를 지정한다.

/n:#

캡처할 네트워크 인터페이스를 지정한다.

/l

캡처 시간을 지정한다(최대99:99:99).

/tcf

캡처 파일의 일시 폴더를 지정한다.

표 6. netcap의 서식


사례 7. 도구를 이용해 netcap로 캡처한 파일을 해석한다
Ethereal Version 0.9.14

     
▲ Ethereal은 netcap로 캡처한 패킷을 해석할 수 있다. 패킷 내용을 해석한 결과는 중앙 창에 표시된다. 프로토콜 레이어마다 정보가 기술되므로 필요한 부분의 정보만 확인할 수 있다.

     
▲ Ethereal은 다양한 필터링 기능을 지원하므로 불필요한 정보를 배제하고 필요한 정보만 표시할 수 있다. TCP의 1세션을 자세히 표시하려면 메뉴의 Follow TCP Stream을 선택하면 된다.

     
▲ 그 밖에도 특정 프로토콜에만 필터링하는 기능도 있다. 필터링을 해제하려면 메인 화면에 있는 Reset버튼을 누른다.

 

출처:베타뉴스