강좌
클라우드/리눅스에 관한 강좌입니다.
리눅스 분류

8. SULinux 2.0 DNS서버(Bind) 설정 및 운영 - SULinux 2.0 공개 강좌

작성자 정보

  • 웹관리자 작성
  • 작성일

컨텐츠 정보

본문

8. SULinux 2.0 DNS서버(Bind) 설정 및 운영



  internet의 전신이라 할 수 있는 ARPAnet에 연결된 모든 호스트들에 대한 이름과 주소간의 매핑정보는 HOSTS.TXT라는 파일을 통해 관리되었습니다. 그러나 ARPAnet의 호스트수가 늘어남에 따라 HOSTS.TXT파일 크기와 각 호스트마다 HOSTS.TXT 파일을 갱신하기 위한 트래픽 발생도 증가하였습니다. 또한 호스트이름이 중복될 수도 있었으며 HOSTS.TXT 파일 정보가 각 호스트마다 갱신되는 동안 변경되거나 추가되기도 하였습니다. 이러한 문제점을 해결하기 위해 DNS 시스템을 고안하게 되었습니다.
  DNS(Domain Name Server)는 도메인이름에 대한 IP주소를 알려 주거나 혹은 그 반대로 IP주소에 대한 도메인이름을 알려 주는 시스템입니다.
DNS는 계층적이며 직관적인 구성을 이루고 있습니다. 

  인터넷상의 도메인은 정해진 고유체계가 있으며 모든 도메인은 역트리구조로 계층적 구조를 지니고 있습니다. 1단계 도메인은 최상위 도메인이라고도 하며 대표적으로 4가지 종류의 1단계 도메인이 있습니다.
gTLD(generic Top Level Domain) : 전세계 누구나 등록가능한 도메인(.com, .net 등)
nTLD(national Top Level Domain) : 국가코드에 의한 국가별 도메인(.kr, .jp, .tw등)
iTLD(international Top Level Domain) : 국제기구 등에서 사용할 수 있는 도메인(.int)
sTLD(special Top Level Domain) : 미국내 특정기관이 사용할 수 있는 도메인(.gov, mil)

1. DNS 동작구조


  먼저 사용자 pc에서  www.sulinux.net 도메인명을 입력하게 되면 컴퓨터는 아이피로 인식을 하기 때문에 ① DNS에 아이피를 질의하게 됩니다. 그러면 ② 제일 먼저 root 네임서버에 www.sulinux.net 의 아이피를 질의합니다. 그러면 ③ root 네임서버는 .net 네임서버를 참고하라고 일러 줍니다. ④ .net 네임서버에 질의를 하게 되면 ⑤ sulinux.net 네임서버를 참고하라고 일러 주게 되고 ⑥ sulinux.net 네임서버에서 www.sulinux.net 의 아이피를 질의를 하게 되면  ⑦ 질의한 DNS서버에 www.sulinux.net 의 IP 정보를 주게 됩니다. ⑧ 그러면 DNS는 사용자 PC에 www.sulinux.net 의 IP를 알려 주게 됩니다.



2. 시작 및 종료 , 재시작

  BIND Server는 항상 실행하고 있는 서버 프로그램입니다. SULinux는 BIND를 서비스 프로그램으로 관리하며 다음과 같이 관리할 수 있습니다.

   SULinux의 “서비스 설정”에서 BIND를 시작, 종료, 재시작 할 수 있습니다.
시작 => 시스템 => 관리 => 서버 설정 => 서비스 설정

위 그림은 BIND를 시작, 종료, 재시작 할 수 있는 “서비스 설정”입니다. 위 그림의 서비스 중 “named”을 선택하고 , 아이콘을 눌러 원하는 작업을 할 수 있습니다.

콘솔 접속하여 BIND를 시작, 종료, 재시작 할 수 있습니다.

  위 그림은 service 명령어를 사용하여 BIND를 시작, 재시작, 종료 한 결과입니다. 위와 같은 방법으로 BIND서버를 제어 할 수 있습니다.

3. 설정 및 운영


  1. DNS 도메인 관리

  DNS서버에 도메인을 추가하려면, named.conf 파일에서 형식에 맞게 만들어 주어야 하며, zone 파일 또한 형식에 맞게 만들어 주어야 합니다. 도메인을 추가할 일이 많으면 지속적인 반복작업을 해야 하며, 도메인을 추가할 일이 적으면 도메인을 설정하기 위해 서적을 뒤지거나, 인터넷을 뒤져 설정할 것입니다. SSU의 su_domain프로그램을 이용하면 아주 쉽고 빠르게 도메인을 생성할 수 있습니다.

  1) DNS 도메인 설정
  DNS서버 도메인 관리 프로그램을 처음 실행하면 다음과 같은 경고 메시지가 나타납니다.

  DNS 도메인 설정 중 zone 파일에 DNS도메인 및 관리자 항목이 들어가게 됩니다. 이 DNS도메인 및 관리자 정보를 입력하기 위해서는 다음 설정파일을 편집합니다.

