첨부 설정파일은 홈에서 다운 받으세요.(설치이야기 게시판)
질문은 비츠로 홈에서 해주세요.
비츠로 홈 http://vitro.pe.kr 자세한 설정은 김정균씨가 설명해주셨기 때문에
그곳을 참조하기 바란다. http://oops.orghttp://www.isc.org - Internet Software Consortium (ISC)
홈페이지에서 소스를 다운 받는다.
현재 버전은 BIND Version 9.2.1이다.
나는 bind-9.2.2rc1으로 테스트 했다.
소스를 /var/tmp에다가 푼다.
tar xfzp bind-9.2.2rc1.tar.gz -C /var/tmp
네임서버 데몬을 실행할 유저를 추가한다.
useradd -u 25 -s /bin/false -M -r -d /var/named named
보통 유저를 추가해서 그 유저로 데몬을 돌리면
루트로 데몬을 실행할때에 비해 안전하기 때문에
따로 유저를 추가한다.
cd /var/tmp/bind-9.2.2rc1/ 소스 폴더로 이동한다.
vi 로 bin/named/include/named/globals.h 파일을
열어서 다음 부분을 바꿔준다.
run/named.pid/ -> run/named/named.pid
run/lwresd.pid -> run/named/lwresd.pid
이렇게 프로세서 아디가 생기는 경로를 바꿔준다.
그리고 컨피그
CFLAGS="-O2 -march=i686 -funroll-loops"; export CFLAGS
./configure
--prefix=/usr
--sysconfdir=/etc
--localstatedir=/var
--mandir=/usr/share/man
--with-openssl
--with-libtool
--disable-ipv6
누누히 말하듯이 나는 항상 옵션이 길다. /usr 프리픽스로
맞추기 위해서...
make <--- 실제 소스 컴파일
find /* > /root/bind1
설치될 서버의 파일 목록을 작성하기 위해
설친전의 시스템에 존재하는 파일과
디렉토리 목록을 작성해두는 것이다.
make install <-- 컴파일 한 소스를 설치한다.
설치후 퍼미션과 실행에 필요한 디렉토리 생성
strip /usr/sbin/named
mkdir -p /var/named
mkdir -p /var/run/named
install -c -m0600 bin/rndc/rndc.conf /etc/
chown named.named /etc/rndc.conf
chown named.named /var/named/
chown named.named /var/run/named/
/sbin/ldconfig
find /* > /root/bind2
설치하고 난뒤에 생긴 파일들 리스트 조사
diff /root/bind1 /root/bind2 > bind-install
프로그램 설치전에 시스템에 존재하는 파일목록과
프로그램 설치후에 시스템에 존재하는 파일 목록을
비교하여 새로 시스템에 설치된 파일들을 추출한다.
이렇게 하면 새로 설치한 프로그램의 목록을 만들수 있다.
나중에 해당 프로그램을 삭제할때 아주 유용하다.
각 설정 파일들은 /etc/named.conf
/var/named/db.??? <-- 여러 설정 파일은
직접 작성하여야 한다.
첨부 파일에 예제 파일이 있다.
위에서 conf와 /var/named/ 아래에 있는 파일들은
적절히 수정해서 사용하면 된다.
그리고 다음의 내용으로 /etc/sysconfig/named라는
파일을 작성한다. 두개 라인다 주석으로 해두었으나
나중에 네임서버 체인지 루트할때를 위해 필요하다.
#ROOTDIR="/chroot/named/"
#OPTIONS=""
각 설정파일의 퍼미션 바꾼다.
chmod 600 /etc/named.conf
chown named.named /etc/named.conf
chmod 600 /var/named/db.localhost
chown named.named /var/named/db.localhost
chmod 600 /var/named/db.127.
chown named.named /var/named/db.127.
chmod 644 /var/named/db.네트워크
chown named.named /var/named/db.네트워크
chmod 644 /var/named/db.도메인명
chown named.named /var/named/db.도메인명
루트 네임서버의 정보를 받아와서 db.cache라는
파일로 저장하는 방법이다.
dig @198.41.0.4 . ns > /var/named/db.cache
퍼미션 변경
chmod 644 /var/named/db.cache
chown named.named /var/named/db.cache
그리고 init.d/named 파일을 /etc/rc.d/init.d/아래에
복사한뒤에
chkconfig --level 2345 named on
/etc/rc.d/init.d/named restart
서비스 시작한뒤에
echo "nameserver 자신의 아피 주소" > /etc/resolv.conf
서비스가 잘 되는 지 확인한다.
dig vitro.com <- 자신의 도메인명으로
예전버전에선 nslookup이지만 지금은
dig와 host라는 명령으로 변경되었다.
bind 체인지 루트(chroot)하기
네임 서버의 체인지 루트 별 필요없다고 생각할지도
모르나 요즘 같은 보안이 중요한 시대엔 필수라고
할수 있다. 그냥 지나치지 말고 꼭 체인지 루트하는걸
필자는 권한다. 설정도 그렇게 복잡하지 않고 간단하다.
/etc/rc.d/init.d/named stop
우선 서비스 정지
체인지 루트할 디렉토리를 생성 및 복사
mkdir -p /chroot/named
mkdir -p /chroot/named/etc
mkdir -p /chroot/named/var/run/named
mkdir -p /chroot/named/var/named
chown -R named.named /chroot/named/var/run/named/
chown -R named.named /chroot/named/var/named/
mv /etc/named.conf /chroot/named/etc/
cd /var/named
mv * /chroot/named/var/named/
chown named.named /chroot/named/etc/named.conf
chown -R named.named /chroot/named/var/named/*
이런식으로 퍼미션과 소유권을 변경하는걸
깜박하고 안한다면 보안도 문제지만 데몬이
아예 뜨지 않기도 한다. 퍼미션과 소유권을
꼼꼼히 설정하도록 한다.
cp /etc/localtime /chroot/named/etc/
서버의 시간관련 파일도 복사한다.
/etc/sysconfig/named파일의
#ROOTDIR -> ROOTDIR 처럼 주석을 제거한다.
chmod 600 /chroot/named/etc/named.conf
혹시나 해서 기우지만 다시 한번 리솔버파일을
재 작성해준다.
echo "search `domainname`
nameserver 자신의 아피" > /etc/resolv.conf
서비스 재시작
/etc/rc.d/init.d/named restart
ps axw | grep named
네임서버 프로세서가 -t /chroot/naemd/ 디렉토리로 변경
되었는지 확인해서 되었음 잘 된것이다.