박진우 / E-mail : reduck96@monster.scu.ac.kr
|
전산실 관리자들이라면 다음과 같은 일로 인해 많은 시간을 허비하는 일이 있을 것이다. 새로운 계정을 만들 때, 기존 계정을 가진 User들의 Data를 정리할 때...관리할 컴퓨터가 3~4대정도면 무리 없이 할 수 있을 테지만, 10대 이상이라면 이야기는 달라진다. 만약 여러 사람들의 Data와 계정을 한 곳에서 관리할 수 있다면 얼마나 편하겠는지 생각해 보자. 바로 YP(구 NIS)를 구축하는 것이다.
1. YP(구 NIS)란 무엇인가 YP 의 정식 명칭은 NIS version 2 를 말한다. 그러나 NIS+와 구별 짓기 위해 YP(Yellow Page) system 이라는 이름이 많이 쓰인다. NIS는 Network Information System 의 약자이다. 1980년대 중반, Sun Microsystem 에서는 두 가지
protocol 을 내놓았는데, 현재 Sun Microsystem 에서는 NIS+를 제공하고 있는데, 이는 NIS version 3에 속하며, 우리가 구축하려고 하는 NIS version 은 2이다. YP system의 대략적인 구조도
2. YP system 구축을 위한 준비 YP system 은 네트워크 기반 위에 구축이 되기 때문에 네트워크 상태가 안정적이어야 된다. 네트워크 상태가 불안정하면 data의 손실 및 클라이언트들의 오작동 등 여러 가지 안좋은 현상들이 일어나게 된다. 보통 하나의 서브넷에 서버와 클라이언트들이 같이 물려있으면 괜찮다. 만약 네트워크의 traffic 및 collision이 자주 일어난다면 라우터를 중간에 넣는 것이 좋다. 필자는 Linux를 이용하여 라우터/게이트웨이를 만들어 사용하고 있다. 이렇게 외부와 내부 네트워크를 단절시킴으로써 얻는 이득은 YP system 을 최상의 상태로 유지 시킬 수 있고 외부에도 YP system 으로 인한 traffic 을 사전에 예방할 수 있다. 일단, 네트워크가 준비되면 서버가 될 Linux 서버를 준비하면 된다. Linux 서버는 일단 메모리가 커야되고, 특히 하드디스크는 SCSI를 적극 추천한다. YP system 이 구축되면 클라이언트들 모두 서버에 물려있기 때문에 하드디스크에 많은 부하를 주게 된다. 보통 EIDE방식 하드로는 5대 이상의 클라이언트들을 담당하기 벅차다. 그리고 서버가 될 PC의 CPU 는 그렇게 좋은 것을 설치하지 않아도 된다. 서버의 주요 임무는 공유하는 부분의 제공이다. 만약 서버 자체를 사용한다면 CPU는 좋은 것을 설치해 주어야 한다.
3. YP system을 위한 서버 만들기 YP system 은 서버의 역할이 상당히 크다. 필자는
현재 국내에서 가장 많이 사용되는 distribution Linux 로서 Red
Hat 4.2X 를 기준으로 설치법을 기술하려고 한다. ※ 주의할 점 : 이 글을 완벽하게 한번 읽고 시작하기 바란다.
3.1 Linux 설치 이 부분에서 보통 풀 패키지로 설치하는 것이 좋다. 클라이언트에서는 필요 없어도 가끔씩 사용할 프로그램들을 서버에 설치함으로써 그때그때 설치하지 말고 바로 사용할 수 있어서 좋다. 일단 필자는 서버가 될 PC에는 풀 패키지로 설치하는 것을 권한다.
3.2 YP setup YP system을 만들기 위해서는 다음의 소스가
필요하다. 1) yp-client-2.2-7 ftp.uni.paderborn.de /linux/local/yp 위의 각 소스는 국내 유명 FTP사이트에서도 구할 수 있다. 참고로 YP system 은 한가지 치명적인 약점을 지니고 있다. 바로 네트워크상의 보안 문제이다. 각종 데이터가 네트워크상을 돌아다니는데 암호화가 되지 않은 상태로 전달이 되기 때문이다. 만약 외부에서 YP system 을 위한 Group 과 허용조건을 안다면 외부에서도 얼마든지 서버의 내용을 바꿀 수가 있다. 그러나 관리자가 서버내의 보안에 신경을 써준다면 이런 문제는 발생하지 않을 것이다. 그밖에 NIS에 대한 더 많은 정보를 얻기를 원한다면 다음의 사이트를 방문하기 바란다. 일단 Linux 가 설치되어 부팅을 한 후의 단계부터 시작하겠다. /etc 로 자리를 옮기자. 그 곳에 가면 ypserv.conf 라는 파일이 있다. 없다면 소스와 같이 있으니 복사하기 바란다. 이 부분을 적절하게 수정해 주자. 수정하는 부분의 설명은 그 파일안에 같이 있다. 대부분 수정할 필요가 없으니 다음 단계로 넘어가겠다. /etc/rc.d/init.d/ 로 가면, tpserv.conf 파일이
있다. 이 부분을 편집해야 한다. 우선 관리자가 해야 할 일은 도메인
네임을 정하는 것이다. 보통 도메인 네임은 현재 사용하고 있는
도메인과 같이 정해도 되지만 달라도 된다. 필자의 경우, scu.ac.kr
을 도메인으로 사용하고 있는데, YP system 을 위한 도메인으로
SCUPHY 라는 대문자로 된 도메인을 정하여 사용하고 있다. #!/bin/sh 관리자가 위의 파일에서 수정해 주어야 될 부분은
SCUPHY 라고 쓰여진 부분이다. 1n -s /etc/rc.d/init.d/ypserv.conf S90ypserv 라는 명령어를 주자. S90ypserv 는 다르게 표현할
수도 있으니 관리자의 판단에 맡기겠다. 다음으로 /etc/rc.d/init.d 디렉토리에 가서 다음의 명령어를 주자. Cbmod a+rx * (이 부분에 대한 설명은 Client부분에서 설명하겠다.) 이제 시스템을 리부팅하자. Root로 로긴한 뒤,
nisdomainname 이라는 명령을 내려보자. 이제 /var/yp 디렉토리로 가자. 이제 make 명령을 내려주자. 컴파일하는 도중, 에러메시지가 뜨는데, 무시해도 괜찮다. 컴파일이 끝난 뒤, ls 명령을 주면 새로운 디렉토리가 생성된 것을 볼 수 있다. 바로 도메인네임인 SCUPHY 라는 디렉토리가 생긴다. 이제 NIS 서버부분이 끝난 것이다. 이제 NFS부분을 setup 하자. /etc/exports 를 수정하여야 한다. 일단 관리자는 공유할 디렉토리를 결정해야 한다. 필자는 기본적으로 /home 과 /var/spool/mail 부분을 공유할 것을 추천한다. 눈치 빠른 관리자는 아시겠지만, /home 은 각 User 들의 파일을 공유하는 것이고, /var/spool/mail 은 각 User 들의 mail 들을 한 곳에서 일괄적으로 보관하도록 하는 조치이다. 다음의 exports 파일을 보자. #Exports 위의 설정들을 보면 /cdrom/home/home1/home2/var/spool/mail/usr2/pub
디렉토리를 공유하게 되어 있다. monster.scu.ac.kr(rw) A부분은 허용할 client 의 이름이고, B부분은
읽고 쓰는 것을 허용하는 부분이다. 다음으로 Client 들을 설치하는 것이다. 필자는
여러 대의 Client 들에게 동시에 Linux 를 설치하려고 한다. 바로
NFS 를 이용한 인스톨을 하려고 하는 것이다. 사실 Client 들에게는
cd-rom 이 없는 관계로 어쩔 수 없이 NFS로 인스톨 할 수밖에 없다.
그러나 NFS인스톨의 장점은 동시에 여러 대의 Client 에서 Linux
를 인스톨 할 수 있다는 것이다. 위의 서버 부분에서 /pub부분이
공유되게 되어 있는데, 이곳에 Red Hat Linux 인스톨 소스를 놔두면
된다.
4. Client 만들기 필자는 Client에 Linux 가 설치되지 않았다는
전재 아래에서 설명을 시작하겠다. 다음으로는 디렉토리를 기준으로 적으면 된다. Red Hat Linux 4.2X CD 를 /pub 에 통째로 복사를 하였다면 /pub/RedHat 이라고 적어주면 된다. 네트워크 사정에 따라 다르지만, OK를 누르면 마운트에 성공했다는 메뉴가 나온다. 만약 실패했다면 다음 사항을 체크해 보자. 1) IP address 를 잘 설정하여 주었는가 보통 1), 2) 에서 이상을 발견하였다면 문제는
간단하지만, 네트워크 카드가 제대로 인식되지 않는다면 문제가
좀 크다. 보통 autoprobe 로 인식을 해주면 커널이 알아서 인식을
하지만, ne2000 등 저가격 네트워크 카드는 네트워크 카드와 함께
제공된 디스켓을 이용하여 네트워크상태를 체크해야 한다. 이 때
네트워크 카드의 irq 와 io 부분을 알아두자. 다시 설치디스켓으로
부팅을 해서 네트워크 설정부분까지 메뉴를 넘기자. 이때 autoprobe를
하지말고 수동으로 네트워크를 잡아주는 메뉴를 선택하자. 만약
네트워크 카드의 irq 가 5번이고, io 는 320 이라면 다음과 같이
적어주자. 0x5 , 0x320 이렇게 적어주면 커널은 위에서 적어준 정보를 토대로 네트워크 카드를 인식한다. 대부분 이런 방법으로 인식이 되지만, 만약 메뉴에서 설치되어 있는 네트워크 카드가 없다면...별수 없다. CD-ROM 을 구하여 PC의 커버를 벗기고 CD-ROM 을 꽂고 한 대씩 Linux 를 설치하는 노가다를 해야 한다. 여하튼 마운트까지 성공하며 sekdma 부터는 일반적으로 설치하는 메뉴와 똑같이 나오니 관리자가 알아서 패키지를 설치하기 바란다. 그리고 당연히 네트워크 부분을 꼭 설정하여 설치하여야 한다. 기본 Linux 설치가 끝난 뒤, 이제 해야 할 일은 ypbind 를 각 client 들에게 설치해 주는 것이다.
4.1 ypbind 설치 ypbind 소스는 yp-client 소스안에 들어 있다. 컴파일법은 소스안의 README 와 INSTALL 파일을 참조하기 바란다. 일단 컴파일을 하면 몇 개의 파일들이 나온다. 필자는 /usr/sbin 아래에 Copy 를 하였다. 다음으로 yp.conf.example 이라는 파일을 /etc 밑으로 yp.conf 라는 이름으로 Copy 를 하자. Yp.conf 의 내용을 보면 다음과 같다. # /etc/yp.conf: configuration file for
ypbind. See ypbind(8). 위의 내용을 수정해야 한다. ypserver 의 이름을 적어주면 되는데, 필자의 yp-server 는 landau.scu.ac.kr 이므로 다음과 같이 적어주면 된다. # Syntax: 저장하고 빠져 나온다. 다음으로 해줄 일은 부팅때 ypbind daemon 을 띄우는 스크립트를 만드는 일이다. yp-clients 소스안에 예제가 있는데, 필자의 경우는 다음과 같다. # # Setting up NIS: 위의 내용을 ypbindd.init 라는 이름으로 /etc/rc.d/init.d/ 아래에 저장하겠다. 다음으로 해줄 일은 /etc밑에 nisdomainname 이라는 이름으로 다음의 내용을 저장한다. SCUPHY nisdomainname 이라는 파일의 역할은 위의 ypbindd.init 파일의 내용을 보면 바로 yp- 도메인이름을 결정하는 부분이라는 것을 알 수 있다. 다음은 /etc/rc.d/rc3.d 디렉토리에 ln -s /etc/rc.d/init.d/ypbindd.init
S90ypbindd 라고 링크를 한다. 여기서 한가지 주의할 사항이 있다. 위의 서버 부분에도 해당이 되는데, /etc/rc.d/ini.d 아래의 파일들은 모두 실행하는 명령들이라는 점이다. 파일을 만들면 일단 읽기/쓰기 부분만 가능하게 되어있지, 실행은 하지 못하게 되어 있음을 알 수 있다. 다음과 같이 명령어를 주자. /etc/rc.d/init.d 디렉토리에 들어가서, chmod a+rx * 위의 명령어는 모든 유저가 읽고 실행할 수 있는
퍼미션을 주는 것이다. 위의 서버에서도 꼭 해주어야 할 명령이니
주의하기 바란다. 만약 하지 않으면 부팅시 실행이 되지 않기 때문에
daemon 이 뜨지 않는다는 점을 명심하기 바란다. root:Ebdqecb3e2m/y:0:0:root:/root:/bin/bash 위의 파일내용을 보면 마지막 부분에 이상한
기호를 보게 될 것이다. 바로 NIS서버로부터 암호를 얻는 부분임을
알려주는 부분이다. 이에 대한 설명은 yp-client 소스안의 README
파일에 설명되어 있다. 일단 위의 파일내용을 그대로 넣어도 된다.
root::0:root +:*:0:부분만을 첨가하기 바란다. 이제 마지막으로
마운트할 부분, 즉 fstab 을 수정하면 /dev/hdal / ext2 defaults
1 1 원래의 fstab에서 추가한 부분은 landau:/home /home nfs defaults
1 2 부분이다. 필자의 경우 마운트할 디렉토리가 많은 관계로 여러 부분을 마운트 하도록 스크립트를 추가하였다. 중간부분의 /home/home1/home2/var/spool/mail 이라는 부분이 Client 부분의 마운트할 위치이다. 일단 /home/home1/home2/var/spool/mail 부분의 하위 디렉토리를 깨끗하게 지우기 바란다. 만약 디렉토리가 없다면 만들기 바란다. 일반적으로 /home1/home2 부분은 없을 것이다. 필자의 경우 사용자들이 많은 관계로 관리하기 편하게 디렉토리를 나누었기 때문인데, 효율적으로 관리를 원한다면 더 많이 나누어도 상관은 없다. 다만 서버측에서도 디렉토리를 제공하는지 설정파일(서버의 /etc/export)을 확인하기 바란다. /etc/fstab을 모두 수정하였으면 이제 리부팅하는 일만 남았다.
4.2 yp Client 테스트 리부팅을 한 뒤 로긴 프롬프트가 뜨면 절반은
성공이다. Adduser test 하여 test 라는 계정을 만든 뒤, /var/yp 디렉토리에 가서 make 라고 명령어를 준다. /var/yp 에서 계정을 만들 때마다 make 를 해주는 이유는 계정을 만들 때마다 yp server 에서 제공할 정보를 다시 만들어 주어야 하기 때문이다. 이 부분은 cron 대몬으로 한 시간 꼴로 실행을 시켜준다면 단순노동시간을 줄일 수 있다. 일단 make 명령어를 주면 위에서와 마찬가지로 에러폼이 나오는데 무시하자. 다음으로 클라이언트에서 test 라는 계정으로 로긴을 해보자. 암호는 서버에서 만든 암호를 쳐야 한다. 로긴이 되었는가? 되었으면 축하한다. 이제 다른 Client 들도 위의 순서대로 만들기 바란다. 다음으로는 서버에서 계정을 만들고 /var/yp 에서 make 를 치면 된다. yp-client 에서 암호를 바꿀 때는 passwd 명령어가 아닌 yppasswd 명령어로 암호를 바꾸어야 한다. 서버에서 passwd 명령어로 암호를 바꿀 때는 root가 /var/yp 에 가서 make 명령을 주어야 client 에서 변경된 암호를 받게 된다는 점을 명심해 두자.
5. yp system이 제대로 돌아가지 않을 때 5.1 yp server에서 ps -ax 로 ypserv 와 yppasswd daemon 이 제대로 떠있는지 확인해 보자. 5.2 yp
server 에서 도메인 이름이 제대로 들어가 있는지 nisdomainname
명령어로 확인해 5.3 /etc/export 에 있는 디렉토리들이 제대로 각 Client 별로 허용이 되어있는지 확인해 보자. 5.4 /etc 밑의 YP system 에 관련된 설정파일들을 확인해 보자. 5.5 yp client 에서 ypbind daemon 이 제대로 떠있는지 ps -ax 명령어로 확인해 보자. 5.6 yp
client 에서 로긴은 되는데 Write 가 되지 않을 때는 Server 측의
/etc/export 에서 Ypsystem 에 대한 자세한 사항은 /usr/doc/HOWTO/NIS-HOWTO.gz 문서를 참조하기 바란다.
6. 후기 필자의 경우도 초기 NIS-system 을 구축하는데
많은 어려움을 겪었다. 필자의 E-mail: reduck96@monster.scu.ac.kr |