관리 메뉴

IT창고

리눅스 DNS 설정 본문

서버운영/Linux

리눅스 DNS 설정

방구석여포 2017. 9. 18. 22:49

DNS 서비스는 도메인을 IP주소로 변환시켜주는 이름 관리 서비스이며 초기 알파넷의 이름관리 서비스를 위해 사용했던 hosts.txt의 한계를 극복하기 위해 시작된 서비스입니다. 

리눅스에서 도메인 or IP주소를 찾는 프로그램이 있는데 nslookup이라는 프로그램이 있습니다. yum -y install bind-utils 를 입력하여 설치하고 프롬프트 창에 nslookup명령어를 입력하면 됩니다 도메인이나 IP주소를 입력하면 됩니다.


DNS설정을 알아보기전 간단한 도메인 접속를 알아보겠습니다. 리눅스에 X-Windows가 설치되어있다면 init 5를 입력하여 GUI환경으로 접속할수있습니다. yum -y install firefox 를 입력하여 웹브라우저를 설치하고 vi /etc/resolv.conf파일에 nameserver에 설정이 되어있는지 확인합니다. 이제 vi /etc/hosts 파일에 들어가는데 그전에 nslookup으로 naver나 nate같은 사이트의 IP주소를 알아둡니다. hosts파일에 120.50.131.112 www.nate.com 를 입력해주면 resolv.conf파일 설정이 없어도 도메인 접속이 가능합니다. 


가장 간단한 설정인데 윈도우에서도 간단한 변경이 가능합니다 예를 들어 120.50.131.112 는 nate사이트 IP입니다 여기서 C:\Windows\System32\drivers\etc\hosts 에 있는 파일을 열어  120.50.131.112 www.naver.com으로 등록하면 naver가 아닌 nate로 접속하게 됩니다. 요즘에는 백신으로 막기 때문에 관리자 권한으로 접속해야 변경이 가능합니다.


BIND설치와 DNS서버 설정에 대해 알아보겠습니다.

BIND(Berkeley Internet Name Domain) 패키지 설치 후 생성되는 주요 파일 및 디렉토리를 살펴봅니다. 먼저 주요 파일들을 살펴보면 /etc/named.conf는 네임 서버의 주설정파일이고 /etc/named.rfc1912.zones는 존 정보를 설정하기 위한 파일이고 /var/named는 네임서버의 데이터베이스 파일을 보관하는 디렉토리이며 /usr/sbin/named는 네임서버 데몬 파일 입니다. 

yum install bind* 을 입력해서 패키지를 설치합니다.

설치되는 패키지를 살펴보면 bind는 dns 서버 구축 프로그램을 제공하고 bind-utils는 dns서버 질의를 위해 사용되는 유틸리티 모음이고 bind-libs는 BIND와 BIND 유틸리티 프로그램이 사용하는 라이브러리 패키지이며 bind-chroot는 BIND의 chroot환경을 위 사용되는 파일들을 제공합니다. chroot는 change root의 약어로 named 데몬이 사용하는 홈 디렉토리는 일반적으로 /var/named/chroot 를 사용하는데 DNS서버의 보안을 높이기 위한 방식으로 /var/named/chroot 디렉토리를 최상위 '/' 루트로 인식하여 상대 경로로 파일 참조합니다. 그렇기에 설정 파일들은 모두 chroot디렉토리 내부에 있어야합니다. service named start를 입력하고 디렉토리를 확인해보면 알수있습니다.

눈으로 쉽게 확인하면 아래의 순서와 같습니다.

1) service named start 2) service named status 3) chkconfig named on 4) chkconfig --list named 5) netstat -natu | grep -w "53" 6) cat /etc/services | grep -w domain  순서대로 확인해봅니다.

Root 네임 서버 정보 갱신에 대해 알아보겠습니다.

yum -y install wget를 입력해서 wget패키지를 설치하고 wget ftp://rs.internic.net/domain/named.root 를 입력해서 최신named.root파일을 다운로드합니다. 다운로드된 경로는 현재 있는 디렉토리입니다. mv named.root /var/named/ ; cd /var/named를 입력해서 파일을 옮기고 named디렉토리로 이동합니다. cp -p named.root named.ca 를 입력해서 파일을 덮어씌웁니다. cat named.ca로 확인해보면 12번째 줄에 최근 업데이트날짜와 루트서버에 대한 정보가 함께 있습니다.


도메인 설정을 알아보겠습니다.

vim /etc/named.conf 파일은 네임 서버의 주설정 파일인데 vi편집기로 들어가서 설정해줍니다.

위의 사진이 기본 모습인데 listen-on port 53 { any; }; (53번 포트에 접속을 허용할 ip를 작성  any는 모두 접속 가능) , listen-on-v6 port 53 { none; }; (IPv6 연결은 허용하지 않음) , allow-query { any; }; (질의를 하면 질의 응답여부) , recursion yes; 로 변경합니다.


