본문 바로가기
인프라 7기/Linux

Linux Server : DNS 서버 구축

by 킹버거 2023. 3. 3.

<개요>

1. DNS 서버 설치 및 설치 확인

2. 환경 설정

  • /etc/resolv.conf
  • 현재 설정하고자 하는 DNS 서버의 IP : 192.168.10.111

3. /etc/named.conf 파일 설정

4. Cache 파일 확인

  • named.ca 파일

5. Zone 파일 생성

  • 도메인 zone 파일
  • localhost zone 파일
  • 만들고자 하는 Zone 파일 : st01.sec.zone

6. name 서버 시작

# systemctl [start | stop | status] named.service


<관련 파일>

* 데몬 : /usr/sbin/named

* 관리 스크립트 : /usr/lib/systemd/system/named.service

* 환경 설정 파일 : /etc/named.conf

* 설정 파일 경로 : /var/named/

    - named.ca와 여러 zone 파일들

* chroot 설치시 zone 파일 경로 : var/named/chroot/var/named

* 이외 관련 파일 : /etc/resolv.conf, /etc/host.conf

* 실행을 위한 최소 권한

    - /etc/named.conf, /var/named, /var/named/*

* - 그룹 소유자는 반드시 named로 정의한다. 


1. DNS 서버 설치 및 설치 확인

1-1. Bind 서버 설치 확인 및 설치

* Bind 서버 : 리눅스에서 가장 널리 사용하는 DNS 역할 수행 프로그램 

 

# yum list bind (혹은 # yum list bind-utils)

*** 만약 yum 명령어를 입력했을 때 아래와 같은 에러가 뜬다면, 자신의 리눅스가 yum repository를 찾지 못 했다는 뜻이다.

따라서  /etc/sysconfig/network-scripts/ifcfg-ens32를 뜯어보세요. 저는 DNS가 설정되어 있지 않았네요. 호호. 왜일까요? 

인터넷과 통신이 되지 않는다면 DNS 문제입니당. ping을 날려보세요.

# yum install -y bind 

yum install -y bind
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
 * base: mirror.kakao.com
 * extras: mirror.kakao.com
 * updates: mirror.kakao.com
Resolving Dependencies
--> Running transaction check
---> Package bind.x86_64 32:9.11.4-26.P2.el7_9.13 will be installed
--> Processing Dependency: bind-libs-lite(x86-64) = 32:9.11.4-26.P2.el7_9.13 for package: 32:bind-9                 .11.4-26.P2.el7_9.13.x86_64
--> Processing Dependency: bind-libs(x86-64) = 32:9.11.4-26.P2.el7_9.13 for package: 32:bind-9.11.4                 -26.P2.el7_9.13.x86_64
--> Running transaction check
---> Package bind-libs.x86_64 32:9.11.4-26.P2.el7 will be updated
--> Processing Dependency: bind-libs(x86-64) = 32:9.11.4-26.P2.el7 for package: 32:bind-utils-9.11.                 4-26.P2.el7.x86_64
---> Package bind-libs.x86_64 32:9.11.4-26.P2.el7_9.13 will be an update
--> Processing Dependency: bind-license = 32:9.11.4-26.P2.el7_9.13 for package: 32:bind-libs-9.11.4                 -26.P2.el7_9.13.x86_64
---> Package bind-libs-lite.x86_64 32:9.11.4-26.P2.el7 will be updated
---> Package bind-libs-lite.x86_64 32:9.11.4-26.P2.el7_9.13 will be an update
--> Running transaction check
---> Package bind-license.noarch 32:9.11.4-26.P2.el7 will be updated
---> Package bind-license.noarch 32:9.11.4-26.P2.el7_9.13 will be an update
---> Package bind-utils.x86_64 32:9.11.4-26.P2.el7 will be updated
---> Package bind-utils.x86_64 32:9.11.4-26.P2.el7_9.13 will be an update
--> Finished Dependency Resolution

Dependencies Resolved
===================================================================================================
 Package                 Arch            Version                            Repository        Size
===================================================================================================
Installing:
 bind                    x86_64          32:9.11.4-26.P2.el7_9.13           updates          2.3 M
Updating for dependencies:
 bind-libs               x86_64          32:9.11.4-26.P2.el7_9.13           updates          158 k
 bind-libs-lite          x86_64          32:9.11.4-26.P2.el7_9.13           updates          1.1 M
 bind-license            noarch          32:9.11.4-26.P2.el7_9.13           updates           92 k
 bind-utils              x86_64          32:9.11.4-26.P2.el7_9.13           updates          262 k

Transaction Summary
===================================================================================================
Install  1 Package
Upgrade             ( 4 Dependent packages)

Total download size: 3.9 M
Downloading packages:
No Presto metadata available for updates
경고: /var/cache/yum/x86_64/7/updates/packages/bind-libs-9.11.4-26.P2.el7_9.13.x86_64.rpm: Header V                 3 RSA/SHA256 Signature, key ID f4a80eb5: NOKEY
Public key for bind-libs-9.11.4-26.P2.el7_9.13.x86_64.rpm is not installed
(1/5): bind-libs-9.11.4-26.P2.el7_9.13.x86_64.rpm                           | 158 kB  00:00:00
(2/5): bind-libs-lite-9.11.4-26.P2.el7_9.13.x86_64.rpm                      | 1.1 MB  00:00:00
(3/5): bind-license-9.11.4-26.P2.el7_9.13.noarch.rpm                        |  92 kB  00:00:00
(4/5): bind-utils-9.11.4-26.P2.el7_9.13.x86_64.rpm                          | 262 kB  00:00:00
(5/5): bind-9.11.4-26.P2.el7_9.13.x86_64.rpm                                | 2.3 MB  00:00:00
---------------------------------------------------------------------------------------------------
Total                                                              8.4 MB/s | 3.9 MB  00:00:00
Retrieving key from file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
Importing GPG key 0xF4A80EB5:
 Userid     : "CentOS-7 Key (CentOS 7 Official Signing Key) <security@centos.org>"
 Fingerprint: 6341 ab27 53d7 8a78 a7c2 7bb1 24c6 a8a7 f4a8 0eb5
 Package    : centos-release-7-9.2009.0.el7.centos.x86_64 (@anaconda)
 From       : /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  Updating   : 32:bind-license-9.11.4-26.P2.el7_9.13.noarch                                    1/9
  Updating   : 32:bind-libs-lite-9.11.4-26.P2.el7_9.13.x86_64                                  2/9
  Updating   : 32:bind-libs-9.11.4-26.P2.el7_9.13.x86_64                                       3/9
  Installing : 32:bind-9.11.4-26.P2.el7_9.13.x86_64                                            4/9
  Updating   : 32:bind-utils-9.11.4-26.P2.el7_9.13.x86_64                                      5/9
  Cleanup    : 32:bind-utils-9.11.4-26.P2.el7.x86_64                                           6/9
  Cleanup    : 32:bind-libs-9.11.4-26.P2.el7.x86_64                                            7/9
  Cleanup    : 32:bind-libs-lite-9.11.4-26.P2.el7.x86_64                                       8/9
  Cleanup    : 32:bind-license-9.11.4-26.P2.el7.noarch                                         9/9
  Verifying  : 32:bind-license-9.11.4-26.P2.el7_9.13.noarch                                    1/9
  Verifying  : 32:bind-9.11.4-26.P2.el7_9.13.x86_64                                            2/9
  Verifying  : 32:bind-utils-9.11.4-26.P2.el7_9.13.x86_64                                      3/9
  Verifying  : 32:bind-libs-lite-9.11.4-26.P2.el7_9.13.x86_64                                  4/9
  Verifying  : 32:bind-libs-9.11.4-26.P2.el7_9.13.x86_64                                       5/9
  Verifying  : 32:bind-libs-9.11.4-26.P2.el7.x86_64                                            6/9
  Verifying  : 32:bind-license-9.11.4-26.P2.el7.noarch                                         7/9
  Verifying  : 32:bind-utils-9.11.4-26.P2.el7.x86_64                                           8/9
  Verifying  : 32:bind-libs-lite-9.11.4-26.P2.el7.x86_64                                       9/9

Installed:
  bind.x86_64 32:9.11.4-26.P2.el7_9.13

Dependency Updated:
  bind-libs.x86_64 32:9.11.4-26.P2.el7_9.13       bind-libs-lite.x86_64 32:9.11.4-26.P2.el7_9.13
  bind-license.noarch 32:9.11.4-26.P2.el7_9.13    bind-utils.x86_64 32:9.11.4-26.P2.el7_9.13

Complete!

 

1-2. Bind 서버 시작

 

2. 환경 설정

2-1. /etc/resolv.conf 

nameserver [Local DNS 서버 IP]

- 질의할 local DNS 서버의 IP를 지정한다.

- 최대한 가까운 DNS 서버를 지정한다.

 

3. /etc/named.conf 파일 설정

- named.conf는 서비스가 시작될 때 맨 처음 읽히는 마스터 파일

- zone 파일에 대한 호출 정보를 갖는다.

 

<구성>

1) options : zone 파일의 경로나 덤프 파일의 이름 등을 지정한다.

2) zone : 질의를 구체적인 파일과 연결해주며 DNS 서비스의 근간이다.

3) key : 마스터 서버와 슬레이브 서버 간의 정보를 암호화한다. 

 

- zone 영역의 설정

zone "서비스 대상 영역" {

              type [master | slave | hint];

              file "zone 파일명";

              allow-update {[none | 2차 DNS 서버 IP] ; };

              master {master DNS 서버 IP; };

};

* Root zone과 zone 영역의 type 및 file 설정은 필수 설정 항목이다.

 

options {
        directory "/var/named";
};

zone "." {
        type hint;
        file "named.ca";
};
// Cache Name Server의 /etc/named.conf 파일엔 line 1-8까지만 존재한다.

zone "st01.sec" {
        type master;
        file "st01.sec.zone";
};

 

 

4. Cache 파일 확인

- Cache 파일은 root DNS 서버의 경로를 지정한다.

/var/named/named.ca 

* named.cache, root.cache 등 다양한 이름으로 배포된다. 

 

named.ca 파일은 DNS (Domain Name System) 서버에서 사용되는 파일입니다. DNS 서버는 도메인 이름을 IP 주소로 변환하거나 IP 주소를 도메인 이름으로 변환하는 역할을 합니다.

named.ca 파일은 루트 DNS 서버의 정보를 포함하고 있습니다. 루트 DNS 서버는 전 세계적으로 분산되어 있는 DNS 인프라의 최상위에 위치한 서버로, 인터넷 상의 모든 도메인 이름에 대한 정보를 갖고 있지는 않지만, DNS 쿼리를 다른 하위 DNS 서버로 전달하는 역할을 합니다.

named.ca 파일은 일반적으로 BIND (Berkeley Internet Name Domain) 소프트웨어를 사용하는 DNS 서버에서 사용됩니다. 이 파일은 루트 DNS 서버의 주소와 인증서 정보 등을 포함하고 있습니다. named.ca 파일은 주기적으로 업데이트되며, DNS 서버는 이 파일을 사용하여 루트 DNS 서버의 정보를 유지하고 최신 상태로 유지합니다.

일반적으로 named.ca 파일은 DNS 서버의 설정 디렉토리 (일반적으로 /etc/bind 또는 /etc/named와 같은 경로)에 위치하며, DNS 서버 소프트웨어의 설정 파일에서 named.ca 파일의 경로를 지정하여 사용합니다.

참고로, named.ca 파일은 인터넷 상에서 공개적으로 사용 가능하며, 여러 웹 사이트에서 다운로드할 수 있습니다. 하지만 주의해야 할 점은, 해당 파일을 업데이트할 때에는 신뢰할 수 있는 출처에서 받아야 하며, 서버의 보안을 위해 최신 버전을 유지해야 합니다.

; <<>> DiG 9.11.3-RedHat-9.11.3-3.fc27 <<>> +bufsize=1200 +norec @a.root-servers.net
; (2 servers found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 46900
;; flags: qr aa; QUERY: 1, ANSWER: 13, AUTHORITY: 0, ADDITIONAL: 27

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1472
;; QUESTION SECTION:
;.                              IN      NS

;; ANSWER SECTION:
.                       518400  IN      NS      a.root-servers.net.
.                       518400  IN      NS      b.root-servers.net.
.                       518400  IN      NS      c.root-servers.net.
.                       518400  IN      NS      d.root-servers.net.
.                       518400  IN      NS      e.root-servers.net.
.                       518400  IN      NS      f.root-servers.net.
.                       518400  IN      NS      g.root-servers.net.
.                       518400  IN      NS      h.root-servers.net.
.                       518400  IN      NS      i.root-servers.net.
.                       518400  IN      NS      j.root-servers.net.
.                       518400  IN      NS      k.root-servers.net.
.                       518400  IN      NS      l.root-servers.net.
.                       518400  IN      NS      m.root-servers.net.

;; ADDITIONAL SECTION:
a.root-servers.net.     518400  IN      A       198.41.0.4
b.root-servers.net.     518400  IN      A       199.9.14.201
c.root-servers.net.     518400  IN      A       192.33.4.12
d.root-servers.net.     518400  IN      A       199.7.91.13
e.root-servers.net.     518400  IN      A       192.203.230.10
f.root-servers.net.     518400  IN      A       192.5.5.241
g.root-servers.net.     518400  IN      A       192.112.36.4
h.root-servers.net.     518400  IN      A       198.97.190.53
i.root-servers.net.     518400  IN      A       192.36.148.17
j.root-servers.net.     518400  IN      A       192.58.128.30
k.root-servers.net.     518400  IN      A       193.0.14.129
l.root-servers.net.     518400  IN      A       199.7.83.42
m.root-servers.net.     518400  IN      A       202.12.27.33
a.root-servers.net.     518400  IN      AAAA    2001:503:ba3e::2:30
b.root-servers.net.     518400  IN      AAAA    2001:500:200::b
c.root-servers.net.     518400  IN      AAAA    2001:500:2::c
d.root-servers.net.     518400  IN      AAAA    2001:500:2d::d
e.root-servers.net.     518400  IN      AAAA    2001:500:a8::e
f.root-servers.net.     518400  IN      AAAA    2001:500:2f::f
g.root-servers.net.     518400  IN      AAAA    2001:500:12::d0d
h.root-servers.net.     518400  IN      AAAA    2001:500:1::53
i.root-servers.net.     518400  IN      AAAA    2001:7fe::53
j.root-servers.net.     518400  IN      AAAA    2001:503:c27::2:30
k.root-servers.net.     518400  IN      AAAA    2001:7fd::1
l.root-servers.net.     518400  IN      AAAA    2001:500:9f::42
m.root-servers.net.     518400  IN      AAAA    2001:dc3::35

;; Query time: 24 msec
;; SERVER: 198.41.0.4#53(198.41.0.4)
;; WHEN: Thu Apr 05 15:57:34 CEST 2018
;; MSG SIZE  rcvd: 811

 

5. Zone 파일 생성 (st01.sec.zone)  

$TTL    1D
@       IN      SOA     ns.st01.sec.    root.st01.sec. (
                                                1            ; Serial
                                                28800        ; Refresh
                                                14400        ; Retry
                                                3600000      ; Expire
                                                86400 )      ; Minimum
; Name Server
        IN      NS      ns.st01.sec.
; Host address
        IN      A       192.168.10.111
ns      IN      A       192.168.10.111
gw      IN      A       192.168.10.1
mail    IN      A       192.168.10.111
www     IN      A       192.168.10.112
;

* 내용이 수정되면 반드시 serial 번호를 수정해야 한다.

 

 

6. name 서버 시작 

# systemctl [start | stop | restart | status] named.service 

7. DNS 서버 작동 여부 확인

nslookup [도메인]

# nslookup www.google.com

'인프라 7기 > Linux' 카테고리의 다른 글

Linux Server : Apache 2.2.34 웹 서버  (0) 2023.04.18
Linux Server : 다중 DNS 서버 구현  (0) 2023.03.03
DNS 서버 Zone 파일  (0) 2023.03.03
리눅스 초기 설정 매뉴얼  (0) 2023.03.03
리눅스 CentOS7 VMware 설치  (0) 2023.03.03