MENU
  • VPS(レンタルサーバ)比較
  • ITエンジニアの転職
  • IT技術入門(Engineers.LOG)
カテゴリー
  • IT関連 (623)
    • Bootstrap (2)
    • クラウド (4)
    • サーバー技術 (185)
    • ストレージ (7)
      • NetApp (7)
    • ネットワーク技術 (91)
      • Cisco (36)
      • Juniper (18)
      • 負荷分散装置 (17)
    • パソコン関連 (92)
      • MAC (25)
      • Windows (54)
    • プログラミング (154)
      • Ansible (11)
      • C言語 (23)
      • Python (111)
        • Django (20)
    • 仮想化 (88)
      • Docker (63)
      • VMware (23)
  • VPS (200)
    • ABLENET VPS (16)
    • Amazon Lightsail(VPS) (2)
    • ConoHaVPS (37)
    • mixhostVPS (4)
    • WebARENAIndigo (16)
    • XServerVPS (34)
    • お名前.com VPS (12)
    • さくらのVPS (24)
    • カゴヤクラウドVPS (13)
    • シンVPS (7)
  • レンタルサーバー (56)
    • エックスサーバー (38)
  • 光回線 (8)
  • 技術スキルアップ開発・学習 (7)
    • Envader (2)
    • RareTECH (2)
    • Udemy (3)
もう現役20年超えましたー。経験値ならだれにも負けないエンジニア技術ブログ
インフラエンジニアの技術LOG
  • VPS(レンタルサーバ)比較
  • ITエンジニアの転職
  • IT技術入門(Engineers.LOG)
インフラエンジニアの技術LOG
  • VPS(レンタルサーバ)比較
  • ITエンジニアの転職
  • IT技術入門(Engineers.LOG)
  1. ホーム
  2. IT関連
  3. サーバー技術
  4. 【CentOS8】DNSサーバー(BIND)インストール構築手順

【CentOS8】DNSサーバー(BIND)インストール構築手順

2020 11/08
サーバー技術
2020年11月6日2020年11月8日

CentOS8でDNSサーバーをインストール・構築・名前解決の動作確認を実施したので手順をまとめました。

CentOS8のバージョンは以下となります。

$ cat /etc/redhat-release
CentOS Linux release 8.2.2004 (Core)

今回構築するDNSサーバーのホスト名は以下とします。

$ hostname
dns.test.local

ドメインは「test.local」とします。

目次
安くて高速!高性能VPSで快適開発!
最速5分でサーバー構築
>>>こちらをチェック

エンジニア必見! 技術力を伸ばすVPS徹底比較
>>>VPS比較

CentOS8「DNSサーバー(BIND)」インストール手順

CentOS8でDNSサーバーはdnfコマンドでインストールするので事前にアップデートを実施します。

$ dnf -y update

アップデート完了後以下コマンドで「BIND」をインストールします。

$ dnf -y install bind bind-utils

BINDインストール後、サービスの状態を確認します。

$ systemctl status named.service
● named.service - Berkeley Internet Name Domain (DNS)
   Loaded: loaded (/usr/lib/systemd/system/named.service; disabled; vendor preset: disabled)
   Active: inactive (dead)
$

サービスはまだ立ち上がっていないことが分かります。

namedバックアップ

named.confを編集する前にバックアップをとっておきます。

$ cp -p /etc/named.conf /etc/named.conf_old
$ ll /etc/named.*
-rw-r-----. 1 root named 1991 11月  6 07:31 /etc/named.conf
-rw-r-----. 1 root named 1984 11月  6 06:55 /etc/named.conf.rpmsave
-rw-r-----. 1 root named 1984 11月  6 06:55 /etc/named.conf_old
-rw-r-----. 1 root named 1029  9月  9 12:48 /etc/named.rfc1912.zones
-rw-r--r--. 1 root named 1070  9月  9 12:48 /etc/named.root.key
$

「named.conf」編集

「named.conf」を編集します。
今回は内部DNSサーバーを構築するため以下の設定をしました。

  • 11-13行目:ローカルネットワークを定義(192.168.0.0/24)
  • 16行目:IPv4での問い合わせ(リッスン)をすべて受け付ける
  • 17行目:IPv6の問い合わせ(リッスン)を受け付けない
  • 24行目:名前解決の問い合わせを受け付ける範囲を指定(自薦に設定したローカルネットワークを指名)
  • 66-75行目:正引き、逆引きのゾーン定義を設定