도메인을 추가하는법을 알아보겠습니다.

/etc/named.rfc1912.zones 파일은 도메인 추가를 위해 사용되는 기본 파일로서 이파일은 /etc/named.conf의 지시어 include를 통해 사용되고 도메인 추가는 /etc/named.conf에 직접 설정해도 동일한 결과가 나옵니다.

vi 편집기로 /etc/named.rfc1912.zones 파일의 제일 하단에 아래와 같이 수정합니다.

type의 종류로 master는 해당 존에 대한 정보를 제공하기 위해 지정되었음을 의미하고 slave는 해당 존에 정보를 마스터 서버로 부터 받아 제공하는 슬레이브 네임서버로 지정되었음을 의미합니다 zone 옆에 도메인은 하고싶은 도메인으로 설정하고 맨 아래에있는 도메인은 인버스 도메인입니다.


Tip

ex) 111.222.333.444

IP주소는 두가지 주소로 구분가능한데 네트워크 주소와 특정 호스트를 지칭하는 주소가 있는데 111.222.333 까지는 네트워크 주소이며 444는 특정 호스트를 지칭하는 IP주소입니다. 실제 DNS설정에서는 IP주소를 거꾸로 써주어야 네트워크 주소에서 특정호스트 주소까지 찾아갈수있고 도메인 주소가 왼쪽으로 갈수록 특정 컴퓨터를 지칭하기 때문에 IP주소를 이용하여 특정호스트를 찾아가기 위해서는 IP주소를 거꾸로 사용해야합니다.


정방향 데이터베이스 파일을 생성합니다.

cd /var/named/ 디렉토리로 들어가서 cp named.empty gsk.zone 해줍니다. named.empty는 도메인 데이터베이스 파일 양식입니다. vim gsk.zone으로 파일을 아래와 같이 수정합니다.

역방향 데이터베이스 파일도 생성합니다.

정방향과 비슷한데 cp gsk.zone gsk.rev.zone 복사하고 vim gsk.rev.zone으로 파일을 아래와 같이 수정합니다.

지금까지 설정한 데이터베이스 파일을 확인해봅니다.

1) chown root:named gsk.zone (named데몬이 접근이 가능하도록 Forward존 파일에 소유권을 변경)

2) chown root:named gsk.rev.zone (named데몬이 접근가능하도록 Reverse존 파일에 소유권을 변경)

3) service named restart (설정을 모두 마친 후 네임서버를 다시 시작해 변경사항 적용)

4) named-checkconf /etc/named.rfc1912.zones (설정한 파일의 문법을 검사하는 명령어 메세지출력이없다면 문제없음)

5) named-checkzone gsk.zone gsk.rev.zone (존 설정을 검사할 경우 사용하는 명령어 OK가 출력되면 문제없음)


동작테스트를 해봅니다.

nslookup 명령어를 사용해서 설정했던 www.gsk.com나 ms.gsk.com등을 입력해서 확인합니다 IP주소를 입력해서 역방향 주소가 나오는지도 테스트합니다.

정상적으로 작동한다면 위와 같은 결과가 나옵니다. 여기까지 DNS서버 구성이였습니다.


Tip

라운드 로빈 부하 분산에 대해 알아보겠습니다.

하나의 서버만 운영하면 과부하가 걸려 정상적인 서비스를 하기 힘들수가 있는데 이때 DNS서비스를 분산해서 부하를 줄이는 방법입니다. 

vim /var/named/gsk.zone 파일로 가서 Forward존 데이터베이스파일에 다른 리눅스 서버의 ip를 입력합니다.

ex) www IN A 100.100.100.120  www IN A 100.100.100.130

vim /var/named/gsk.rev.zone 파일도 입력해줍니다. 

ex) 120 PTR www.gsk.com.     130 PTR www.gsk.com.

수정해주었다면 named 데몬을 재시작해줍니다. vi /etc/resolv.conf 파일로 가서 nameserver 에 DNS를 설정한 리눅스ip를 입력합니다. 

설정이 끝났다면 테스트를 해보는데 웹서버를 안만들었기에 핑테스트로 실험해보았습니다.

핑테스트를 해보면 ip가 번갈아가면서 신호를 받는 모습을 확인할수있습니다. dig @ns.gsk.com www.gsk.com +noall +answer 명령어로 확인해보아도 됩니다.

'서버운영 > Linux' 카테고리의 다른 글

리눅스 FTP 설정  (0) 2017.09.21
리눅스 DNS 고급설정  (0) 2017.09.19
리눅스 본딩(Bonding)  (0) 2017.09.16
리눅스 DHCP  (0) 2017.09.15
리눅스 NTP  (0) 2017.09.14
Comments