ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • DNS 서버 1
    linux/centOS 2018. 7. 12. 12:16

    ☆ DNS 개요

    DNS (Domain Name System)

     

    DNS는 인터넷 도메인 이름들의 위치를 알아내기 위한 IP 주소로 바꾸어주는 시스템이다. 도메인 이름은 인터넷 주소로서 사람들이 기억하기 쉽고, 의미있게 붙인 이름이지만, 인터넷에서 어떤 컴퓨터를 실제로 찾기 위해서는 숫자 체계로 된 IP 주소가 필요하다.

     

    DNS 서버는 도메인 이름과 이에 대응하는 IP 주소에 관한 데이터베이스를 유지하고 있다가 원하는 컴퓨터에게 제공한다. 예를 들어, 만약 www.terms.co.kr 이라는 도메인 이름을 DNS 서버에게 제공하면, 211.47.67.126 이라는 IP 주소를 알려주는 것이다. 그러나, 도메인이름과 IP 주소를 대응시키는 목록을 중앙에 1개 만을 유지하는 것은 비현실적이고 비효율적이기 때문에, 도메인 이름과 IP 주소 목록은 기관별 체계에 따라 인터넷 도처에 분산되어 있다.

     

    아마도 모든 사용자들이 각자 자신의 인터넷 서비스 공급자에게 문의하면, 지리적으로 가까운 곳 어딘가에 자신을 위한 DNS 서버가 존재하고 있다는 것을 확인할 수 있을 것이다.

     

    네임서버(Name Server)

     

    네임서버란 , 어떤 이름을 한 형태에서 다른 형태로 변환시키는 프로그램을 말한다. 예를 들어, 인터넷은 도메인 이름을 IP 주소로 변환하는 도메인 이름 서버, DNS에 의지하고 있다.

     

     

    동적 DNS(DDNS, Dynamic DNS)

     

    DDNS는 주로 유동 IP 주소를 사용하는 컴퓨터들의 경우에도 DNS 정보를 쉽게 유지할 수 있도록 해주는 방법이다. 일반적으로, 인터넷 서비스 제공사업자는 사용자가 인터넷에 접속해오면 그 시점 현재 사용되지 않는 IP 주소 중 하나를 임의로 골라 할당하게 되는데, 이 주소는 오직 그 사용자가 인터넷에 접속하고 있는 동안에만 독점적으로 제공된다. 이런 방식을 사용하면 각 컴퓨터마다 고정된 IP 주소를 할당하는 방식에 비해 같은 개수의 IP 주소를 가지고도 훨씬 더 많은 수의 컴퓨터를 지원할 수 있게 된다.

     

    그러나 자신의 도메인 이름과 IP 주소를 DNS에 등록해 사용하는 컴퓨터의 경우, 접속할 때마다 자주 IP 주소가 바뀌게 되므로 매우 불편한 일이다. DDNS 서비스 제공자는 사용자 컴퓨터에서 실행되는 특별한 프로그램을 이용, 인터넷 서비스 제공사업자에 의해 IP 주소가 새로이 부여될 때 마다 DNS 데이터베이스를 자동으로 갱신해 준다.

     

    이렇게 하면, 특정 도메인 이름에 대응되는 IP 주소가 자주 바뀌더라도 다른 사용자들이 그 컴퓨터에 접속하기 위해 새로 변경된 IP 주소를 알 필요 없이 전과 같이 도메인 이름을 이용해 쉽게 접속할 수 있게 되는 것이다.

      

     

    리눅스 서버가 주로 사용되는 서비스 목록:

    -> DNS, MAIL, FTP, WEB(WAS), CVS, Cluster Server, ....

     

    일반적인 회사에서 많이 사용되고 있는 서비스 목록:

    -> DNS, WEB, MAIL, FTP, DHCP, NTP, DB(Oracle), ....

     

     

    ☆ DNS 관련 용어

     

    DNS 서버에서 사용하는 도메인에 대한 명확한 용어의 개념을 알아 보자.

     

     

    URL : "http://www.soldesk.com" "http://cafe.daum.net" "http://www.yahoo.co.kr"

     

    www : Hostname

    soldesk.com : Domainname 또는 zonename이라고도 한다.

    www.soldesk.com : FQDN(Fully Qualified Domain Name)

     

    (1). 호스트이름(Host Name)?

    인터넷에서 호스트는, 인터넷을 통해 다른 컴퓨터들과 쌍방향 통신이 가능한 컴퓨터를 말한다. 호스트는 특정한 호스트번호를 갖는데, 이는 네트웍 번호와 합해져서, 고유의 IP 주소를 이루게된다. 인터넷 서비스 제공업체를 통한 PPP 사용자의 경우에는, 접속되어있는 동안에만 고유한 IP 주소를 갖게되며, 그 시간동안은 해당 사용자의 컴퓨터도 하나의 호스트가 되는 것이다. 이러한 맥락에서 보면, 호스트란 네트웍의 하나의 노드라고 볼 수도 있다.

     

    (2). 도메인이름(Domain Name)?

    인터넷에 연결된 다른 컴퓨터와 통신을 하기 위해서는 컴퓨터가 인터넷에 연결되어 있어야 하고 컴퓨터의 주소를 알고 있어야 한다. 컴퓨터의 주소는 숫자로 표현된 주소와 영문자로 표현된 주소의 2가지가 있다.

     

    203.247.51.32 (IP주소)

    숫자로 표현된 주소는 왼쪽 그림과 같이 점으로 구분되어 4단계로 표시되는데, 점으로 구분된 각 숫자에는 0 255 까지의 숫자를 사용할 수 있으며, 전세계적으로 중복되지 않도록 사용해야 한다. 숫자로 표현된 이러한 주소를 인터넷 공인 IP 주소라고 한다.

    그러나 인터넷 사용자들이 다른 컴퓨터와의 통신을 위해 숫자로 표현된 주소를 사용하게 되면, 주소를 이해하거나 기억하기 어렵다는 단점이 있다. 따라서 숫자로 표현된 주소대신에 영문자로 표현된 주소를 사용할 수 있도록 하였는데, 영문자로 표현된 주소는 우리가 실생활에서 사용하는 영문단어로 구성되어 인터넷 사용자들이 쉽게 기억할 수 있고 편리하게 다른 컴퓨터와 통신할 수 있다.

    soldesk.co.kr (도메인주소)

    1 단계: kr

    2 단계: co

    3 단계: soldesk

    영문자로 표현된 주소는 왼쪽 그림과 같이 점으로 구분되어 여러 단계로 구성된다. 각 단계는 오른쪽 맨 마지막에서부터 1단계, 2단계, 3단계 등으로 불리며, 전세계적으로 중복 되지 않는 고유한 이름이 부여된다. 이를 인터넷 도메인이라고 하는데, 인터넷 도메인 이름은 인터넷에 연결된 전세계의 어떠한 컴퓨터와도 통신을 가능하게 해준다.

    [인터넷 도메인 이름의 부여 원칙]

    영문자 A~z, 숫자 0~9 또는 하이픈(-)의 조합으로만 표현되며, 영문자의 대, 소문자는 구별하지 않 고 같은 것으로 간주한다.

    첫 글자는 영문자로 시작하여야 하며, 하이픈으로 끝날수 없다 (우리나라에서는 1999630일부터 숫자로 시작되는 도메인 이름도 허용되었다. 한글도메인).

    길이는 각 단계별로 최소 2자에서 최대 63자까지 가능하다.

    컴마(,), 언더바(_) 등의 기호는 사용할 수 없다.

    전세계적으로 중복되지 않도록 고유해야 한다 (이미 사용되고 있는 도메인 이름은 쓸 수 없다).

     

    (3). FQDN(Fully Qualified Domain Name)?

    FQDN[에프큐디엔]은 시스템을 지칭하는 완전한 이름으로서, 호스트 이름과 그것의 도메인 이름으로 구성된다. 예를 들어, "www"가 호스트 이름이고, "terms.co.kr"이 도메인 이름이라면, FQDN"www.terms.co.kr"가 된다. FQDN은 인터넷상의 특정 호스트를 지칭하기 위한 고유한 인터넷 주소를 가져야한다. 인터넷상에 있지 않지만, 전자우편 주소를 위한 이름공간을 공유하는 일부 호스트를 위해서도, 동일한 이름 구조가 사용된다. FQDN을 가지고 있지 않은 호스트는 뱅 경로를 사용하여 지칭되어야한다.

    모든 인터넷 컴퓨터들과 대부분의 UUCP 사이트들은 1980년부터 작성된 막후의 많은 양의 소프트웨어 덕분에 이제 FQDN을 해석할 수 있다.

     

    (4). 인터넷(Internet)?

    인터넷은 전세계적인 컴퓨터 네트웍 시스템으로서, 사용자가 어떤 컴퓨터에 있든지 간에 그가 사용권한을 가지고 있다면 그 어떤 다른 컴퓨터에도 접속해서 정보를 얻을 수 있는 "네트웍의 네트웍"이다. 인터넷은 1969년에 미국 정부의 ARPA (Advanced Research Projects Agency)에 의해 태동되었으며, 처음에는 ARPANet으로 알려졌었다. 인터넷의 원래 목표는 한 대학에 있는 연구용 컴퓨터의 사용자가 다른 대학에 있는 연구용 컴퓨터의 사용자와 "대화할 수 있는" 네트웍을 만드는 것이었다. ARPANet 설계의 부산물 중 하나는, 메시지가 한 방향 이상으로 나뉘어 전달되거나 또는 다른 길로 전달될 수 있기 때문에, 적의 군사공격이나 기타 다른 재해로 인해 네트웍의 일부가 파괴된 경우에도 제 기능을 발휘할 수 있다는 것이다.

    오늘날 인터넷은 전세계의 수 십억 인구가 액세스할 수 있는 대중 전체를 위한, 협동적이며, 스스로 유지되는 자립 설비이다. 인터넷은 물리적으로 기존의 공중 전화망의 전체 자원의 일부를 활용하고 있으며, 기술적으로는 TCP/IP라고 불리는 일련의 프로토콜들을 사용함으로써 다른 것들과 구별된다. 인터넷 기술에 있어 최근에 나타난 2개의 변화는, 인트라넷과 엑스트라넷이며, 이들 역시 TCP/IP 프로토콜을 사용한다.

    많은 인터넷 사용자들을 위하여, 전자우편이 짧은 편지의 처리를 위한 우편서비스를 실용적으로 대체하고 있다. 전자우편은 인터넷에서 가장 널리 사용되는 응용프로그램이다. 사용자는 또한 IRC를 이용하여 다른 컴퓨터의 사용자와 실시간으로 채팅을 할 수 있다. 최근에는 인터넷 전화설비 및 소프트웨어를 이용하여 실시간으로 음성통화까지 가능하게 되었다.

    인터넷에서 가장 널리 사용되는 서비스 중의 하나가 월드와이드웹이다. 웹의 가장 두드러진 특성은 즉시 상호 참조를 할 수 있게 해주는 방법인 하이퍼텍스트인데, 대부분의 웹사이트들에서 텍스트 내에 다른 색으로 표시되어 있거나 또는 밑줄로 표시되어 있는 단어나 문장이 바로 그 것이다. 사용자가 이러한 단어나 구절을 선택하면, 이것과 관련 있는 사이트나 페이지로 전환된다. 때로는 이러한 링크는 클릭이 가능하도록 만들어진 이미지(또는 이미지의 일부)에도 숨겨져 있을 수 있다. 마우스의 포인터를 하이퍼텍스트 링크에 갖다대면, 포인터의 모양이 화살표에서 손 모양으로 바뀌는데, 이것은 다른 사이트나 페이지로 전환하기 위해 클릭할 수 있다는 것을 가리킨다.

    웹을 사용하면 무수히 많은 량의 정보에 쉽게 액세스할 수 있다. 웹 서핑은 웹 브라우저를 통해 이루어지는데, 유명한 것으로는 넷스케이프 네비게이터와 마이크로소프트의 인터넷익스플로러가 있다. 특정 웹사이트의 모습은 어떤 브라우저를 사용하느냐에 따라 다소 다르게 보일 수도 있다. 또한 최신 버전의 브라우저들은 애니메이션, 가상현실, 소리, 음악파일 등에 있어 이전 버전에 비해 더 많은 특수기능들을 제공한다.

     

    (5). ARPANet (Advanced Research Projects Agency Network)?

    아파넷은 인터넷의 기초가 된 네트웍이다. 아파넷은 패킷 스위칭 개념을 이용하여 전용회선으로 서로 연결된 여러 대의 컴퓨터로 구성되었으며, 주로 미 군당국에서 자금을 지원하였다.

    아파넷은 이후 1980년대에 들어서면서 새로운 군사용 네트웍인 DDF(Defense Data Network)와 국립과학재단의 후원을 받는 과학 및 학술컴퓨터 네트웍인 NSFNet으로 분리되었다. 1995년에 NSFNet, 인터넷 백본(vBNS라고 불린다)PSINet, UUNET, ANS/AOL, 스프린트,MCI, AGIS-Net99 등과 같은 상용 백본 제공업체의 컨소시움으로 바꾸기 위해, 차례대로 단계적 철수를 시작했다.

     

    ☆ 도메인 관리

    BINDBSD 기반의 유닉스 시스템을 위해 설계된 DNS 이다. BIND는 서버와 resolver 라이브러리로 구성되어 있다. 네임서버는 클라이언트들이 이름 자원들이나 객체들에 접근하여, 네트웍 내의 다른 객체들과 함께 이러한 정보를 공유할 수 있게 해주는 네트웍 서비스이다. 이것은 사실상, 컴퓨터 네트웍 내의 객체들을 위한 분산 데이터베이스 시스템이다. BIND는 호스트 이름과 주소를 저장하고 검색하는데 사용되기 위한 BSD 네트웍 프로그램(버전 4.3 이상)에 완전히 통합되어 있다.

    시스템 관리자는 BIND를 네트웍 호스트들의 file(/etc/hosts) 내에 있는 호스트 테이블 룩업의 대체용으로 사용하도록 시스템을 설정할 수 있다. BSD의 기본 설정은 BIND를 사용하는 것이다.

    ※ etc/hosts 파일을 사용한 이전 도메인 관리 방식

    DNS 개념이 이전되기 이전에는 hosts파일에 도메인 주소와 IP주소를 mapping하여 정보를 제공해왔다. 인터넷 이용자의 증가로 인해 도메인 주소가 늘어나면서 더 이상 hosts파일에 저장 할 수 없는 양이 되었고 이에 따라 Domain Name Server에 질의를 통하여 IP 주소와 도메인 주소의 값을 매핑(Mapping)하였다.

     

     

    ☆ DNS Server의 종류

    Master DNS Server : 해당 도메인을 관리하는 DNS 서버(Primary DNS Server)

    Slave DNS Server : 해당 도메인에 대한 백업 복사(Copy)를 유지하는 DNS 서버(Secondary DNS Server)

    Cache only DNS Server : 캐싱 기능만 갖는 DNS 서버 (라우터도 이러한 역할을 할 수 있다.)

    Forwarding DNS Server : 포워딩 기능만 갖는 DNS 서버

     

    Slave(또는 Secondary)Master(또는 Primary) DNS 서버가 비정상 운행될 때와 부하를 분산시키기 위해 운용하며, 다수가 존재할 수 있다.

     

    보통 도메인을 관리하기 위해서는 Primary, Secondary 서버가 필요하게 되며, Secondary는 원칙적으론 외부 네트워크에 위치시켜 정전 등의 사태로 Primary가 다운되었을 때를 대비한다. 따라서, 도메인을 운영하기 위해서는 최소 2(Primary * 1, Secondary * n) 이상의 네임서버가 요구된다. (참고 : 기술적으로 Resolver의 입장에서는 PrimarySecondary가 구분되지 않기에 Primary 만으로도 운영은 가능하나 권고되진 않는다.)

     

    Cache only server는 도메인에 대한 데이터를 관리하지는 않고, resolving 만을 처리해 준다. 만약, 본사와 지사가 있고 이 회사의 Primary, Secondary Name server가 모두 본사에 위치한다고 할 때, 지사에 위치한 네트워크 유저들은 Local DNS server가 없게 된다. 이럴 경우 도메인 resolving이 요구될 때마다 다른 네트워크(본사)로 접속을 시도하게 되므로 약간의 딜레이가 생기게 되며, 본사 네트워크가 단절 되었을시 지사도 실질적으로 인터넷 사용이 불가능한 단점이 있다. 이럴 때 지사에 Cache only server를 운용하면 효과적으로 문제를 해결할 수 있다. 한번 사용한 주소지에 대해서는 Client(Resolver)요청에 대한 응답을 Cache Server에 남겨두어 재 요청을 하지 않아도 되도록 구성되어 있다. , 일정 시간이 지나면 지워지기 때문에 영구보존 되지 않는 정보이다.

     

    ☆ DNS 서버 실습

     

    1) DNS 기본 설정 사항 점검

    서버의 설정 사항을 확인해 본다.

     

    BIND 패키지 설치 유무 확인

    # rpm -qa | egrep '(bind|nameserver)'

    bind-libs-9.3.6-4.P1.el5_4.2 /* BIND 프로그램 라이브러리 */

    bind-utils-9.3.6-4.P1.el5_4.2 /* DNS 네임서버들에게 질의(Query)하는 명령어 */

    bind-chroot-9.3.6-4.P1.el5_4.2 /* DNS chroot 구조 */

    ypbind-1.19-12.el5

    bind-9.3.6-4.P1.el5_4.2 /* BIND 프로그램 */

    -> caching-nameserver 패키지가 설정파일들이 포함된 패키지인데 설치가 되어 있지 않다.

    -> 만약 다른 프로그램도 설치가 되어 있지 않다면 설치 해야 한다.

    # yum -y install bind bind-utils bind-libs bind-chroot caching-nameserver

     

    설정 파일 확인

    # ls /var/named

    chroot/ data/ slaves/

     

    # ls /var/named/chroot

    dev/ etc/ var/

     

    # ls -l /var/named/chroot/etc

    -rw-r--r-- 1 root root 3519 Feb 27 2006 localtime

    -rw-r----- 1 root named 113 Oct 10 20:04 rndc.key

     

    # ls -l /var/named/chroot/var/named

    drwxrwx--- 2 named named 4096 Aug 26 2004 data

    drwxrwx--- 2 named named 4096 Jul 27 2004 slaves

     

    DNS 데몬과 포트 확인

    # which named

    /usr/sbin/named

     

    # named -v

    BIND 9.3.6-P1-RedHat-9.3.6-16.P1.el5

     

    # grep domain /etc/services

    domain 53/tcp # name-domain server

    domain 53/udp

    domaintime 9909/tcp # domaintime

    domaintime 9909/udp # domaintime

     

    기존의 패키지 삭제 및 새로운 패키지 설치

    # yum install caching-nameserver (# yum -y install caching-nameserver)

    ..... (중략) .....

    ================================================================================

    Package Arch Version Repository Size

    ================================================================================

    Installing:

    caching-nameserver i386 30:9.3.6-4.P1.el5_4.2 updates 61 k

     

    Transaction Summary

    ================================================================================

    Install 1 Package(s)

    Update 0 Package(s)

    Remove 0 Package(s)

     

    Total download size: 61 k

    Is this ok [y/N]: y <----- 'y' 입력

    Downloading Packages:

    caching-nameserver-9.3.6-4.P1.el5_4.2.i386.rpm | 61 kB 00:00

    Running rpm_check_debug

    Running Transaction Test

    Finished Transaction Test

    Transaction Test Succeeded

    Running Transaction

    Installing : caching-nameserver 1/1

     

    Installed:

    caching-nameserver.i386 30:9.3.6-4.P1.el5_4.2

     

    Complete!

     

    설치된 패키지 중 caching-nameserver 패키지의 설치된 파일 목록 확인

    # rpm -ql caching-nameserver

    /etc/named.caching-nameserver.conf

    /etc/named.conf

    /etc/named.rfc1912.zones

    /usr/share/doc/caching-nameserver-9.3.6

    /usr/share/doc/caching-nameserver-9.3.6/Copyright

    /usr/share/doc/caching-nameserver-9.3.6/rfc1912.txt

    /var/named/chroot/etc/named.caching-nameserver.conf

    /var/named/chroot/etc/named.conf

    /var/named/chroot/etc/named.rfc1912.zones

    /var/named/chroot/var/named/localdomain.zone

    /var/named/chroot/var/named/localhost.zone

    /var/named/chroot/var/named/named.broadcast

    /var/named/chroot/var/named/named.ca

    /var/named/chroot/var/named/named.ip6.local

    /var/named/chroot/var/named/named.local

    /var/named/chroot/var/named/named.zero

    /var/named/localdomain.zone

    /var/named/localhost.zone

    /var/named/named.broadcast

    /var/named/named.ca

    /var/named/named.ip6.local

    /var/named/named.local

    /var/named/named.zero

     

    # ls -l /etc/named.* (# ls -l /var/named/chroot/etc )

    lrwxrwxrwx 1 root named 52 Mar 6 14:05 /etc/named.caching-nameserver.conf ->

    /var/named/chroot//etc/named.caching-nameserver.conf

    lrwxrwxrwx 1 root named 42 Mar 6 14:05 /etc/named.rfc1912.zones ->

    /var/named/chroot//etc/named.rfc1912.zones

    -> /etc/named.caching-nameserver.conf 파일과 /var/named/chroot//etc/named.caching-nameserver.conf 파일이

    심볼릭 링크로 걸려 있는 것을 확인 할 수 있다.

    -> caching-nameserver 패키지가 설치되면 여러가지 기본 설정파일들이 늘어난다는 것을 확인 할 수 있다.

     

    # ls -l /var/named (# ls -l /var/named/chroot/var/named)

    drwxr-x--- 6 root named 4096 Mar 6 14:29 chroot

    drwxrwx--- 2 named named 4096 Jan 21 01:33 data

    lrwxrwxrwx 1 root named 45 Mar 6 14:05 localdomain.zone ->

    /var/named/chroot//var/named/localdomain.zone

    lrwxrwxrwx 1 root named 43 Mar 6 14:05 localhost.zone ->

    /var/named/chroot//var/named/localhost.zone

    lrwxrwxrwx 1 root named 44 Mar 6 14:05 named.broadcast ->

    /var/named/chroot//var/named/named.broadcast

    lrwxrwxrwx 1 root named 37 Mar 6 14:05 named.ca -> /var/named/chroot//var/named/named.ca

    lrwxrwxrwx 1 root named 44 Mar 6 14:05 named.ip6.local ->

    /var/named/chroot//var/named/named.ip6.local

    lrwxrwxrwx 1 root named 40 Mar 6 14:05 named.local -> /var/named/chroot//var/named/named.local

    lrwxrwxrwx 1 root named 39 Mar 6 14:05 named.zero -> /var/named/chroot//var/named/named.zero

    drwxrwx--- 2 named named 4096 Jan 21 01:33 slaves

     

    named 데몬 start (DNS 서비스 start)

    # service named restart /* 데몬 실행 */

    named를 정지 중: [ OK ]

    named를 시작 중: [ OK ]

    -> 기본 설정 파일들이 생성 되었기 때문에 named 서비스를 restart 한다.

    (참고) 서비스를 start 할때는 /var/log/messages 파일을 모니터링 하면서 서비스를 start 한다.

    [TERM1] # tail -f /var/log/messages

    [TERM2] # service named restart

     

    # chkconfig named on

    # chkconfig --list named

    named 0:off 1:off 2:on 3:on 4:on 5:on 6:off

    -> 정보 확인

     

     

     

    2) DNS 서버 구축

     

    (DNS 설정 파일)

    /etc/named.conf

    /etc/named.caching-nameserver.conf

    /etc/named.rfc1912.zones

    DNS Configuration File

    DNS Configuration File

    DNS Configuration File

    /var/named/exampleXXX.zone

    /var/named/chroot/var/named/exampleXXX.zone

    DNS Forward Lookup Zone File(Domain -> IP)

    DNS Forward Lookup Zone File(Domain -> IP)

    /var/named/exampleXXX.rev

    /var/named/chroot/var/named/exampleXXX.rev

    DNS Reverse Loookup Zone File(IP -> Domain)

    DNS Reverse Loookup Zone File(IP -> Domain)

    /var/named/named.local

    /var/named/named.zero

    /var/named/chroot/var/named/named.local

    /var/named/chroot/var/named/named.zero

    DNS Localhost Forward Lookup Zone File

    DNS Localhost Reverse Lookup Zone File

    DNS Localhost Forward Lookup Zone File

    DNS Localhost Reverse Lookup Zone File

    /var/named/named.ca

    DNS Root Domain Lookup File(Hit File)

    /etc/host.conf

    /etc/nsswitch.conf

    Name Service Switching Configuration File

    /etc/resolv.conf

    DNS Client Resolver File

     

    실습시에는 다음과 같은 파일을 설정한다.

    /var/named/chroot/etc/named.caching-nameserver.conf /* 주설정파일 */

    /var/named/chroot/etc/named.rfc1912.zones /* 주설정파일 */

    /var/named/chroot/var/named/named.ca /* 힌트 파일 */

    /var/named/chroot/var/named/exampleXXX.zone /* 포워드 존파일 */

    /var/named/chroot/var/named/exampleXXX.rev /* 리버스 존파일 */

     

     

    설정파일들의 이름이 길기 때문에 필요하다면 ~/.bashrc 파일에 Alias로 등록하여 사용한다.

    # vi ~/.bashrc

    ..... (중략) .....

    #

    # Log Monitoring

    #

    alias mlog='tail -f /var/log/messages'

     

    #

    # DNS Alias

    #

    alias named.caching-nameserver.conf='vi /var/named/chroot/etc/named.caching-nameserver.conf'

    alias named.rfc1912.zones='vi /var/named/chroot/etc/named.rfc1912.zones'

    alias DNS='cd /var/named/chroot/var/named'

    #alias named-checkconf='named-checkconf /var/named/chroot/etc/named.caching-nameserver.conf'

    -> ~/.bashrc 파일의 마지막 부분에 위와 같이 추가한다.

    # . ~/.bashrc (# source ~/.bashrc)

    (간단한 테스트)

    # DNS

    # named.rfc[TAB]

    # named.cach[TAB]

     

     

    DNS 서버 설정 작업 절차

    (주설정)

    # vi /var/named/chroot/etc/named.caching-nameserver.conf

    # vi /var/named/chroot/etc/named.rfc1912.zones

    (ZONE 파일)

    # vi /var/named/chroot/var/named/named.ca

    # vi /var/named/chroot/var/named/example2XX.zone

    # vi /var/named/chroot/var/named/example2XX.rev

    (서비스 기동)

    # service named restart

    # chkconfig named on

    주설정 파일 설정

    # vi /etc/named.caching-nameserver.conf (# vi /var/named/chroot/etc/named.caching-nameserver.conf)

    //

    // named.caching-nameserver.conf

    //

    // Provided by Red Hat caching-nameserver package to configure the

    // ISC BIND named(8) DNS server as a caching only nameserver

    // (as a localhost DNS resolver only).

    //

    // See /usr/share/doc/bind*/sample/ for example named configuration files.

    //

    // DO NOT EDIT THIS FILE - use system-config-bind or an editor

    // to create named.conf - edits to this file will be lost on

    // caching-nameserver package upgrade.

    //

    options {

    listen-on port 53 { any; }; <----- '127.0.0.1' 부분을 'any'로 변경

    // listen-on-v6 port 53 { ::1; }; <----- 주석처리

    directory "/var/named";

    dump-file "/var/named/data/cache_dump.db";

    statistics-file "/var/named/data/named_stats.txt";

    memstatistics-file "/var/named/data/named_mem_stats.txt";

     

    // Those options should be used carefully because they disable port

    // randomization

    // query-source port 53;

    // query-source-v6 port 53;

     

    allow-query { any; }; <----- '127.0.0.1' 부분을 'any'로 변경

    // allow-query-cache { localhost; }; <----- 주석처리

    };

    logging {

    channel default_debug {

    file "data/named.run";

    severity dynamic;

    };

    };

    view localhost_resolver {

    match-clients { any; }; <----- '127.0.0.1' 부분을 'any'로 변경

    match-destinations { any; }; <----- '127.0.0.1' 부분을 'any'로 변경

    recursion yes;

    include "/etc/named.rfc1912.zones";

    };

     

    (ZONE) 파일? DNS에서의 정보 파일

    (ZONE) 파일안에서의 주석 처리

    () ; -> Window에서 사용하는 주석

    () # -> Unix/Linux에서 사용하는 주석

    () /* */ -> C 주석

    () // -> C++ 주석

    "directory "/var/named"" -> Zone 파일들이 위치할 디렉토리 지정
    () /var/named/exampleXXX.zone ----> /var/named/chroot/var/named/exampleXXX.zone
    /var/named/exampleXXX.rev ----> /var/named/chroot/var/named/exampleXXX.rev

    "include "/etc/named.rfc1912.zones"" -> 포함시킬 설정 파일 지정
    /etc/named.rfc1912.zones 파일에 들어 있는 내용은 /etc/named.caching-nameserver.conf 파일에 존재하는 것이라고 생각하면 된다.

     

     

    주 설정 파일 설정

    # vi /etc/named.rfc1912.zones (# vi /var/named/chroot/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 {

    type hint;

    file "named.ca";

    };

     

    zone "localdomain" IN {

    type master;

    file "localdomain.zone";

    allow-update { none; };

    };

     

    zone "localhost" IN {

    type master;

    file "localhost.zone";

    allow-update { none; };

    };

     

    zone "0.0.127.in-addr.arpa" IN {

    type master;

    file "named.local";

    allow-update { none; };

    };

     

    zone "0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa" IN {

    type master;

    file "named.ip6.local";

    allow-update { none; };

    };

     

    zone "255.in-addr.arpa" IN {

    type master;

    file "named.broadcast";

    allow-update { none; };

    };

     

    zone "0.in-addr.arpa" IN {

    type master;

    file "named.zero";

    allow-update { none; };

    };

     

    zone "linux2XX.example.com" IN { /* Forward Zone */

    type master;

    file "example2XX.zone"; /* Forward Zone File : /var/named/exampleXXX.zone */

    };

     

    zone "9.16.172.in-addr.arpa" IN { /* Reverse Zone */

    type master;

    file "example2XX.rev"; /* Reverse Zone File : /var/named/exampleXXX.rev */

    };

     

    # named-checkconf /var/named/chroot/etc/named.rfc1912.zones

    #

    -> namedcheckconf 명령어는 주설정 파일(/etc/named.rfc1912.zones)의 문법 점검 하는 명령어이다.

    -> "# named-checkconf <주설정파일의이름>"

    -> 아무런 메세지가 없으면 정상적으로 설정된것이다.

     

    힌트(Hint) 파일 생성

    # cd /var/named/chroot/var/named

    # mv named.ca named.ca.old

    # vi named.ca

    . 86400 IN NS ns1.example.com.

    ns1.example.com. 86400 IN A 172.16.9.252

    -> 기존의 힌트파일(EX: named.ca)은 백업을 받고 새로운 파일를 만든다.

    -> DNSchroot로 구성하여 동작시키는 경우에는 힌트파일의 소유자는 named로 되어 있어야 한다.

    포워드 존(Forward-Zone) 파일 생성

    # cp localdomain.zone example2XX.zone

    # vi example2XX.zone

    [수정전]

    $TTL 86400

    @ IN SOA localhost root (

    42 ; serial (d. adams)

    3H ; refresh

    15M ; retry

    1W ; expiry

    1D ) ; minimum

    IN NS localhost

    localhost IN A 127.0.0.1

    [수정후]

    $TTL 4

    @ IN SOA ns1.linux2XX.example.com. root.linux2XX.example.com. (

    42 ; serial (d. adams)

    3H ; refresh

    15M ; retry

    1W ; expiry

    1D ) ; minimum

    IN NS ns1

    ns1 IN A 172.16.9.2XX

     

    # named-checkzone linux2XX.example.com example2XX.zone

    zone example.com/IN: loaded serial 42

    OK

    -> 'OK' 라고 나오면 정상적으로 설정된것이다.

    -> "named-checkzone <Domain Name> <Zone File>"

     

    --------------------------------------------------

    Zone 파일에 정의 하는 라인 형식

    [Domain] [TTL] CLASS RecordType Data

     

    (a) [Domain]
    linuxXXX.example.com.
    = @
    =

    (b) [TTL]
    우선순위
    - 직접 지정된 경우(EX: ns1 5 IN A 172.16.9.XXX)
    - $TTL 지정된 경우(EX: $TTL 4)
    - SOA Record Type 부분의 TTL 필드로 지정된 경우

    (c) CLASS
    IN (Internet)

    (d) RecordType
    "[EX3] 도메인 등록" 실습 부분 참조

    (e) Data
    "[EX3] 도메인 등록" 실습 부분 참조

    --------------------------------------------------

     

    리버스 존(Reverse-Zone) 파일 생성

    # cp named.local example2XX.rev

    # vi example2XX.rev

    [수정전]

    $TTL 86400

    @ IN SOA localhost. root.localhost. (

    1997022700 ; Serial

    28800 ; Refresh

    14400 ; Retry

    3600000 ; Expire

    86400 ) ; Minimum

    IN NS localhost.

    1 IN PTR localhost.

    [수정후]

    $TTL 4

    @ IN SOA ns1.linux2XX.example.com. root.linux2XX.example.com. (

    1997022700 ; Serial

    28800 ; Refresh

    14400 ; Retry

    3600000 ; Expire

    86400 ) ; Minimum

    IN NS ns1.linux2XX.example.com.

    2XX IN PTR ns1.linux2XX.example.com.

     

    # named-checkzone 9.16.172.in-addr.arpa example2XX.rev

    zone 6.16.172.in-addr.arpa/IN: loaded serial 1997022700

    OK

    -> "# named-checkzone <Domain> <Zone File>"

    -> 'OK' 라고 나오면 정상적으로 설정된것이다.

     

    파일에 링크걸기 및 설정파일의 그룹권 변경

    # ln -s /var/named/chroot/var/named/example2XX.zone /var/named/example2XX.zone

    # ln -s /var/named/chroot/var/named/example2XX.rev /var/named/example2XX.rev

    # cd /var/named

    # ls -l

    drwxr-x--- 6 root named 4096 Mar 7 13:24 chroot

    drwxrwx--- 2 named named 4096 Jan 21 01:33 data

    lrwxrwxrwx 1 root root 42 Mar 7 14:49 example2XX.rev ->

    /var/named/chroot/var/named/example2XX.rev

    lrwxrwxrwx 1 root root 43 Mar 7 14:49 example2XX.zone ->

    /var/named/chroot/var/named/example2XX.zone

    lrwxrwxrwx 1 root named 45 Mar 7 13:18 localdomain.zone ->

    /var/named/chroot//var/named/localdomain.zone

    lrwxrwxrwx 1 root named 43 Mar 7 13:18 localhost.zone ->

    /var/named/chroot//var/named/localhost.zone

    lrwxrwxrwx 1 root named 44 Mar 7 13:18 named.broadcast ->

    /var/named/chroot//var/named/named.broadcast

    lrwxrwxrwx 1 root named 37 Mar 7 13:18 named.ca -> /var/named/chroot//var/named/named.ca

    lrwxrwxrwx 1 root named 44 Mar 7 13:18 named.ip6.local ->

    /var/named/chroot//var/named/named.ip6.local

    lrwxrwxrwx 1 root named 40 Mar 7 13:18 named.local -> /var/named/chroot//var/named/named.local

    lrwxrwxrwx 1 root named 39 Mar 7 13:18 named.zero -> /var/named/chroot//var/named/named.zero

    drwxrwx--- 2 named named 4096 Jan 21 01:33 slaves

     

    # cd /var/named/chroot/var/named ; ls l

    # chown root:named example2XX.* (# chgrp named example*)

    # chown root:named named.ca (# chgrp named named.ca)

     

    # service named restart

    Stopping named: [ OK ]

    Starting named: [ OK ]

     

     

    네임서버 테스트

    (주의) DNS Zonechroot 구성으로 된 경우

    /var/named/chroot/var/named 디렉토리에 존재하는 존(ZONE) 파일들은 그룹이 모두 named로 되어 있어야 한다. 만약 존 파일들의 속성정보중 그룹권(Groupship) 부분이 named로 되어 있지 않으면, named 서비스는 Start 되어도 정상적으로 서비스 되지는 않는다. 이런 경우 /var/log/messages 파일안에 이런 존 파일들을 읽을시에 'Permission denied' 라고 표시가 난다.

     

    # service named restart

    -> 서비스를 restart 했을때 출력되는 메세지(/var/log/messages) 확인

     

    # tail 20 /var/log/messages

    ..... (중략) .....

    Mar 7 13:18:26 linux101 named[14204]: zone 9.16.172.in-addr.arpa/IN/localhost_resolver: loading master file example2XX.rev: permission denied

    Mar 7 13:18:26 linux101 named[14204]: zone 255.in-addr.arpa/IN/localhost_resolver: loaded serial

    42

    Mar 7 13:18:26 linux101 named[14204]: zone 0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.

    0.0.0.0.ip6.arpa/IN/localhost_resolver: loaded serial 1997022700

    Mar 7 13:18:26 linux101 named[14204]: zone linux2XX.example.com/IN/localhost_resolver: loading master file example2XX.zone: permission denied

    ..... (중략) .....

     

    # cd /var/named/chroot/var/named ; ls -l

    # chown root:named example2XX.* (# chgrp named example*)

    # chown root:named named.ca (# chgrp named named.ca)

     

    # service named restart

    -> 에러메세지가 보이지 않을 것이다.

    DNS 클라이언트 설정 변경 (네임서버 시작)

    # vi /etc/resolv.conf /* 네임 서버를 여러개 적어도 총 3개까지만 인식 */

    [수정전]

    search example.com

    nameserver 168.126.63.1

    [수정후]

    search linux2XX.example.com

    nameserver 172.16.9.2XX

     

    # netstat -an | grep :53 /* 네임서버는 53번 포트를 사용함 */

    tcp 0 0 172.16.9.2XX:53 0.0.0.0:* LISTEN

    tcp 0 0 127.0.0.1:53 0.0.0.0:* LISTEN

    udp 0 0 172.16.9.2XX:53 0.0.0.0:*

    udp 0 0 127.0.0.1:53 0.0.0.0:*

    udp 0 0 0.0.0.0:5353 0.0.0.0:*

    -> 현재 53 포트가 서비스 중임을 알수 있다.

     

    # pgrep -lf named (# ps -ef | grep named, # ps aux | grep named)

    3468 /usr/sbin/named -u named -c /etc/named.caching-nameserver.conf -t /var/named/chroot

     

    nslookup 명령어로 DNS 서버 등록 내용 확인

     

    DNS 서버에게 질의(Query) 할수 있는 명령어

    - nslookup CMD (# nslookup www.daum.net)

    - dig CMD (# dig www.daum.net)

    - host CMD (# host www.daum.net)

     

    nslookup 명령어 사용하는 방식

    - 대화형 모드(Interractive Mode) 형태로 실행

    # nslookup

    > ns1.linux2XX.example.com

    > exit

    - 비대화형 모드(Non-Interractive Mode) 형태로 실행

    # nslookup ns1.linux2XX.example.com

     

    # nslookup

    > ns1.linux2XX.example.com <----- 'ns1.example2XX.com' 입력

    Server: 172.16.9.XXX

    Address: 172.16.9.XXX#53

     

    Name: ns1.linuxXXX.example.com

    Address: 172.16.9.XXX

    > exit <----- 'exit' 입력

     

    # nslookup ns1.linux2XX.example.com

    Server: 172.16.9.XXX

    Address: 172.16.9.XXX#53

     

    Name: ns1.linuxXXX.example.com

    Address: 172.16.9.XXX

     

    # nslookup 172.16.9.2XX

    Server: 172.16.9.XXX

    Address: 172.16.9.XXX#53

     

    XXX.9.16.172.in-addr.arpa name = ns1.linuxXXX.example.com.

     

    부팅시에 named 데몬 띄우는 설정

    부팅시에 서비스를 실행할수 있도록 하기 위해서는 여러가지 툴이 있다.

    (GUI) # system-config-services (# serviceconf)

    (TUI) # ntsysv (# setup)

    # chkconfig named on

     

    (xinetd 방식의 서비스)

    현재/부팅 # chkconfig krb5-telnet on

    # service xinetd restart

    (standalone 방식의 서비스)

    현재 # service named restart

    부팅 # chkconfig named on

     

    chkconfig 명령어를 통해 부팅시에 named 데몬이 실행될 수 있도록 설정해 보자.

    # chkconfig --list | grep named (# chkconfig --list named)

    named 0:off 1:off 2:on 3:on 4:on 5:off 6:off

    -> 런레벨 5에서 named 데몬이 뜨지 않도록 (5:off) 되어 있으면 ON 상태로 변경한다.

     

    # chkconfig named on (# chkconfig --level 2345 named on)

    # chkconfig --list | grep named

    named 0:off 1:off 2:on 3:on 4:on 5:on 6:off

     

    # service named restart

    Stopping named: [ OK ]

    Starting named: [ OK ]

     

    'linux > centOS' 카테고리의 다른 글

    웹 서버  (0) 2018.07.18
    DNS 서버 2  (0) 2018.07.17
    네트워크 설정  (0) 2018.07.11
    centos  (0) 2018.07.10
    backup  (0) 2018.07.06

    댓글

Designed by Tistory.