| [ CnUnix ] in KIDS 글 쓴 이(By): Gybrush ( 이 상 헌) 날 짜 (Date): 1996년08월16일(금) 18시21분41초 KDT 제 목(Title): [re] dns 옛날에 제가 보았던 글이 있어 이렇게 올립니다. 참고하시고 도움이 되시기를.... ------------------------------------------------------------------------------- 제목(한): SUN W/S 상에 NIS의 설치 및 그 기능 1. 개 요 NIS는 Name Information Service의 약자로서 흔히 YP(Yellow Pages)라고 불리는 RPC(Remote Procedure Call)를 이용한 응용계층의 소프트웨어를 말한다. 미국의 경 우 전화번호부 책을 yellow book이라 부르는데 YP도 이와 비슷한 의미를 가지며 디 렉토리 서비스를 제공한다. YP는 SUN에서 만든 소프트웨어로서 현재 SUN 시스팀 이외에 Pyramid사의 Pyramid 기종, IBM의 RS6000등의 시스팀에서도 그 소프트웨어를 제공하고 있다. 한편 YP란 용어는 영국의 United Kingdom of British Telecommunications plc의 공식 등록상 표이므로 1991년에 SUN에서 그 동안 사용하던 YP 용어를 NIS로 변경하였다. 그러나 SUN 워크스테이션에서 사용되고 있는 NIS관련 daemon들의 이름은 여전히 'yp'라는 단어를 사용하고 있다 (예를 들어 ypserv, ypbind, rpc.ypupdated, ypxfrd 등이 다). 본 고에서는 NIS의 다양한 기능 전부를 설명하지는 않고 DNS에 연동한 name service의 제공 및 그 설치 방법 , 문제점 발생시 진단법에 대해 설명한다. 2. NIS의 구성 및 기능 가. Master 서버와 Slave 서버 그리고 클라이언트 NIS를 설치할때 NIS의 형태를 결정하게 되는데, 호스트를 서버로 올리는 경우 master 서버와 slave 서버중 하나를 선택해야 한다. 그리고 domainname을 설정해 야 하는데 이때 사용하는 도메인네임은 DNS의 domainname과는 별개임을 주의해야 한다. Master 서버는 한 도메인의 DB 정보를 유지 관리하며, 서비스 요청이 오면 그 에 대한 응답을 해 준다. 또한 slave 서버에게 자신이 가지고 있는 도메인 DB 정 보를 백업하도록 전송해 주어서 master 서버가 서비스를 제공하지 못하는 경우 대신 서비스를 제공할 수 있도록 해 준다. Slave 서버는 앞에서도 언급했지만 Master 서버가 가지고 있는 도메인 DB 정 보를 복사하여 간직하고 있다가 master 서버의 장애 발생시에 대신해서 서비스를 제공해 준다. 호스트를 클라이언트로 설치하는 경우 별도의 소프트웨어 설치는 필요하지 않 으며 단지 ypbind daemon만 실행시켜 주면 된다. 나. 일반 파일을 DBM 파일로의 변환 NIS를 master 서버 형태로 설치하게 되면 /etc/hosts, /etc/networks, /etc/ethers, /etc/services, /etc/protocols 파일들을 DBM 형태의 파일로 새로 만들어서 자신의 DB 내용으로 사용하게 된다. 그리고, 이들 일반 파일들을 사용 해야 하는 경우 이들 파일을 사용하지 않고 NIS 자신의 DB를 사용한다. 여기서 주의할 점은 시스팀이 부팅이 된 후 NIS 서비스가 제공되므로 부팅시에는 각각의 일반 파일들이 사용된다는 것이다. 한편 NIS를 사용하게 되면 앞에서 언급한 일반 파일들의 내용을 변경하는 경우 반드시 NIS의 DB의 내용도 변경시켜 주어야 한다. NIS DB 변경 방법은 /var/yp 디렉토리에서 변경된 파일의 이름을 단지 make 뒤에다 적어주면 된다. 가령 '/etc/hosts' 파일의 내용을 변경한 경우 다음과 같이 '/var/yp' 디렉토리로 가 서 다음의 명령을 실행시켜 주어야 한다. $ vi /etc/hosts . 작업이 끝난 후 . $ cd /var/yp $ make hosts 다. NIS 관련 daemon의 기능 NIS를 설치하고 실행시켜야 하는 기본적인 daemon으로는 ypserv, ypbind가 있 으며, 그 밖에 rpc.ypupdated 등이 있는데 이는 NIS의 사용환경을 고려하여 사용 Ypserv는 /usr/etc/ypserv에 위치하며 ypbind의 서비스 요청을 처리해 주는 기 능을 수행하며, 호스트의 도메인네임으로 설정된 /var/yp/'domainname' 디렉토리 의 DBM 파일들을 가지고 서비스에 대한 응답을 하게 된다. Ypbind는 daemon으로 실행되면서 자신의 NIS 서버 설정을 위해 broadcast를 하는데, 이때 domainname이 같은 호스트중 NIS 서버가 응답을 하면 그 호스트를 를 자신의 NIS 서버로 binding한다. 다음의 그림은 ypserv와 ypbind(앞의 2개는 daemon 형태로 실행됨) 그리고 ypcat 명령어간의 실행 흐름을 보여 주는 것이다. +--------+ | +--------+ | | 1 2 | | | | V +--------+ +--------+ | YPCAT |----------------------------------> | YPSERV | +--------+ 3 +--------+ 1 : 서버가 어디 있는냐 ? 2 : 누가 서버인가 ? 3 : 정보는 어디에 있는가 ? [그림 1] ypbind의 실행 과정 3. NIS 설치 방법 먼저 여기에서 언급하는 NIS 설치는 SUN OS Ver.4.1 이상을 사용하고 있다는 것 을 전제로 이야기한다. 만약에 SUN OS Ver.4.0.3을 사용하는 경우 약간의 차이가 있다. 가. super user로 전환을 한다. # su 나. domainname을 정한다. 이름의 길이는 256까지 가능하나 가능한 짧은 이름이 좋다. 명령어 domainname을 이용해 현재 설정되어 있는 이름을 알 수가 있는데, 대개 기본적으로 noname으로 설정되어 있는 경우가 많으 니, 원하는 이름으로 반드시 설정해야 한다. domainname은 명령어d로 직접 정 해줄 수 있으나, 컴퓨터가 부팅시 /etc 디렉토리에 있는 shell 스크립트를 통 해 /etc/defaultdomain 파일에 적혀진 이름으로 domainname을 설정하므로 반드 시 /etc/defaultdomain 파일에 적어 주어야 한다.(명령어로 domainname을 확 인, 혹은 정해주려면 다음과 같이 하면 된다). # domainname noname # # domainname aa.co.kr # # domainame aa.co.kr 다. NIS service에 관련된 컴퓨터중 master server, slave server, client를 정하 며, 컴퓨터들이 hostname을 가졌는지 확인한다. hostname은 컴퓨터가 booting 시에 /etc/hostname.xx# 파일에 저장된 내용으로 정해진다. xx#는 컴퓨터에서 사용하는 ethernet controller chip이 어느회사에서 만들어졌는지에 따라 달라 진다. (command로 hostname을 확인, 혹은 정해주려면 다음과 같이 하면 된다. # hostname noname # # hostname han # # hostname han 라. /etc/hosts 파일의 내용을 적절히 수정하다. 가능한 각 실에서 한 administrator가 관리할 수 있는 컴퓨터들만 포함되도록 한다. 즉 han이 라는 컴퓨터가 있으면 다음과 같이 /etc/hosts 파일을 작성하며 특히 유의할 점은 loopback address (127.0.0.1)는 반드시 포함되도록 한다. +------------------------------------------------------+ | | |127.0.0.1 localhost | |128.134.1.1 han han.hana.nm.kr loghost | | | +------------------------------------------------------+ 마. directory의 위치를 '/var/yp' 로 옮긴다. 만약 /var 밑에 yp directory가 없으면 필요한 directory와 파일을 다른 시스템에서 복사한다. /var/yp directory 밑에는 'Makefile'과 'updaters' 파일이 있어야 한다. #cd /var/yp 바. 'Makefile' 파일 의 내용중 다음의 line을 설정한다. 아울러 /usr/lib directory에 'NIS.Makefile'이 있는 경우 똑같이 고쳐준다. 변경전 변경후 #B=-b B=-b B= #B= 사. 다음과 같이 'Makefile'을 실행시켜 준다. '-m'의 의미는 YP를 master로 설치 한다는 것이다. # /usr/etc/yp/ypinit -m 아. 7번과 같이 명령어를 실행시 키면 NIS가 몇가지 질문을 하게 되는데, 이때 단지 return key 와 ctrl-d를 이용하여 하면 된다. 그리고 hostname을 입력하 도록 요구하면 ctrl-d로 빠져나와 계속 return key를 치면 된다. 몇가지 error 가 발생해도 문제가 없다. 다음은 앞에서 실행한 명령어의 결과를 보여주는 것 이다(그림자로 표시된 것은 입력한 부분을 나타낸다). Installing the NIS data base will require that you answer a fewquestions. Do you want this procedure to quit on non-fatal errors? [y/n: n] n OK, please remember to go back and redo manually whatever fails. If you don't, some part of the system (perhaps the NIS itself) won't work. At this point, we have to construct a list of the hosts which will run NIS servers. tao is in the list of NIS server hosts. Please continue to add the names for the other hosts, one per line. When you are done with the list, type a <control D>. next host to add: han next host to add: ^D The current list of NIS servers looks like this: han Is this correct? [y/n: y] y There will be no further questions. The remainder of the procedure should take5 to 10 minutes. Building /var/yp/babo/ypservers... Running /var/yp/Makefile... updated group updated hosts make: Warning: Don't know how to make target `/etc/ethers' Current working directory /var/yp updated networks updated rpc updated services updated protocols make: Warning: Don't know how to make target `/etc/netgroup' Current working directory /var/yp make: Warning: Don't know how to make target `/etc/bootparams' Current working directory /var/yp updated publickey updated netid /usr/etc/yp/makedbm /etc/netmasks /var/yp/`domainname`/netmasks.byaddr; updated netmasks couldn't find /etc/timezone couldn't find /etc/auto.master 자. 이로서 NIS를 올리기 위한 기본적인 작업은 끝났고, 그 다음은 필요한 daemon 을 실행시켜야 한다. # ypserv # ypbind 차. 9번까지의 작업은 NIS를 설치하는 작업이고 여기에서 하는 작업은 DNS를 설치 하기 위한 작업이다. 현재 연구개발단내의 대부분의 컴퓨터는 remote server 의 형태로 DNS가 설치되어 있다. SUN의 경우 /etc 밑에 resolv.conf 파일을 만 들어 주면 된다. 다음은 resolv.conf 파일의 내용이다. 도메인 이름이 hana.nm.kr이고 name server로 지정할 시스템의 IP address가 147.6.1.2와 128.134.1.3인 경우의 예이다. +---------------------------------------------+ | | |domain hana.nm.kr. | | | |nameserver 147.6.1.2 | |nameserver 128.134.1.3 | | | +---------------------------------------------+ 위와 같이 nameserver를 2개 이상 지정하면 맨 위의 서버로 query를 보내서 응답이 없을 경우에는 다음에 지정된 nameserver로 query를 보내게 된다. 카. 그 밖의 NIS 관련 daemon이 더 있지만 필요하지 않으므로 , /etc directory 에 존재하는 rc* 파일에서 comment로 처리하여 주면 된다. 참고 : /etc/hosts 파일의 변경 내용을 NIS DB로 바꾸려면 /var/yp directory의 위치에서 다음과 같이 하면 된다. # make hosts 4. DNS 설치 방법 가. 대부분의 호스트들은 단지 DNS의 서비스를 요청하는 형태이므로 Remote Server형태로 DNS를 설치하면 된다. Remote Server는 resolver 기능만을 이용하여 name service를 받는 컴퓨터를 말 하며, name service request가 발생할 때 마다 Master Server에 요청하여 name service를 받는다. 그 결과 동일한 호스트에 대해 여러번 name service request를 하여서 비 효율적이나, 설치방법이 간단하므로 대부분 호스트에서는 Remote Server 로 설치한다. 구성 방법은 /etc/resolv.conf 파일만 있으면 되며, 그 내용은 다음 과 같이 구성하면 된다. 아래 내용에서 domain부분은 자신의 도메인 이름을 적으 면 된다. +---------------------------------------------+ | | |domain hana.nm.kr. | | | |nameserver 147.6.1.2 | |nameserver 128.134.1.3 | | | +---------------------------------------------+ 나. SunOs 4.1.1을 사용하는 경우에는 remote server로 설치하였을 때 name 서비스를 받을 수없는 경우가 발생하는 경우도 있는데 이럴 때에는 Cache Only Server의 형태로 설치한다. 설치 방법은 han.hana.nm.kr: ~anonymous/hana-info/TM/dns.tar화일에 있는 install.txt화일을 참조한다. 다. Solaris2.x에 설치 할 경우에는 /etc/nsswitch.conf 화일의 "host" 부분을 아래와 같이 변경한후 시스템을 rebooting 한다. (/etc/nsswitch.conf 화일이 없는 경우에는 /etc/nsswitch.files을 샘플로해서 만든다) hosts: files dns 5. NIS 설치시의 주의 할 점 호스트에서 syslogd를 실행하는 경우 syslog.conf 에 따라서 각종 정보가 기록 되는데 이 경우 NIS의 hosts DB를 잘못 구성하면 호스트의 성능이 크게 저하되는 경우가 발생한다. 다음은 /etc/hosts 파일의 내용이다. +-----------------------------------+ | 147.6.1.2 ring loghost | +-----------------------------------+ 만약 /etc/hosts 파일의 내용을 다음과 같이 만드는 경우 loghost의 정보로 인 해 호스트가 reboot되는 경우도 발생한다. +--------------------------------------------+ | 127.0.0.1 localhost loghost | | 147.6.1.2 ring ring.kotel.co.kr | +--------------------------------------------+ 간혹 NIS의 daemon이 실행되기 전에 default route가 설정되어 있지 않으면 호 스트가 hangup 상태에 빠지는 경우도 발생하므로 /etc/rc.local 파일상에 다음과 같이 default route를 설정해 주는 것이 좋다. +--------------------------------------------------------------------------+ | | | # | | # Run NIS only if we have a set domainname. | | # | | dname=`domainname` | | if [ "$dname" -a -d /var/yp ]; then | | echo "NIS domainname is $dname" | | echo -n "starting NIS services:" | | | | if [ -f /usr/etc/ypserv -a -d /var/yp/$dname ]; then | | ypserv; echo -n ' ypserv' | | # | | # Master NIS server runs the XFR daemon | | # | | # ypxfrd; echo -n ' ypxfrd' | | fi | | | | if [ -f /etc/security/passwd.adjunct ]; then | | ypbind -s; echo -n ' ypbind' | | else | | ypbind; echo -n ' ypbind' | | | | if [ -f /usr/etc/rpc.ypupdated -a -d /var/yp/$dname ]; then | | rpc.ypupdated; echo -n ' ypupdated' | | fi | | echo '.' | | fi | +--------------------------------------------------------------------------+ 그리고 sendmail daemon은 NIS를 통해 전자우편을 전송하므로 반드시 NIS를 설 치하고 나서 domainname을 반영시켜야 한다. 그러기 위해서는 /etc/aliases 파일 을 dbm 파일로 바꾸기 위해 newaliases를 실행시켜 준다. 6. Test Name Server 설치가 제대로 되었는지 확인하는 방법으로 외국의 호스트를 nslooku과 telnet 명령을 사용하여 확인해 본다. # nslookup sun.com # telnet sun.com 위와 같이 하여 두 명령다 지정 호스트의 IP address를 보여주면 Name Server 설치가 완료된 것이다. 7. 결 론 본고에서는 Name Server 운영과 관련하여 SUN을 중심으로 NIS 기능 및 설치방법에 대하여 소개하였다. NIS는 사용하기가 힘들어서 대부분의 호스트 관리자들이 사용 하지 않으려 하나, 네트워크 환경을 최대한 이용하기 위해서는 꼭 사용해야 하는 기능이다. 본고에서 소개한 자료를 참고삼아 호스트의 환경에 맞추어 NIS를 설치하 면 사용자 환경에 많은 도움이 되리라 생각된다. 항상 함께 하는 이 상 헌 |