rpm과 소스compile 방법의 차이는
옵션을 설정할수 있느냐 없느냐의 차이인 것 같음.
rpm의 단점 중 하나가 설정, 옵션을 내가 할 수가 없다 라고 했음
소스 컴파일 방법으로 할 경우 설치 경로등 각종 옵션들을 우리가 설정할 수 있기 때문에 이 방법으로 설치해보자.
소스컴파일 방법으로 깔때 과정은
소스코드다운 & 압축풀기 -> configure -> make -> make install
-configure: 설치하기 전 환경설정 (설치위치,각종옵션세팅) 즉, 셋업을 뜻함.
-make: 기계어로 된 것들을 번역해 실행프로그램을 생성
-make install: 필요한 곳으로 복사
그럼 dns 서버 구축 시작~
1. BIND 데몬 설치
우선 http://pkgs.fedoraproject.org/repo/pkgs (리눅스에서 쓸 수 있는 각종 소스들이 많이 있음, 좋은 곳임ㅋㅋ)
에 가서 네임서버의 서버프로세스인 BIND 데몬을 받자
(OS가 페도라 4이기 때문에 최신버전은 쓰지 않았다. 나는 9.5.0 을 쓸거임)
우선 설치할 디렉토리를 만들고
[root@server103 ~]# mkdir -p /usr/local/dns
[root@server103 ~]# cd /usr/local/dns
필요한 bind데몬을 다운받고 압축풀기
[root@server103 dns]# wget http://pkgs.fedoraproject.org/repo/pkgs/bind/bind-9.5.0.tar.gz/066484717db1d1b1b4092ddcf5d0eb6e/bind-9.5.0.tar.gz
[root@server103 dns]# tar zxvf bind-9.5.0.tar.gz
[root@server103 dns]# cd bind-9.5.0
압축푼 디렉토리에 가서 목록들을 쭈욱 보면 configure Makefile 등등이 보일 것이다.
아까 설명했듯이 configure -> make -> make install 이 과정을 따라하면 됨.
(압축을 풀면 README 파일이 있는데 읽어보자, 다양한 정보가 나와있음, 설치 옵션들이라등가 등등)
[root@server103 bind-9.5.0]# ./configure --help
이 명령어는 configure 할때 쓰는 옵션들 설명이 나온다.
prefix 옵션 = 설치경로 옵션
[root@server103 bind-9.5.0]# ./configure --prefix=/usr/local/dns
(끝나면 WARNING해서 openSSL 뭐시꺵이가 나오는데 가볍게 토스~)
[root@server103 bind-9.5.0]# make && make install
2. named.conf 설정하기 + zonefile
네임서버 데몬(bind)이 시작될 때 제일 먼저 읽는 파일이 바로 named.conf (설정파일) 파일이다.
네임 서버는 설정 파일이 한글자라도 틀리면 데몬 자체가 가동하지 않아서 대소문자 공백 주의해서 입력할 것!!
named.conf 가 어디있느냐하면 바로 우리가 설치한 곳 안에 etc 폴더에 있다 (/usr/local/dns/etc/naemd.conf)
(없으면 etc 폴더 만들고 named.conf 새로 만들어야함
or
/etc/ 에 가면 named.conf가 있는데 복사해오기 --> cp /etc/named.conf /usr/local/dns/etc/named.conf)
나는 그냥 복사해왔음.. 다 쓰기 귀찮아.......
named.conf 설정 형식 중 주요한 부분 설명
options {
directory "/var/named"; ---> 네임서버 데이터베이스 파일(=zone파일)이 들어있는 디렉토리
dump-file "/var/named/data/cache_dump.db"; ---> 정보가 갱신될 때 저장되는 파일
statistics-file "/var/named/data/named_stats.txt"; ---> 통계처리 용도의 파일
~~ 생략 ~~
// query-source address * port 53;
};
zone "도메인이름" IN {
type master; ---> 마스터 네임 서버는 master
file "zone파일명"; ---> 위 options에서 directory에 생성될 "도메인이름" 의 상세설정 파일 (zonefile)
allow-update { ip주소 또는 none; }; ---> 2차 네임 서버의 주소, 생략하면 none이 된다.
};
/etc/naemd..conf 복사해 왔을 때
line 22, 23, 67 (나는 이랬음) 이 행들앞마다 주석처리를 해주삼.
# << 요걸 맨 앞에다가 다 붙여주기 (나중에 이거때문에 에러가 나서...)
이렇게 바꿔주기
#controls {
# inet 127.0.0.1 allow { localhost; } keys { rndckey; };
#};
#include "/etc/rndc.key";
+ 맨 마지막 부분에
zone "naver.com" IN {
type master;
file "naver.com.zone";
};
를 넣어준다.
저장하고 닫기
이제 naver.com.zone 파일을 생성하러 갑시다.
아까 options에서도 봤듯이
directory "/var/named"; ---> 네임서버 데이터베이스 파일(=zone파일)이 들어있는 디렉토리
zonefile들이 있어야 할 곳은 /var/named
[root@server103 etc]# cd /var/named/
[root@server103 named]# vi naver.com.zone
이걸 작성
$TTL 3H
@ SOA @ root. ( 2 1D 1H 1W 1H )
IN NS @
IN A (구글 ip주소)
www IN A (구글 ip주소)
zone file 존파일의 문법 요약
$TTL:
Time To Live 약자, www.naver.com의 호스트 이름을 질의해 갔을 때,
질의해간 다른 네임 서버가 해당 ip주소를 캐시에 저장하는 기간
3H는 3시간을 의미함
@:
named.conf 에 정의된 naver.com를 의미함 (naver.com으로 고쳐써도 되지만 기니까 ㅇㅇ)
SOA:
Start Of Authority 약자. 권한의 시작을 뜻한다.
괄호안의 숫자는 시간을 의미하는데 차례대로 serial, refresh, retry, expire, minimum, hour, day, week를 의미)
IN:
클래스 이름으로 internet을 의미함
NS:
Name Server의 약자로 설정된 도메인의 네임 서버 역할을 하는 컴퓨터를 지정함
A:
호스트 이름에 상응하는 IP주소를 지정함
참고!!
IN A (구글 ip주소) --> 그냥 도메인 네임만 쳤을때 가는 주소
www IN A (구글 ip주소) --> www.도메인네임 쳤을때 가는 주소, 여기다가 만약 다음 ip주소를 친다면
naver.com으로 갈때는 구글로 www.naver.com으로 가면 다음으로 뜨는 것이다.
데몬을 실행시키기 전에 named.conf 파일과 zone file의 에러를 체크하기 위해서
/usr/local/dns/sbin에 가봅시다.
[root@server103 sbin]# cd /usr/local/dns/sbin
[root@server103 sbin]# ll
total 20288
-rwxr-xr-x 1 root root 1117356 Dec 2 15:07 dnssec-keygen
-rwxr-xr-x 1 root root 3041724 Dec 2 15:07 dnssec-signzone
-rwxr-xr-x 2 root root 4289987 Dec 2 15:07 lwresd
-rwxr-xr-x 2 root root 4289987 Dec 2 15:07 named
-rwxr-xr-x 1 root root 3178669 Dec 2 15:07 named-checkconf
-rwxr-xr-x 1 root root 2990301 Dec 2 15:07 named-checkzone
lrwxrwxrwx 1 root root 15 Dec 2 15:07 named-compilezone -> named-checkzone
-rwxr-xr-x 1 root root 739791 Dec 2 15:07 rndc
-rwxr-xr-x 1 root root 1059815 Dec 2 15:07 rndc-confgen
named-checkconf, named-checkzone 이것들이 체크해주는거임
[root@server103 sbin]# ./named-checkconf
[root@server103 sbin]# ./named-checkzone naver.com /var/named/naver.com.zone
zone naver.com/IN: loaded serial 2
OK
이렇게 아무에러 없이 나오면 되는거고, 에러가 뿅 나오면 그걸 고쳐주면 된다.
++현 위치가 sbin이 아닐때는 절대경로로 하면 된다.
[root@server103 named]# /usr/local/dns/sbin/named-checkconf
[root@server103 named]# /usr/local/dns/sbin/named-checkzone naver.com /var/named/naver.com.zone
3. BIND 실행
그 다음 DNS 데몬 bind를 실행시켜보자.
[root@server103 sbin]# ./named
[root@server103 sbin]# ps -ef | grep named
root 15058 1 0 16:40 ? 00:00:00 ./named
root 15068 3571 0 16:41 pts/2 00:00:00 grep named
잘 실행되고 있네요
실행이 안되었다면 문제가 있는것
문제를 확인하기 위해서는 /var/log/messages를 보면 되는데 여기는 리눅스 모든 에러가 기록되고 있는 곳이다.
tail 10 /var/log/messages 로 10줄만 보고
에러를 찾아내서 고친다.
(9.3.1 버전은 named.pid오류가 나는데 아까 named.conf 에가서 options 안에 pid-file "/var/named/named/pid"; 를 입력)
이제 DNS서버를 나로 돌립시다.
항상 DNS정보를 확인하는 곳은 /etc/resolv.conf
[root@server103 sbin]# vi /etc/resolv.conf
nameserver 에 내 아이피주소를 넣는다.
저장하고 나와서..
네트워크 서비스 재시작을 꼭 합시다.
[root@server103 sbin]# service network restart
그럼 확인해봅시다.
우리는 네이버주소를쳤을때 네이버 화면이 아닌 구글 화면이나와야 함!!!!
리눅스안의 웹브라우저를 띄우고 naver.com 이나 www.naver.com 을 쳤을때 네이버 하면이 아닌 구글 화면 이 나오면 성공!
따단~
아니면 nslookup으로 확인가능
[root@server103 sbin]# nslookup
> server
Default server: 192.168.246.128
Address: 192.168.246.128#53
> www.naver.com
Server: 192.168.246.128
Address: 192.168.246.128#53
Name: www.naver.com
Address: 74.125.128.94 --> 구글ip주소
> naver.com
Server: 192.168.246.128
Address: 192.168.246.128#53
Name: naver.com
Address: 74.125.128.94 --> 구글ip주소
이러면 성공이다.
** 혹시 다 했는데도 이렇게 안되면 참고해라
오류때문에 zone,conf 파일 수정이나 다른 것 수정한 후
ps -ef | grep named 해서 실행되고 있는 named 데몬을 kill -9 (작업번호) 명령어를 통해서 죽이고 다시 데몬 실행하고
service network restart 꼭 해주기
bin : 일반 실행파일들 위치
sbin : root(수퍼유저) 가 실행할 파일 위치
var : 로그파일들, 실행시 프로세스 ID를 저장하는 파일들 위치
'Linux' 카테고리의 다른 글
리눅스 메일서버 구축 (sendmail 소스 컴파일 방법) (0) | 2012.12.03 |
---|---|
리눅스 FTP서버 구축 (vsftpd 소스 컴파일 방법) (0) | 2012.11.28 |
네임서버=DNS서버 개념잡기 (0) | 2012.11.27 |
LVM - Logical Volume Manager (0) | 2012.11.21 |
하드디스크 추가하기 (한 개) (0) | 2012.11.20 |