$ vim /etc/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.
//

acl network {
        192.168.0.0/24;
};

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     { localhost; network; };

        /*
         - 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 yes;

        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 "test.local" IN {
        type master;
        file "test.local";
        allow-update { none; };
};
zone "196.180.10.in-addr.arpa" IN {
        type master;
        file "196.180.10.in-addr.arpa.rev";
        allow-update { none; };
};
$

今回の設定はIPv6を使用していないため、以下コンフィグで不要なIPv6のログを抑制します。
※IPv4のみを使用します。

$ vim /etc/sysconfig/named
# 最終行に追記
OPTIONS="-4"

設定後、以下コマンドでエラーが出ないことを確認します。

$ named-checkconf

正引きゾーンファイル作成

上記、「named.conf」で定義したゾーンから設定ファイルを作成します。

ホスト名からIPアドレスを名前解決するために「正引きゾーンファイル」を作成します。
ドメイン名は「test.local」でローカルネットワーク「192.168.0.0/24」の環境を作成します。

ゾーンファイルの作成は以下のフォルダで作成します。

$ cd /var/named/
$ vim test.local

「test.local」の設定内容は以下となります。

$TTL 86400
@                 IN      SOA dns.test.local. root.test.local. (
                          2020110601 ; serial
                          3600       ; refresh 1hr
                          1800       ; retry 15min
                          604800     ; expire 1w
                          86400      ; min 24hr
)

                  IN      NS     dns.test.local.
dns               IN      A      192.168.0.100
ntp               IN      A      192.168.0.101
dhcp              IN      A      192.168.0.102

逆引きゾーンファイル作成

逆引きゾーンファイルも正引きゾーンファイルと同じフォルダ内で作成します。

$ vim 0.168.192.in-addr.arpa.rev

逆引きゾーンファイルの設定内容は以下となります。

$TTL 86400
@                IN      SOA dns.test.local. root.test.local. (
                         2020110601 ; serial
                         3600       ; refresh 1hr
                         1800       ; retry 15min
                         604800     ; expire 1w
                         86400      ; min 24hr
)

                 IN      NS     dns.test.local.
100              IN      PTR    dns.test.local.
101              IN      PTR    ntp.test.local.
102              IN      PTR    dhcp.test.local.

作成したゾーンファイルをチェック

上記でゾーンファイルを作成したら、設定内容が間違っていないか、以下コマンドで確認をします。

$ named-checkconf -z
zone localhost.localdomain/IN: loaded serial 0
zone localhost/IN: loaded serial 0
zone 1.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: loaded serial 0
zone 1.0.0.127.in-addr.arpa/IN: loaded serial 0
zone 0.in-addr.arpa/IN: loaded serial 0
zone test.local/IN: loaded serial 2020110601
zone 0.168.192.in-addr.arpa/IN: loaded serial 2020110601

上記のように「error」、「fail」などの文字列がなければ成功です。

「firewall」でDNSの通信を許可する

次に「firewall」でDNSの通信を許可します。

事前にfirewallで現状の通信確認をします。
「services」でdnsが許可されていません。

$ firewall-cmd --list-all
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: ens192
  sources:
  services: cockpit dhcpv6-client ssh
  ports:
  protocols:
  masquerade: yes
  forward-ports:
  source-ports:
  icmp-blocks:
  rich rules:

以下コマンドでdnsを許可します。

$ firewall-cmd --add-service=dns --permanent
success

上記設定後、「firewall」を再起動します。

$ firewall-cmd --reload
success

再起動後、再度firewallの内容を確認し、「services」でdnsが許可されていることが確認できます。

$ firewall-cmd --list-all
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: ens192
  sources:
  services: cockpit dhcpv6-client dns ssh
  ports:
  protocols:
  masquerade: yes
  forward-ports:
  source-ports:
  icmp-blocks:
  rich rules:

$

DNS(BIND)サービス起動

上記確認後、DNSサービスを起動します。

$ systemctl start named
$ systemctl enable named

サービスを確認し、DNSが起動していることを確認します。

$ 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 Fri 2020-11-06 07:34:54 EST; 16min ago
 Main PID: 1823 (named)
    Tasks: 4 (limit: 11327)
   Memory: 88.1M
   CGroup: /system.slice/named.service
           mq1823 /usr/sbin/named -u named -c /etc/named.conf

11月 06 07:40:32 dns.test.local named[1823]: network unreachable resolving 'tm1.dns-tm.com/AAAA/IN': 2620:1ec:8ec::9#53
11月 06 07:40:32 dns.test.local named[1823]: network unreachable resolving 'tm2.dns-tm.com/A/IN': 2620:1ec:bda::9#53
11月 06 07:40:32 dns.test.local named[1823]: network unreachable resolving 'tm2.dns-tm.com/AAAA/IN': 2620:1ec:bda::9#53
11月 06 07:40:32 dns.test.local named[1823]: network unreachable resolving 'tm1.dns-tm.com/A/IN': 2620:1ec:bda::9#53
11月 06 07:40:32 dns.test.local named[1823]: network unreachable resolving 'tm1.dns-tm.com/AAAA/IN': 2620:1ec:bda::9#53
11月 06 07:40:32 dns.test.local named[1823]: network unreachable resolving 'tm2.dns-tm.com/A/IN': 2a01:111:4000::9#53
11月 06 07:40:32 dns.test.local named[1823]: network unreachable resolving 'tm2.dns-tm.com/AAAA/IN': 2a01:111:4000::9#53
11月 06 07:40:32 dns.test.local named[1823]: network unreachable resolving 'tm1.dns-tm.com/A/IN': 2a01:111:4000::9#53
11月 06 07:40:32 dns.test.local named[1823]: network unreachable resolving 'tm1.dns-tm.com/AAAA/IN': 2a01:111:4000::9#53
11月 06 07:49:06 dns.test.local named[1823]: network unreachable resolving 'a767.dscg3.akamai.net/A/IN': 2600:1480:1::c1#53
$

動作確認(名前解決)

DNSサーバーが正常に起動できたら、実際に名前解決ができるか確認をします。

「nslookup」コマンドでDNSサーバーを指名して名前解決を実施します。

正引き

$ nslookup dns.test.local 192.168.0.100
Server:         192.168.0.100
Address:        192.168.0.100#53

Name:   dns.test.local
Address: 192.168.0.100

逆引き

$ nslookup 192.168.0.100 10.192.168.0.100
100.0.168.192.in-addr.arpa     name = dns.test.local.

上記のようにうまく名前解決ができれば完成です。

以上がCentOS8のDNSサーバー構築手順となります。

あわせて読みたい
サーバーエンジニアへの構築手順書 サーバエンジニアにおすすめの構築手順をまとめたページです。 サーバ初心者の方。じぶんも初心者なので、そっから目線で構築した設計手順書となっています。 ご興味の...
エンジニアスキルをアップする勉強法

ITエンジニアの開発・検証・学習としてインターネット上で専用のサーバ(VPS)を利用しましょう!
実務経験はVPSで学べます。

あわせて読みたい
現役エンジニアがおすすめするVPSレンタルサーバ比較(高速SSD限定) 格安VPS比較(2025年最新版)

サーバー技術
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする コメントをキャンセル

email confirm*

post date*

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)



検索
カテゴリー
新着記事
  • XServerVPS アニメ風 男の子 プログラミングをしている VPSを利用している 楽しそうにしている
    XServerVPSで証明書(SSL)を取得する方法
    2025年3月24日
    XServerVPS
  • レンタルサーバ アニメ風 女の子 楽しんでパソコンをしている 目がキラキラ
    WordPressがレンタルサーバよりVPSで利用する方がおすすめの理由
    2025年3月19日
    VPS
  • VPS レンタルサーバー アニメ風 女の子 プログラミングをしている VPSを利用している 楽しそうにしている
    VPSとクラウドの違いとは?初心者向けにわかりやすく解説
    2025年3月5日
    VPS
  • シンVPS アニメ風 女の子 パソコン プログラミングをしている VPSを利用している 楽しそうにしている
    シンVPSはWindows serverを利用できない。その理由と利用できるOSは?
    2025年3月4日
    シンVPS
  • シンVPS アニメ風 女の子 パソコン プログラミングをしている VPSを利用している 楽しそうにしている
    シンVPSでゲームを利用する環境はあるのか
    2025年3月4日
    シンVPS
  • シンVPS アニメ風 女の子 パソコン プログラミングをしている VPSを利用している 楽しそうにしている
    シンVPSのサイトの表示速度は他社に比べて早いのか?
    2025年3月4日
    シンVPS
目次
目次