자격증과 세미나, 프로그램 이야기를 주저없이 써봅니다.

Since 2008. 10.

IT 자격증/MCTS, MCSE, MCITP

WINS(Windows Internet Name Service) - Lmhosts 파일

럭키맨 운수 2009. 2. 25. 01:18

6. Lmhosts 파일

 

WINS서버를 사용하지 않고 라우트된 도메인 환경에서 서로간에 자원공유가 가능하도록 할 수 있을까? RFC 표준만 그대로 지원한다면 방법은 없다. 하지만 마이크로소프트는 추가로 Lmhosts 파일을 통해서 NetBIOS Name Resolution을 지원하고 있다.

 

<그림3. 'Color' 도메인의 예제>

<그림3>을 예제로 설명하도록 한다. 회사의 도메인 이름은 Color 이다. 이 회사는 서울과 대전으로 지역이 나뉘어 있고 서울에는 Red 라는 이름의 도메인 컨트롤러가 위치해 있다. 서울과 대전에는 각각 Blue와 White 라는 파일서버가 있고, 서울과 대전의 클라이언트들은 도메인으로 로그온을 하고 Blue와 White 2대의 자원을 공유해서 사용하고 있다. 지역별로 구분을 한 예제이지만 서울과 대전이라는 WAN 구간의 경우에 한정된 것은 아니다.

한 지역에서도 라우터로써 네트워크가 나뉘어 있는 상황이라면 <그림3>의 예제와 같은 형태로 볼 수 있다. 서울과 대전이라는 지역적인 측면보다는 2개의 서로 다른 네트워크라고 이해하도록 하자. WINS서버가 없더라도 같은 네트워크 안에서 클라이언트들은 서버를 찾는데 어려움이 없다. 브로드캐스트라는 차선의 방법이 제공되기 때문이다. 하지만, 문제는 자신과 다른 네트워크 즉 라우터 건너편에 존재하는
서버에게 접근하려면 그때는 문제가 생긴다. 브로드캐스트가 라우터를 넘지 못하므로 서버를 찾을 방법이 없는 것이다.

이것을 해결하기 위해서 클라이언트 컴퓨터에서 lmhosts 파일을 이용할 수 있다. lmhosts 파일은 %systemroot%\system32\drivers\etc 폴더에 위치해 있다. (%systemroot%는 NT기반의 컴퓨터에서는 winnt 폴더를 의미한다.) <화면10> 해당폴더에는 몇가지 파일이 더 보인다. 다른 파일들 역시 TCP/IP 환경에서 각각 필요에 따라 사용된다. lmhosts 파일을 자세히 보면 다른 파일과 다른 것을 알 수 있다. hosts, protocol 등의 파일과 비교해서 '종류'를 살펴보면 'SAM 파일'로 되어 있는 것을 알 수 있다. 다른 파일들은 확장자가 없지만 lmhosts 파일은 실제로는 lmhosts.sam 이라는 파일명을 가지고 있다. 윈도우탐색기에서 도구-폴더옵션-보기 메뉴에서 '알려진 파일 형식의 파일 확장명 숨김'옵션을 지워주면 확장자까지를 확인할 수 있다.

< 화면10. lmhosts 파일 >

lmhosts 파일을 사용하기 위해서는 확장자를 지워주어야 한다. 여기서 클라이언트 컴퓨터에서는 기본적으로 lmhosts 파일을 사용하지 않고 있음을 알 수 있다. 확장명을 지워주고 메모장을 사용해서 파일을 열어본다. 이 파일은 텍스트 파일이므로 텍스트를 읽을 수 있는 프로그램이면 뭐든 상관없다. 아래의 <화면11>은 메모장(notepad)를 사용해서 열어본 파일을 보여준다.

 

<화면11.메모장으로 열은 lmhosts 파일>

파일에 대한 설명이 있고, 텍스트의 맨 앞에는 한결같이 '#'이 붙어 있다. 이것은 주석처리됨을 의미한다. 끝까지 읽어봐도 #이 붙어 있음을 알 수 있다. 기본적으로는 아무런 내용이 존재하지 않는 빈 파일과 같다. <화면11>의 파란박스부분을 보면 #PRE, #DOM 등의 문자들이 보인다. 여기서의 #은 의미를 가진다. 이러한 것들은 특별한 의미가 있는 '태그(tag)'들이다. 사용법은 파일에 기록된 설명을 참고하자.

그렇다면 이 파일을 어떻게 사용할까? 예제를 들어서 작성을 해 보자. <그림3>의 예제에서 Green 이라는 컴퓨터의 사용자는 color 도메인으로 로그온 하기 위해서 도메인 컨트롤러인 Red를 찾아야 하고, Blue 라는 서버에 연결하여 자원에 접근도 해야 한다. 이것을 가능하게 하기 위한 방법은 Green 컴퓨터의 lmhosts 파일을 편집함으로써 해결할 수 있다. lmhosts 파일을 열고 <화면12>와 같이 기록을 하면 된다.

 

<화면12. lmhosts 파일 편집>

