DNS Server - Linux 기본

2021. 7. 26. 01:11Server

"리눅스는 Cent OS 5.5버젼을 이용하였습니다! "

 Linux의 DNS Server 구축을 CentOS 6.5 버젼와 5.5 버전 둘다 해보았는데 5.5버젼이 가장 기본적인 구축방법이라 먼저 작성한다. CentOS가 아닌 다른 운영체제를 이용하여 구축한 DNS Server는 아직까지 공부하지 못했다. 이번 글에서는 패키지 설치부터 기본적인 설정까지만 다룰 예정이다. 다음 글에서 레코드와 위임, Zone까지 다뤄보겠다. 이 과정들은 적어놓은 순서대로 구축하면 된다.

 

1. 패키지 깔기

 리눅스는 한번 받을때마다 한번에 받는 패키지 수가 많고 버젼마다 패키지명이 달라서 상당히 헷갈린다. 때문에 꼭 자신이 구축하려는 서버에 맞는 DNS 패키지를 알아보고 깔아야 한다. 물론 알아보는 방법은 구글링

 

패키지 명 : bind caching-nameserver-9.3.6-4...

               bind-9.3.6-4...

미리 깔아놨다.

#service named start = /etc/rc.d/init.d/named start

 

2. 기본 설정

 기본 설정파일은 2가지가 있다.

#vi /etc/named.caching-nameserver.conf : DNS Server 상세 설정 파일

vi /etc/named.caching-nameserver.conf

① : 자신의 IP

② : localhost -> any로 변경. 허용하는 대역대를 적는 설정이다. 모든 사용자를 구별없이 허용하겠다면 'any'

특정 대역대만을 원한다면 네트워크 주소를 적어주면 된다.(ex 192.168.10.0)

③ : Client들의 질의를 DNS Server가 알아듣도록 해석해주는 것이 resolver. match-clinets에 이 객체의 사용을 허가하는 네트워크 주소를, match-destination에 이 객체의 사용을 허가하는 질의자(Client)를 적어주면 된다.

④ : 캐싱 네이밍 서버로서 사용할건지 설정. yes라고 한다면 사용하게 되며, 본인의 주 영역 이외의 모든 질의에 대한 대답을 하게 되어 보안상 취약해진다. 굳이 그럴 필요가 없으니 'no'

 

#vi /etc/named.rfc1912.zones : 영역별 리스트 파일

//named.rfc1912.zones:
//
// Provided by Red Hat caching-nameserver package
//
// ISC BIND named zone configuration for zones recommended by
// RFC 1912 section 4.1 : localhost TLDs and address zones
//
// See /usr/share/doc/bind*/sample/ for example named configuration files.
//
zone "." IN {						// Root Hint Zone
	type hint;					//       "
    file "named.ca";					// Root Hint에 대한 설정 파일 이름
};

zone "localdomain" IN {  				// "도메인 명"
	type master;					// type = 주영역
    file "localdomain.zone";			 	// 설정 파일 이름 
    allow-update {none;};				// Windows의 '알림'과 동일.
};											

zone "x.com" IN {					// 정방향 영역 도메인 : x.com
	type master;					// 주영역
    file "x.com.zone";					// 정방향 x.com의 설정파일
    allow-update {none;};				// 알림 시스템 X
};
zone "192.in-addr-arpa" IN {				// 역방향 영역 도메인 : x.com
	type master;					// *'역'방향이기 때문에 ip도 반대로 적어준다 
    file "x.com.rev";					// 역방향 x.com의 설정파일
    allow-update {none;};				// 알림 시스템 X
};							// ip의 4옥텟중 일부만 적어준다. 나머지는 나중에 쓰임
//--------------이하 생략------------

 

3. 정방향 역방향 조회 영역 설정

named.rfc1912.zones 파일에서 영역별 리스트를 작성하였다. 이정도 설정은 Windows에서 보면 설치 마법사로 빈 껍데기만 만들어준 것에 불과하다. 도메인에 IP와 레코드, 여러 기능들을 설정하는 방법을 알아보도록 하자. 이번 글에서는 단순하게 SOA, NS, A레코드 정도만 다루겠다.

 

#cd /var/named/ 

 : 일단 영역 상세 파일들이 존재하는 named 디렉토리로 이동. *굳이 할필요는 없다. 

 

