ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • LINUX DNS(마이네임전용)서버 구축하기
    System of Infra/Linux System 2022. 6. 23. 01:22
    반응형

    LINUX 로고이미지

     

    LINUX DNS(마이네임전용)서버 구축하기

    [root@localhost /]# cat /etc/nsswitch.conf | grep -i hosts
    #     hosts: files dns
    #     hosts: files dns  # from user file
    hosts:      files dns myhostname
    /etc/hosts.conf order hosts, bind(nameserver) - hosts  파일에서 우선순위
    1. files
    2. dns
    3. bind

    hostname/etc/resolv.conf(nameserver) - DNS Name 서버 주소 등록

    192.168.111.100 
    -> DNS 서버 + 웹서버 = 마이네임전용서버

    192.168.111.130 
    -> DNS를 테스트할 Client서버

    192.168.111.200 
    -> DNS를 테스트할 CLI기반 Client서버
    [root@localhost /]# ip a | grep -i ens160
    2: ens160: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
        inet 192.168.111.100/24 brd 192.168.111.255 scope global noprefixroute ens160
    ▶ 마이네임서버 전용으로 사용할 서버 한대를 준비합니다. 아이피 192.168.111.100 해당 서버는 웹서버의 기능도 같이 사용할 예정입니다.
    [root@localhost /]# rpm -qa | grep httpd
    ▶ 웹서버로 사용을 하기 위해서 rpm 패키지를 검색 시 패키지가 패키지가 미설치되어 있다면 설치를 진행해야 합니다.
    [root@localhost /]# dnf -y install httpd
    Extra Packages for Enterprise Linux 8 - x86_64                                                                                                                                     2.7 kB/s | 4.6 kB     00:01    
    Extra Packages for Enterprise Linux 8 - x86_64                                                                                                                                     487 kB/s |  11 MB     00:23    
    마지막 메타 데이터 만료 확인 : 0:00:04 전에 2022년 05월 24일 (화) 오후 08시 48분 17초.
    종속성이 해결되었습니다.
    ===================================================================================================================================================================================================================
     꾸러미                                             아키텍처                               버전                                                                    리포지토리                                 크기
    ===================================================================================================================================================================================================================
    Installing:
     httpd                                              x86_64                                 2.4.37-12.module_el8.0.0+185+5908b0db                                   AppStream                                 1.7 M
    종속성 설치:
     apr                                                x86_64                                 1.6.3-9.el8                                                             AppStream                                 125 k
     apr-util                                           x86_64                                 1.6.1-6.el8                                                             AppStream                                 105 k
     centos-logos-httpd                                 noarch                                 80.5-2.el8                                                              AppStream                                  24 k
     httpd-filesystem                                   noarch                                 2.4.37-12.module_el8.0.0+185+5908b0db                                   AppStream                                  35 k
     httpd-tools                                        x86_64                                 2.4.37-12.module_el8.0.0+185+5908b0db                                   AppStream                                 102 k
     mod_http2                                          x86_64                                 1.11.3-3.module_el8.0.0+185+5908b0db                                    AppStream                                 158 k
    약한 의존성 설치하기:
     apr-util-bdb                                       x86_64                                 1.6.1-6.el8                                                             AppStream                                  25 k
     apr-util-openssl                                   x86_64                                 1.6.1-6.el8                                                             AppStream                                  27 k
    Enabling module streams:
     httpd                                                                                     2.4                                                                                                                    
    
    거래 요약
    ===================================================================================================================================================================================================================
    설치  9 꾸러미
    
    총 다운로드 크기 : 2.3 M
    설치 크기 : 6.0 M
    패키지 다운로드중:
    (1/9): apr-util-bdb-1.6.1-6.el8.x86_64.rpm                                                                                                                                          14 kB/s |  25 kB     00:01    
    (2/9): apr-util-openssl-1.6.1-6.el8.x86_64.rpm                                                                                                                                     133 kB/s |  27 kB     00:00    
    (3/9): centos-logos-httpd-80.5-2.el8.noarch.rpm                                                                                                                                     59 kB/s |  24 kB     00:00    
    (4/9): apr-util-1.6.1-6.el8.x86_64.rpm                                                                                                                                              44 kB/s | 105 kB     00:02    
    (5/9): httpd-filesystem-2.4.37-12.module_el8.0.0+185+5908b0db.noarch.rpm                                                                                                            98 kB/s |  35 kB     00:00    
    (6/9): httpd-tools-2.4.37-12.module_el8.0.0+185+5908b0db.x86_64.rpm                                                                                                                293 kB/s | 102 kB     00:00    
    (7/9): apr-1.6.3-9.el8.x86_64.rpm                                                                                                                                                   39 kB/s | 125 kB     00:03    
    (8/9): mod_http2-1.11.3-3.module_el8.0.0+185+5908b0db.x86_64.rpm                                                                                                                   394 kB/s | 158 kB     00:00    
    (9/9): httpd-2.4.37-12.module_el8.0.0+185+5908b0db.x86_64.rpm                                                                                                                       72 kB/s | 1.7 MB     00:23    
    -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    [root@localhost /]# dnf -y install httpd
    Extra Packages for Enterprise Linux 8 - x86_64                                                                                                                                     2.7 kB/s | 4.6 kB     00:01    
    Extra Packages for Enterprise Linux 8 - x86_64                                                                                                                                     487 kB/s |  11 MB     00:23    
    마지막 메타 데이터 만료 확인 : 0:00:04 전에 2022년 05월 24일 (화) 오후 08시 48분 17초.
    종속성이 해결되었습니다.
    ===================================================================================================================================================================================================================
     꾸러미                                             아키텍처                               버전                                                                    리포지토리                                 크기
    ===================================================================================================================================================================================================================
    Installing:
     httpd                                              x86_64                                 2.4.37-12.module_el8.0.0+185+5908b0db                                   AppStream                                 1.7 M
    종속성 설치:
     apr                                                x86_64                                 1.6.3-9.el8                                                             AppStream                                 125 k
     apr-util                                           x86_64                                 1.6.1-6.el8                                                             AppStream                                 105 k
     centos-logos-httpd                                 noarch                                 80.5-2.el8                                                              AppStream                                  24 k
     httpd-filesystem                                   noarch                                 2.4.37-12.module_el8.0.0+185+5908b0db                                   AppStream                                  35 k
     httpd-tools                                        x86_64                                 2.4.37-12.module_el8.0.0+185+5908b0db                                   AppStream                                 102 k
     mod_http2                                          x86_64                                 1.11.3-3.module_el8.0.0+185+5908b0db                                    AppStream                                 158 k
    약한 의존성 설치하기:
     apr-util-bdb                                       x86_64                                 1.6.1-6.el8                                                             AppStream                                  25 k
     apr-util-openssl                                   x86_64                                 1.6.1-6.el8                                                             AppStream                                  27 k
    Enabling module streams:
     httpd                                                                                     2.4                                                                                                                    
    
    거래 요약
    ===================================================================================================================================================================================================================
    설치  9 꾸러미
    
    총 다운로드 크기 : 2.3 M
    설치 크기 : 6.0 M
    패키지 다운로드중:
    (1/9): apr-util-bdb-1.6.1-6.el8.x86_64.rpm                                                                                                                                          14 kB/s |  25 kB     00:01    
    (2/9): apr-util-openssl-1.6.1-6.el8.x86_64.rpm                                                                                                                                     133 kB/s |  27 kB     00:00    
    (3/9): centos-logos-httpd-80.5-2.el8.noarch.rpm                                                                                                                                     59 kB/s |  24 kB     00:00    
    (4/9): apr-util-1.6.1-6.el8.x86_64.rpm                                                                                                                                              44 kB/s | 105 kB     00:02    
    (5/9): httpd-filesystem-2.4.37-12.module_el8.0.0+185+5908b0db.noarch.rpm                                                                                                            98 kB/s |  35 kB     00:00    
    (6/9): httpd-tools-2.4.37-12.module_el8.0.0+185+5908b0db.x86_64.rpm                                                                                                                293 kB/s | 102 kB     00:00    
    (7/9): apr-1.6.3-9.el8.x86_64.rpm                                                                                                                                                   39 kB/s | 125 kB     00:03    
    (8/9): mod_http2-1.11.3-3.module_el8.0.0+185+5908b0db.x86_64.rpm                                                                                                                   394 kB/s | 158 kB     00:00    
    (9/9): httpd-2.4.37-12.module_el8.0.0+185+5908b0db.x86_64.rpm                                                                                                                       72 kB/s | 1.7 MB     00:23    
    -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    ...(생략)
    설치됨:
      httpd-2.4.37-12.module_el8.0.0+185+5908b0db.x86_64                        apr-util-bdb-1.6.1-6.el8.x86_64                                      apr-util-openssl-1.6.1-6.el8.x86_64                              
      apr-1.6.3-9.el8.x86_64                                                    apr-util-1.6.1-6.el8.x86_64                                          centos-logos-httpd-80.5-2.el8.noarch                             
      httpd-filesystem-2.4.37-12.module_el8.0.0+185+5908b0db.noarch             httpd-tools-2.4.37-12.module_el8.0.0+185+5908b0db.x86_64             mod_http2-1.11.3-3.module_el8.0.0+185+5908b0db.x86_64            
    
    완료되었습니다!
    ▶ httpd의 rpm 패키지가 설치되는 과정으로 정상적으로 완료가 되었다는 코멘트와 함께 설치가 완료된 것을 확인할 수 있습니다.
    [root@localhost /]# rpm -qa | grep -i httpd
    httpd-2.4.37-12.module_el8.0.0+185+5908b0db.x86_64
    httpd-filesystem-2.4.37-12.module_el8.0.0+185+5908b0db.noarch
    centos-logos-httpd-80.5-2.el8.noarch
    httpd-tools-2.4.37-12.module_el8.0.0+185+5908b0db.x86_64
    ▶ 설치된 httpd 패키지의 버전과 패키지에 포함된 리스트를 확인합니다. 버전 2.4.37-12가 설치된 것을 확인할 수 있습니다.
    [root@localhost /]# systemctl restart httpd
    
    [root@localhost /]# systemctl status httpd
    ● httpd.service - The Apache HTTP Server
       Loaded: loaded (/usr/lib/systemd/system/httpd.service; disabled; vendor preset: disabled)
       Active: active (running) since Tue 2022-05-24 20:52:26 KST; 5s ago
         Docs: man:httpd.service(8)
     Main PID: 52436 (httpd)
       Status: "Started, listening on: port 80"
        Tasks: 213 (limit: 11376)
       Memory: 23.7M
       CGroup: /system.slice/httpd.service
               ├─52436 /usr/sbin/httpd -DFOREGROUND
               ├─52437 /usr/sbin/httpd -DFOREGROUND
               ├─52438 /usr/sbin/httpd -DFOREGROUND
               ├─52439 /usr/sbin/httpd -DFOREGROUND
               └─52440 /usr/sbin/httpd -DFOREGROUND
    
     5월 24 20:52:26 localhost.localdomain systemd[1]: Starting The Apache HTTP Server...
     5월 24 20:52:26 localhost.localdomain httpd[52436]: AH00558: httpd: Could not reliably determine the s>
     5월 24 20:52:26 localhost.localdomain httpd[52436]: Server configured, listening on: port 80
     5월 24 20:52:26 localhost.localdomain systemd[1]: Started The Apache HTTP Server.
    ▶ httpd 데몬을 restart 또는 start를 통해 기동 해주도록 합니다.
    [root@localhost /]# firewall-cmd --permanent --add-service=http
    success
    
    [root@localhost /]# firewall-cmd --permanent --add-service=https
    success
    
    [root@localhost /]# firewall-cmd --reload 
    success
    ▶ httpd 데몬을 기동한 뒤 방화벽에서 해당 서비스에 대한 부분을 열어줘야 하는데 permanent 옵션을 통해서 재부팅 이후에도 영구적으로 설정되고 해당 정보를 reload 하여 저장하도록 합니다.
    [root@localhost /]# firewall-cmd --list-all
    public (active)
      target: default
      icmp-block-inversion: no
      interfaces: ens160
      sources: 
      services: cockpit dhcpv6-client dns ftp http https ssh telnet
      ports: 3389/tcp
      protocols: 
      masquerade: no
      forward-ports: 
      source-ports: 
      icmp-blocks: 
      rich rules:
    ▶ firewall-cmd --list-all 명령어를 통해서 services 항목에 http https 서비스가 추가된 것을 확인할 수 있습니다.
    [root@localhost /]# firewall-cmd --permanent --zone=public --add-port=80/tcp
    success
    
    [root@localhost /]# firewall-cmd --permanent --zone=public --add-port=8080/tcp
    success
    
    [root@localhost /]# firewall-cmd --permanent --zone=public --add-port=443/tcp
    success
    
    [root@localhost /]# firewall-cmd --reload 
    success
    ▶ 방화벽 설정에서 서비스명이 아닌 서비스 포트 80, 8080, 443 포트 통해서도 설정을 해주도록 합니다.
    root@localhost /]# firewall-cmd --list-all
    public (active)
      target: default
      icmp-block-inversion: no
      interfaces: ens160
      sources: 
      services: cockpit dhcpv6-client dns ftp http https ssh telnet
      ports: 3389/tcp 8080/tcp 80/tcp
      protocols: 
      masquerade: no
      forward-ports: 
      source-ports: 
      icmp-blocks: 
      rich rules:
    ▶ firewall-cmd --list-all 명령어를 통해서 ports 항목에 8080 80 서비스가 추가된 것을 확인할 수 있습니다.
    [root@localhost /]# systemctl restart firewalld
    ▶ 방화벽 데몬을 restart 합니다.
    [root@localhost /]# vi /var/www/html/index.html
    <h1> pinetree web homepage!! </h1>
    ▶ 마이네임서버에 간단한 웹페이지 서버를 구축하기 위해서 /var/www/html/index.html 파일을 생성하고 <h1> pinetree web homepage!! </h1> 헤드 문구를 출력해주도록 합니다.
    [root@localhost etc]# vi /etc/named.conf
    -rw-r-----    1 root named     1693  5월 21 19:33 named.conf
    
    //
    // named.conf
    //
    // Provided by Red Hat bind 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.
    //
    
    options {
            listen-on port 53 { any; };
            listen-on-v6 port 53 { none; };
            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";
            secroots-file   "/var/named/data/named.secroots";
            recursing-file  "/var/named/data/named.recursing";
            allow-query     { any; };
    
            /*
             - If you are building an AUTHORITATIVE DNS server, do NOT enable recursion.
             - If you are building a RECURSIVE (caching) DNS server, you need to enable
               recursion.
             - If your recursive DNS server has a public IP address, you MUST enable access
               control to limit queries to your legitimate users. Failing to do so will
               cause your server to become part of large scale DNS amplification
               attacks. Implementing BCP38 within your network would greatly
               reduce such attack surface
            */
            recursion yes;
    
            dnssec-enable yes;
            dnssec-validation no;
    
            managed-keys-directory "/var/named/dynamic";
    
            pid-file "/run/named/named.pid";
            session-keyfile "/run/named/session.key";
    
            /* https://fedoraproject.org/wiki/Changes/CryptoPolicy */
            include "/etc/crypto-policies/back-ends/bind.config";
    };
    
    logging {
            channel default_debug {
                    file "data/named.run";
                    severity dynamic;
            };
    };
    
    zone "." IN {
            type hint;
            file "named.ca";
    };
    
    include "/etc/named.rfc1912.zones";
    include "/etc/named.root.key";
    
    zone "pinetree.com" IN {
    	type master;
    	file "pinetree.com.db";
    	allow-update { none; };
    };
    ▶ 마이네임서버는 DNS 도메인 서버 + 웹서버의 역할을 한다고 앞에서 설명드렸는데 /etc/named 파일에 DNS의 Zone을 생성해주도록 합니다.

    [/etc/named 파일 추가 항목]
    zone "pinetree.com" IN { 
                type master;
                file "pinetree.com.db";
                allow-update { none; }; 

    pinetree.com : 도메인 주소
    pinetree.com.db : named.conf 파일에서 pinetree.com.db 참조

    [root@localhost named]# touch pinetree.com.db
    ▶ /var/named 경로에 pinetree.com.db 파일을 생성합니다.
    [root@localhost named]# vi pinetree.com.db 
    $TTL 3H
    @ SOA @ root.(	2 1D 1H 1W 1H	)
    	IN NS @
    	IN A 192.168.111.100
    WWW IN A 192.168.111.100
    ▶ www으로 시작하는 도메인에 192.168.111.100(마이네임서버 = 도메인 서버 + 웹서버)을 허용하겠다는 규칙을 설정합니다.
    [root@localhost named]# named-checkconf
    
    [root@localhost named]# named-checkzone pinetree.com pinetree.com.db 
    zone pinetree.com/IN: loaded serial 2
    OK
    ▶ namd-checkconf 명령어를 수행 시 /etc/namd.conf의 zone 설정 파일의 형식이 올바르게 설정되어 있으면 별도의 메시지가 호출되지 않고 정상적으로 설정했다는 의미입니다.
    또한 named-checkzone pinetree.com pinetree.com.db 명령어를 수행하여 pinetree.com zone에서 pinetree.com.db를 정상적으로 참조할 수 있도록 가능하다는 것을 체크하실 수 있습니다.
    [root@localhost named]# systemctl restart named
    
    [root@localhost named]# systemctl status named
    ● named.service - Berkeley Internet Name Domain (DNS)
       Loaded: loaded (/usr/lib/systemd/system/named.service; enabled; vendor preset: disabled)
       Active: active (running) since Tue 2022-05-24 21:17:48 KST; 31s ago
      Process: 55770 ExecStop=/bin/sh -c /usr/sbin/rndc stop > /dev/null 2>&1 || /bin/kill -TERM $MAINPID (code=exited, status=0/SUCCESS)
      Process: 55786 ExecStart=/usr/sbin/named -u named -c ${NAMEDCONF} $OPTIONS (code=exited, status=0/SUCCESS)
      Process: 55783 ExecStartPre=/bin/bash -c if [ ! "$DISABLE_ZONE_CHECKING" == "yes" ]; then /usr/sbin/named-checkconf -z "$NAMEDCONF"; else echo "Checking of zone files is disabled"; fi (code=exited, status=0/S>
     Main PID: 55788 (named)
        Tasks: 4 (limit: 11376)
       Memory: 54.3M
       CGroup: /system.slice/named.service
               └─55788 /usr/sbin/named -u named -c /etc/named.conf
    ...(생략)
     5월 24 21:17:48 localhost.localdomain named[55788]: network unreachable resolving './DNSKEY/IN': 2001:500:2f::f#53
     5월 24 21:17:48 localhost.localdomain named[55788]: network unreachable resolving './NS/IN': 2001:500:2f::f#53
     5월 24 21:17:48 localhost.localdomain named[55788]: resolver priming query complete
     5월 24 21:17:48 localhost.localdomain named[55788]: managed-keys-zone: Key 20326 for zone . acceptance timer complete: key now trusted
    ▶ named 서비스를 재기동하고 데몬 상태를 확인합니다.
    IP주소: 192.168.111.130
    [root@localhost /]# ip a | grep -i ens160
    2: ens160: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
        inet 192.168.111.130/24 brd 192.168.111.255 scope global dynamic noprefixroute ens160
    ▶192.168.111.130 -> DNS를 테스트할 Client서버로 맨 앞에서 명시한 서버로 접속합니다. 웹서버 접속 테스트를 위해서 필요
    IP주소: 192.168.111.130
    [root@localhost /]# cat /etc/resolv.conf 
    # Generated by NetworkManager
    search localdomain
    nameserver 192.168.111.100
    ▶ /etc/resolv.conf 파일에 DNS 서버가 192.168.111.100으로 설정되어 있는 것을  확인합니다. 설정이 안되어 있을 시 해당 아이피로 설정을 합니다.
    [root@localhost /]# nslookup
    > server
    Default server: 192.168.111.100
    Address: 192.168.111.100#53
    > www.naver.com
    Server:		192.168.111.100
    Address:	192.168.111.100#53
    
    Non-authoritative answer:
    www.naver.com	canonical name = www.naver.com.nheos.com.
    Name:	www.naver.com.nheos.com
    Address: 223.130.200.107
    Name:	www.naver.com.nheos.com
    Address: 223.130.200.104
    ▶ nslookup 명령어를 통해서 현재 DNS 서버가 192.168.111.100으로 설정되어 있어 DNS 서버에 ww.naver.com의 주소를 물어봤을 때 223.130.200.107, 223.130.200.104라고 알려줍니다.

     

    LINUX 로고이미지2

    ▶ DNS 서버가 다시 한번 정상적으로 작동하는지 확인을 위해 DNS 서버에서 알려준 223.130.200.104 아이피로 접속 시 네이버 웹페이지로 접속이 되는 것을 확인할 수 있습니다.
    [root@localhost /]# nslookup
    > server
    Default server: 192.168.111.100
    Address: 192.168.111.100#53
    > www.pinetree.com
    Server:		192.168.111.100
    Address:	192.168.111.100#53
    
    Name:	WWW.pinetree.com
    Address: 192.168.111.100
    ▶ 마지막으로 웹서버를 구축한 192.168.111.100번의 경우 DNS 서버의 역할을 하기도 하지만 웹서버의 역할도 한다고 앞에서 설명드렸습니다.
    Client 입장에서는 DNS 서버에 아이피 주소에 대한 질의를 했을 때  WWW.pinetree.com 웹페이지의 도메인과 함께 아이피를 알 수 있습니다.

     

    LINUX 로고이미지2

    ▶ 웹페이지 도메인으로 접속 시 간단한 웹서버 구축을 통해 기입했던 헤더의 문구가 출력되면서 클라이언트의 입장에서 정상적으로 웹서버를 호출받아 확인할 수 있게 됩니다.

     

    2022.06.20 - [System of Infra/LINUX] - LINUX DNS(캐싱전용)서버 구축하기

     

    LINUX DNS(캐싱전용)서버 구축하기

    LINUX DNS(캐싱전용)서버 구축하기 [root@localhost /]# cat /etc/nsswitch.conf | grep -i hosts # hosts: files dns # hosts: files dns # from user file hosts: files dns myhostname /etc/hosts.conf orde..

    pinetreeday.tistory.com

     

    PS. 포스팅의 내용은 제 기준으로 작성한 것이기 때문에 참고해서 보시면 감사하겠습니다.

    포스팅 과정의 오류 및 오타 그리고 궁금한 점에 대해서는 댓글 남겨주세요.

    반응형

    댓글

Designed by Tistory.