/root/bin/conf/su_util.cfg 설정파일을 편집기로 열어 수정 합니다. 아래 부분은 약 30번째 줄부터 보여주고 있습니다.

  위 설정파일에서 “YOUR-DNS-DOMAIN”부분을 DNS도메인으로 변경하시기 바랍니다.


  2) DNS 도메인 생성
  su_domain명령어로 쉽게 named.conf 파일설정 및 zone파일을 생성할 수 있습니다.

  위 명령어에서 도메인은 www를 제거한 도메인입니다. su_domain은 자동으로 www에 대한 설정을 zone파일에 하게 됩니다.

  위와 같이 입력하면 sulinux.net에 대한 도메인 설정이, named.conf 파일에 생성되며, /var/named/sulinux.net.zone 파일이 생성되게 됩니다. 다음과 같이 설정된 내역을 확인 하였습니다.

  위 내역은 su_domain에 의해서 자동 생성된 설정 내용입니다. zone 파일에 대해 각 항목은  알아보기 쉽게 한글로 주석처리 되어 생성됩니다.


  3) DNS 도메인 내용 수정
  su_domain명령어는 쉽게 특정 도메인의 zone파일을 수정할 수 있게 도와줍니다.

  위와 같이 입력하면, 도메인에 해당되는 zone파일을 열어 vi편집기로 열어 주게 됩니다. su_domain의 zone파일 수정기능을 사용하기 위해서는 vi 명령어 사용법을 먼저 학습하시기 바랍니다. 해당 내용을 수정하면 자동으로 DNS서버를 재 시작됩니다.


  4) DNS 도메인 삭제
  su_domain명령어를 이용하여 설정한 도메인을 쉽게 삭제 할 수 있습니다.

  위와 같이 입력하면, 도메인에 해당되는 zone파일을 삭제합니다. 그리고, named.conf 파일을 열어 해당 도메인의 설정이 위치한 곳으로 커서를 자동 이동시킵니다. 한번 더 확인하고 "dd"를 눌러 해당 라인을 삭제합니다. 그리고는 “<ESC>"키를 누르고 ”:wq"를 눌러 설정파일을 저장하고, vi 편집기를 빠려 나옵니다. 완벽한 삭제를 위해 자동으로 DNS서버는 재 시작됩니다.

 

  2. 도메인 서버 설정

  bind-chroot 패키지가 설치되면 BIND 서비스는 /var/named/chroot 디렉토리를 통하여 실행이 됩니다. SULinux 는 bind-chroot 패키지가 설치되었으므로 /var/named/chroot 디렉토리 아래에  dev/, etc/, proc/, var 의 디렉토리가 존재합니다. 따라서 설정파일의 경로도 /var/named/chroot/etc/named.caching-nameserver.conf 가 됩니다.
/etc/name.conf 는 링크파일입니다.

  그럼 DNS에 새로운 도메인을 추가해 보도록 하겠습니다.
여기서는 192.168.153.129를 네임서버의 아이피로 지정하였습니다.

  ① 새로운 도메인이 인터넷상에서 인식되기 위해서는 DNS 세팅 전에 도메인등록대행기관에 도메인을 등록하여야 합니다. 도메인등록대행기관에 도메인을 등록할 때 도메인이 사용할 1차 네임서버와 2차 네임서버를 여기서 세팅할 네임서버(192.168.153.129)로 지정해야 한다는 것입니다.

  ② 그 다음 /etc/named.conf(/var/named/chroot/etc/named.caching-nameserver.conf)파일에 zone 구문을 설정합니다. 마지막 행에 다음과 같은 zone 구문을 추가합니다.

  ③ 해당 도메인의 zone 파일을 생성합니다.
sulinux.com 도메인에 대한 zone 파일을 /var/named/chroot/var/named/sulinux.net.zone 파일명으로 생성해 줍니다. zone 파일은 아래와 같은 내용으로 입력합니다.

  ④ named 데몬을 재시작합니다.

  ⑤ 마지막으로 설정된 도메인 질의를 테스해 보겠습니다. nslookup 명령어를 통해 질의를 해 보겠습니다.

이렇게 sulinux.net을 질의하였을 때 IP는 192.168.153.129를 알려 줍니다.


  3. zone 파일의 설정법과 해석

  앞서 zone 파일을 생성하여 DNS 서버를 설정을 해 보았습니다. 하나의 zone파일에 모든 도메인에 대한 설정을 셋팅하여 관리할 수도 있으나 하나의 도메인에 하나의 zone파일을 사용하는 것이 관리적으로 합리적인 방법이라 할 수 있습니다.
그럼 zone 파일의 각각의 항목에 대해서 설명하겠습니다.

$TTL
  이 값은 minimum(TTL,Time to Live)항목에 설정되어 있는 값과 의미가 같은 것입니다. 즉, sulinux.net 도메인에 대한 정보를 다른 네임서버에서 가져간 다음 네임서버에 얼마나 보관할 것인가를 지정한 것입니다. 즉 sulinux.net.zone 파일의 정보를 다른 서버에서 가져간 후에 그 서버의 캐시(cache)에 얼마나 보관할 것인가에 대한 설정입니다.

