6-6. Lmhosts 파일 Windows Networking2008. 11. 17. 20:42
WINS서버를 사용하지 않고 라우트된 도메인 환경에서 서로간에 자원공유가 가능하도록 할 수 있을까? RFC 표준만 그대로 지원한다면 방법은 없다. 하지만 마이크로소프트는 추가로 Lmhosts 파일을 통해서 NetBIOS 이름풀이를 지원하고 있다.
<그림6-16. 'Color' 도메인의 예제 >
<그림6-16>을 예제로 설명하도록 한다. 회사의 도메인 이름은 Color 이다. 이 회사는 서울과 대전으로 지역이 나뉘어 있고 서울에는 Red 라는 이름의 도메인 컨트롤러가 위치해 있다. 서울과 대전에는 각각 Blue와 White 라는 파일서버가 있고, 서울과 대전의 클라이언트들은 도메인으로 로그온을 하고 Blue와 White 2대의 자원을 공유해서 사용하고 있다. 지역별로 구분을 한 예제이지만 서울과 대전이라는 WAN 구간의 경우에 한정된 것은 아니다. 한 지역에서도 라우터로써 네트워크가 나뉘어 있는 상황이라면 <그림6-16>의 예제와 같은 형태로 볼 수 있다. 서울과 대전이라는 지역적인 측면보다는 2개의 서로 다른 네트워크라고 이해하도록 하겠다. WINS서버가 없더라도 같은 네트워크 안에서 클라이언트들은 서버를 찾는데 어려움이 없다. 브로드캐스트라는 차선의 방법이 제공되기 때문이다. 하지만, 문제는 자신과 다른 네트워크 즉 라우터 건너편에 존재하는 서버에게 접근하려면 그때는 문제가 생긴다. 브로드캐스트가 라우터를 넘지 못하므로 서버를 찾을 방법이 없는 것이다.
이것을 해결하기 위해서 클라이언트 컴퓨터에서 lmhosts 파일을 이용할 수 있다. lmhosts 파일은 %systemroot%\system32\drivers\etc 폴더에 위치해 있다. (%systemroot%는 NT기반의 컴퓨터에서는 winnt 폴더를 의미한다.) <그림6-17> 해당폴더에는 몇가지 파일이 더 보인다. 다른 파일들 역시 TCP/IP 환경에서 각각 필요에 따라 사용된다. lmhosts 파일을 자세히 보면 다른 파일과 다른 것을 알 수 있다. hosts, protocol 등의 파일과 비교해서 '종류'를 살펴보면 'SAM 파일'로 되어 있는 것을 알 수 있다. 다른 파일들은 확장자가 없지만 lmhosts 파일은 실제로는 lmhosts.sam 이라는 파일명을 가지고 있다. 윈도우탐색기에서 도구à폴더옵션à보기 메뉴에서 '알려진 파일 형식의 파일 확장명 숨김'옵션을 지워주면 확장자까지를 확인할 수 있다.
lmhosts 파일을 사용하기 위해서는 확장자를 지워줘야 한다. <그림6-17>을 보면 예제의 PC에서는 기본적으로 lmhosts 파일을 사용하지 않고 있음을 알 수 있다. 메모장을 사용해서 lmhosts.sam파일을 열어본다. 이 파일은 텍스트 파일이므로 텍스트를 읽을 수 있는 프로그램이면 뭐든 상관없다. 아래의 <그림6-18>은 메모장을 사용해서 열어본 파일을 보여준다.
<그림6-18. 메모장으로 열은 lmhosts 파일 >
파일에 대한 설명이 있고, 텍스트의 맨 앞에는 한결같이 '#'이 붙어 있다. 이것은 주석처리됨을 의미한다. 끝까지 읽어봐도 #이 붙어 있음을 알 수 있다. 기본적으로는 아무런 내용이 존재하지 않는 빈 파일과 같다. <그림6-11>의 파란박스부분을 보면 #PRE, #DOM 등의 문자들이 보인다. 여기서의 #은 의미를 가진다. 이러한 것들은 특별한 의미가 있는 '태그(tag)'들이다. 사용법은 파일에 기록된 설명을 참고하겠다. 그렇다면 이 파일을 어떻게 사용할까? 예제를 들어서 작성을 해 보자.
<그림6-16>의 예제에서 Green 이라는 컴퓨터의 사용자는 color 도메인으로 로그온 하기 위해서 도메인 컨트롤러인 Red를 찾아야 하고, Blue 라는 서버에 연결하여 자원에 접근도 해야 한다. 이것을 가능하게 하기 위한 방법은 Green 컴퓨터의 lmhosts 파일을 편집함으로써 해결할 수 있다. lmhosts 파일을 열고 <그림6-19>와 같이 기록을 하면 된다.
<그림6-19. lmhosts 파일 편집 >
<그림6-19>화면에서는 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 파일 설정 전 >
시스템 오류 53이(가) 생겼다. 네트워크 경로를 찾지 못했다. (blue 라는 서버를 찾을 수 없음을 보여준다.) < lmhosts 파일 설정 후 >
\\blue의 공유 리소스 공유 이름 유형 용도 설명 --------------------------------------------------------------------- Address Disk "Access to address objects" Down Disk HANKOOK.log Disk "Exchange message tracking logs" NETLOGON Disk Logon server share SYSVOL Disk Logon server share 명령을 잘 실행했다. D:\>nbtstat -c (NetBIOS 이름을 성공적으로 해석(resolution)하면 NetBIOS 캐쉬에 일시적으로 저장한다. 기본적으로 10분이라는 시간동안 저장된다. 캐쉬를 보기 위한 스위치 '-c' 를 이용했다.) 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:\> |
Lmhosts파일에 원하는 정보를 입력했다면 파일을 저장한다. 저장할 때 ‘다른 이름으로 저장’을 선택하여 lmhosts파일을 큰 따옴표로 묶어서 확장자 없이 저장한다. 그렇지 않으면 lmhosts.txt 파일로 저장되어 이 파일은 동작하지 않는다. Lmhosts.sam 파일에서 확장자만 제거해도 무방하다.
<그림6-20. lmhosts 파일 저장>
예제에서 서울에 있는 Black 컴퓨터가 대전의 White를 찾을 수 있도록 하기 위해서는 역시 Black 컴퓨터의 lmhosts 파일에 White 의 정보를 추가해 주어야 한다. WINS 서버를 사용하지 못할 때 해결할 수 있는 차선책이긴 하지만, 어디까지나 차선책일 뿐이다. 사실상 번거롭다. 수많은 클라이언트들을 관리해야 하는 관리자라면 이러한 작업들이 보통 귀찮은 작업이 아니다. lmhosts를 WINS 서버의 오류시 사용하게 될 백업 측면에서 접근을 하는 것 정도라면 고려해 볼만 하지만, lmhosts 파일보다는 WINS서버의 오류시 그것을 대체하게 될 WINS서버를 추가로 구현하는 방법으로 접근하는 것이 바람직한다고 생각한다.
이러한 WINS서버 역시 장기적으로는 사용되지 않을 서비스이다. 현재 시점에서 만일 회사의 네트워크 환경이 Windows2000이상의 환경으로 완전히 전환되고(이것은 서버뿐이 아니라 클라이언트 시스템까지 Windows 2000, Windows XP등으로 바뀌는 것을 의미한다.) 도메인 환경이 구축되었다면, 더 이상 WINS 설정을 하지 않아도 좋다. 이들은 DNS 쿼리를 통하여 자원에 접근하는 것이 가능하기 때문이다. 또한 컴퓨터들의 TCP/IP설정에서 “TCP/IP에서 NetBIOS 사용안함”옵션을 활성화시키는 바람직하다. 이것은 불필요한 네트워크 트래픽을 상당부분 감소시켜 줄 수 있다. 하지만 지금은 분명히 이러한 점에 있어서는 과도기이다. 당분간은 여전히 이전 버전의 클라이언트들을 지원해야 하기 때문에 WINS의 존재는 분명히 필요하다. 제대로 WINS서비스를 잘 구성해 놓는것만으로도 여러분은 네트워크상에서 문제점이 상당히 줄어들었다는 실감할 수 있을 것이다.