# cp localdomain.zone x.com.zone

 : 정방향 영역 상세 정보를 기술하는 파일의 프로토타입 파일. 빈 종이에 쓰는것보다 이 파일을 복사해 수정하는 것이 더 효율적이다. 뒤의 x.com.zone이라는 이름으로 수정, 복사한다. 

 *x.com.zone이라는 이름은 임의이며, named.rfc~파일 정방향 영역에서 file "~"에서 적은대로 생성해주면 된다. 다르면 데몬이 rfc~파일에 적힌대로 상세 설정파일을 찾는데 찾질 못해 Error!

 **꼭 .zone을 붙일 필요는 없다. .dns, .www 뭐든 상관없다. 사실상 rfc에 적힌 파일과 이름만 같으면 된다.

 

#vi x.com.zone

$TTL		86400
@		IN SOA ns.x.com.		root.x.com.		(
			//네임서버       	//네임서버 관리자
				42		: serial (d.adams)		// 일련 번호
                        	3H		: refresh			// 새로고침 주기
                        	15M		: retry				// 응답없음시 재요청 주기
                        	1W		: expiry			// 설정 시간이후 정보 파기
                        	1D)		: minimum			// 정보 유지시간
                                                
				IN NS		ns.x.com.			// NS 레코드
ns				IN A		x.x.x.x				// A 레코드

 

#cp localhosthost..zone x.com.rev : 역방향 프로토타입을 복사

#vi x.com.rev

$TTL		86400
@					IN SOA ns.x.com.		root.x.com.		(
			42		: serial (d.adams)		
                        3H		: refresh			
                        15M		: retry				
                        1W		: expiry			
                        1D)		: minimum			
                                                
					IN NS		ns.x.com.		// NS 레코드
1.10.168				IN PTR		ns			// PTR = A 레코드
// ↑
// 아까 named.rfc~파일에서 192만 적고 나머지를 '역'방향으로 적어주면
// 데몬이 rfc파일에서 도메인과 설정파일을 찾고, 이 상세 설정파일에
// 찾아와 나머지를 찾아 IP를 완성하여 역방향 도메인을 생성

 

 

정방향과 역방향 설정이 끝난 후, 권한 설정을 해줘야 한다. 이유는 DNS Server을 구동시켜주는 데몬이 따로 존재하는데 상세 설정파일들(ex x.com.zone)에 접근하기 위해서 권한과 소유권을 바꾸는 것이다. 기존에 UID(유저 소유권)과 GID(그룹 소유권)이 root이기 때문에 데몬 입장에선 Other 소유권을 가지고 파일에 접근해야하는데, 기존에 Other소유권은 0, 즉 읽기,쓰기,수정 전부 불가능하기 때문에 데몬이 상세 파일을 읽을 수가 없게 된다. 이를 해결하기 위해서 이런식으로 소유권과 권한을 필수적으로 거쳐야 한다.

 

# chown root.named x*      : x로 시작하는 모든 파일에 UID를 root로, GID를 named로 수정

# chmod 777 x*                : x로 시작하는 모든 파일의 권한을 FULL로 부여.

권한과 소유권 변경

#service named restart

 서비스를 재시작해주면 된다. 이 과정에서 뭔가 잘못되었을시 재시작 과정에서 오류가 나는데, 오류 내용이 상당히 복잡해서 뭐가 잘못됬는지 몰라 허둥대는 경우가 많다. 하지만 [fail] 밑의 내용을 찬찬히 읽어보면 뭐가 틀렸는지 대충 감을 잡을 수 있으니 당황하지 말고 천천히 읽어보자. 뭔지만 찾아도 구글링이 가능하다. 

 오류 없이 데몬이 제대로 재시작 됬다면 Client로 가서 nslookup 명령어로 확인해보자.

nslookup

정, 역방향 다 무리없이 잘 작동하고 있다. 이것으로 리눅스 DNS Server 기본을 마치도록 하겠다

'Server' 카테고리의 다른 글

FTP(File Transfer Protocol) Server  (0) 2021.07.30
DNS Server - Linux 심화  (0) 2021.07.28
DNS Server - Windows 심화  (0) 2021.07.23
DNS Server - Windows 기본  (0) 2021.07.23
DNS(Domain Name System) Server  (0) 2021.07.19