@
  zone파일내에서 @는 origin 도메인을 의미하는 것으로서 /etc/named.conf 파일에 설정되어 있는 도메인명(여기서는 sulinux.net)을 의미합니다. 따라서 @기호 대신 sulinux.net 이라는 도메인을 지정해도 되지만 이때에는 sulinux.net. 이라는 도메인의 끝부분에 반드시 .(마침표)를 표시해 주어야 합니다.

SOA
  SOA는 “start of authority"의 약어로서 해당 도메인(sulinux.net)에 대해여 여기서 설정한 네임서버가 모든 정보를 가지고 있음을 선언한 것으로 sulinux.net 도메인에 대한 네임서비스의 모든 권한이 여기에 있음을 의미합니다.

Serial
  이 부분부터 이하의 Refresh, retry, Expire, Minimum 값들은 모두 secondary 네임서버와 primary 네임서버와의 연동을 어떻게 할 것인가에 대한 설정입니다. 시리얼 값은 정해진 규칙은 없지만 보통 “YYYYMMDDNN"과 같은 형식을 사용합니다. 대부분 도메인설정은 1차 네임서버에서 하고 2차네임서버는 1차 네임서버의 설정 값을 주기적으로 가져가게 되는데 1차 네임서버의 serial 값을 높혀주게 되면 2차 네임서버에서 설정이 변경되었음을 인지하고 zone 파일을 새로운 zone파일로 갱신하게 됩니다.

Refresh
  2차 네임서버에서는 1차네임서버의 변경된 값들이 있는가를 주기적으로 체크하게 됩니다. 이때에 체크할 주기를 결정한 값이 refresh입니다.

Retry
  2차 네임서버가 1차 네임서로의 접근이 안 될 경우에 2차 네임서버는 계속해서 주기적으로 접근을 시도합니다. 이 때 얼마 만에 한번씩 접근을 시도할 것인가를 결정하는 값이 Retry입니다.

Expire
  특정 도메인의 정보를 가져오기 위해서는 2차 네임서버는 1차 네임서버에 연결을 바로 위에서 설정한 retry 주기마다 한번씩 지속적으로 연결을 시도하였으나 결국 expire 시간동안 계속해서 연결이 되지 않으면 2차 네임서버는 해당 도메인의 정보가 삭제되었거나 폐기되었다고 판단하고 이후부터는 연결시도를 하지 않습니다.

Minimum
  이 값은 다른 말로 TTL 값이라고 합니다. TTL이란 “Time to Live"를 의미하는 것으로 해당 도메인의 정보를 다른 네임서버에서 가져갔을 때에 가져간 도메인정보를 얼마나 보관하고 있을 것인가에 대한 시간 값(초 단위)을 설정해 둔 것입니다.

NS레코드
  NS레코드는 해당 도메인의 네임서버를 지정하는 레코드입니다.

  이 도메인에 대한 1차 네임서버가 ns.sulinux.net 이라는 것과 2차 네임서버가 ns2.sulinux.net 이라는 것을 설정한 것입니다.

A레코드
  A레코드는 해당도메인의 실제 IP 주소를 설정하는 레코드입니다. 

  첫 번째 행의 의미는 해당도메인(sulinux.net)의 IP주소가 192.168.153.129라는 것을 의미하고 두 번째 행의 의미는 www.sulinux.net 의 IP주소가 192.168.153.100 이라는 것을 의미합니다.

MX레코드
  MX레코드는 "mail exchanger"의 약자로서 해당 도메인의 메일서버로 사용하게 될 메일서버를 지정한 것입니다. 주의하실 것은 MX레코드에서는 IP주소로 지정해도 되지만 가능하면 도메인명으로 지정하는 것이 좋습니다.

  MX 다음의 숫자는 메일처리의 우선순위를 명시한 것입니다. mail.sulinux.net 메일서버가 먼저 처리를 하는데 응답이 없으면 mail2.sulinux.net 메일서버가 처리를 하게 됩니다. 숫자가 낮은 메일서버에서 먼저 처리하도록 되어 있습니다.

CNAME레코드
  CNAME 레코드는 “Canonical NAME"의 약어로서 특정도메인에 대한 서브도메인을 사용하기 위한 레코드입니다. 

  위의 예에서 첫 번째 행은 A 레코드에 대한 것으로 www.sulinux.net 의 IP주소가 192.168.153.129 라는 것을 지정한 것이며 두 번째 행에서는 ftp라는 이름을 www라는 별칭으로 사용할 수 있도록 설정한 것입니다. 즉, www라는 호스트명과 ftp라는 호스트명이 동일한 IP주소로 매핑 된다는 의미입니다.


  본 강좌는 SULinux 2.0 GUI “사용설명서”를 참조하였습니다. 본 강좌의 개선점이나, 오타등이 있으면 service@linux.kr으로 알려주시기 바라며, 그 밖의 질문은 sulinux.net으로 해 주시기 바랍니다. 2010년 2월에 연구소장 에스유.

관련자료

댓글 0
등록된 댓글이 없습니다.

공지사항


뉴스광장


  • 현재 회원수 :  60,037 명
  • 현재 강좌수 :  35,810 개
  • 현재 접속자 :  104 명