화면에서는 blue 서버가 192.168.10.200 IP Address를 사용하고 있음을 기록했고, #PRE #DOM 태그를 이용하여 Color 도메인의 도메인 컨트롤러가 Red 이고 Red는 192.168.10.2 IP Address를 사용하고 있음을 나타내고 있다. 여기서 #DOM 은 도메인명을 지정해 주는 것이고, #PRE는 시스템 시작과 동시에 PreLoad 시키는 것을 의미한다. #PRE 태그를 이용하면 시스템이 시작될 때 #PRE 태그가 붙어 있는 라인의 내용을 메모리에 로딩을 하게 되고 이것은 시스템을 끌 때까지는 계속 메모리에 올라와 있게 된다. 또는 명령프롬프트에서 'nbtstat -R'을 이용해서 로딩 시킬 수도 있다. Green 컴퓨터에서 nbtstat 유틸리티를 이용해서 잠시 들여다 보자.

<lmhosts 파일 설정 전>
D:\>net view \\blue <--net.exe 유틸리티를 이용하여 blue 서버의 공유자원 리스트를 요청하고 있다.
시스템 오류 53이(가) 생겼습니다.

네트워크 경로를 찾지 못했습니다. <-- blue 라는 서버를 찾을 수 없음을 보여준다.

< lmhosts 파일 설정 후 >
D:\>net view \\blue
\\blue의 공유 리소스

공유이름     유형              용도설명
---------------------------------------------------------------------
Address       Disk          "Access to address objects"
Down          Disk              
dvd           Disk
HANKOOK.log   Disk          "Exchange message tracking logs"
NETLOGON      Disk          Logon server share
SYSVOL        Disk          Logon server share
영화          Disk

명령을 잘 실행했습니다.

D:\>nbtstat -c <-- NetBIOS 이름을 성공적으로 해석(resolution)하면 NetBIOS 캐쉬에 일시적으로 저장한다. 기본적으로 10분이라는 시간동안 저장된다. 캐쉬를 보기 위한 스위치 '-c' 를 이용했다.

NIC:
Node
IpAddress: [192.168.20.112] Scope Id: []

NetBIOS
Remote Cache Name Table

Name       Type        Host         Address         Life[sec]
------------------------------------------------------------
BLUE      <20>     UNIQUE    192.168.10.200       595

<-- blue <20>이 캐쉬에 등록되었다.
캐쉬에서 사라질 때까지의 남은 시간 (TTL)이 595초임을 알 수 있다.


D:\>nbtstat -R <-- NetBIOS Cache를 모두
삭제하고, lmhosts 파일에서 #PRE 태그가 붙은 레코드를 캐쉬에 로딩시키는 명령이다.


Successful purge and preload of the NBT Remote Cache Name Table.

D:\>nbtstat -c

NIC:
Node
IpAddress: [203.239.61.109] Scope Id: []

NetBIOS
Remote Cache Name Table
      
Name       Type        Host         Address         Life[sec]
------------------------------------------------------------
RED       <03>     UNIQUE    192.168.10.2        -1
RED       <00>     UNIQUE    192.168.10.2        -1
RED       <20>     UNIQUE    192.168.10.2        -1
COLOR     <1C>     GROUP     192.168.10.2        -1

<-- 다시 캐쉬를 확인하니 BLUE 의 레코드는 삭제되고,#PRE 태그가 붙어있던 레코드가 추가된 것이 보인다. TTL이 -1 (무한 대)임을 확인하자.

D:\>

예제에서 서울에 있는 Black 컴퓨터가 대전의 White를 찾을 수 있도록 하기 위해서는 역시 Black 컴퓨터의 lmhosts 파일에 White 의 정보를 추가해 주어야 한다. WINS 서버를 사용하지 못할 때 해결할 수 있는 차선책이긴 하지만 어디까지나 차선책일 뿐이다. 사실상 번거롭다. 수많은 클라이언트들을 관리해야 하는 관리자라면 이러한 작업들이 보통 귀찮은 작업이 아니다.

lmhosts를 WINS 서버의 오류시 사용하게 될 백업 측면에서 접근을 하는 것 정도라면 고려해 볼만 하지만, 그것도 오히여 lmhosts 파일보다는 WINS서버의 오류시 그것을 대체하게 될 WINS서버를 추가로 구현하는 방법으로 접근하는 것이 바람직하다고 생각한다.

이러한 WINS서버 역시 장기적으로는 사용되지 않을 서비스가 된다. 당장 회사의 네트워크 환경이 Windows2000으로 완전히 전환되었다면(이것은 서버뿐이 아니라 클라이언트 시스템까지 Windows 2000으로 바뀌는 것을 의미한다.) 더 이상 WINS 설정을 하지 않아도 좋다. 이들은 DNS 쿼리를 통하여 자원에 접근하는 것이 가능하기 때문이다.아직은 시기상조이다. 당분간은 여전히 이전 버전의 클라이언트들을 지원해야 하므로 WINS의 존재는 분명히 필요하다.