1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Linuxサーバー構築標準教科書通りにDNSサーバーを構築してみる(備忘録)その2

Last updated at Posted at 2023-03-22

内容

今回は、Linuxサーバー構築標準教科書(Ver.3.0.2) を参照し構築。
資料と異なり、Oracle Linuxを使用。
今回はコンテンツサーバーの構築。
キャッシュサーバーの構築は、以前の記事に記載

参考資料

Linuxサーバー構築標準教科書(Ver.3.0.2)

検証環境

  • VMware Workstation 16 Player
    • Oracle Linux 8.7.0
  • bind9.16-chroot.x86_64
  • bind9.16.x86_64

インストール

bind-chrootはbindを実行したとき、/var/named/chrootディレクトリをルートディレクトリとして動作させるためのもの。
また、動作確認用にbind-utilsもインストールする。
バージョンもキャッシュサーバーと同じものを使用

[root@ContentsServerB dnsuser]# dnf list | grep bind9
bind9.16.x86_64                                        32:9.16.23-0.9.el8.1                                        @ol8_appstream
bind9.16-chroot.x86_64                                 32:9.16.23-0.9.el8.1                                        @ol8_appstream
bind9.16-libs.x86_64                                   32:9.16.23-0.9.el8.1                                        @ol8_appstream
bind9.16-license.noarch                                32:9.16.23-0.9.el8.1                                        @ol8_appstream
bind9.16-utils.x86_64                                  32:9.16.23-0.9.el8.1                                        @ol8_appstream
bind9.16.src                                           32:9.16.23-0.9.el8.1                                        ol8_appstream                                           32:9.16.23-0.9
[root@ContentsServerB dnsuser]# dnf installed bind9.16-utils.x86_64 bind9.16-chroot.x86_64 bind9.16.x86_64


正常にインストールされていることを確認
[root@ContentsServerB dnsuser]# dnf list installed | grep bind
bind9.16.x86_64                             32:9.16.23-0.9.el8.1                        @ol8_appstream
bind9.16-chroot.x86_64                      32:9.16.23-0.9.el8.1                        @ol8_appstream
bind9.16-libs.x86_64                        32:9.16.23-0.9.el8.1                        @ol8_appstream
bind9.16-license.noarch                     32:9.16.23-0.9.el8.1                        @ol8_appstream
bind9.16-utils.x86_64                       32:9.16.23-0.9.el8.1                        @ol8_appstream
[root@ContentsServerB dnsuser]#

ContentsB、ContentsCの両方で正常にインストールされていることを確認する。

設定

コンテンツサーバーは、キャッシュサーバーへ追加するためのゾーンを設定する必用がある。
ゾーンを追加するためには、

  • name.conf(bindの基本設定ファイル)へゾーンを追加
  • ゾーンファイルを記述

を実施する必用がある。

1. named.confへZoneの設定の追加
以下の状態へ変更。

/etc/named.conf
options {
        listen-on port 53 { 127.0.0.1; 192.168.10.3; }; →有効化するインターフェースの情報を記載。
        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";
        secroots-file   "/var/named/data/named.secroots";
        recursing-file  "/var/named/data/named.recursing";
        allow-query     { any; };             →localhostからanyへ修正しlocalhost以外にもこのサーバーへDNS問い合わせができるようにする。
        recursion no;                                  →yesの場合、リゾルバー(キャッシュサーバーのように名前解決を行う)動作をする。今回はNo

zone "beta.jp" IN {                     →beta.jpとなっているが、それぞれのZone名を記載する。正引き用のゾーン設定
        type master;
        file "beta.jp.zone";
        allow-update { none;};
};


2. ゾーンファイルの作成

/etc/named.confで設定したゾーン用のゾーンファイルを作成する。
/var/named/へ移動。

[root@localhost ~]# cd /var/named/

/var/named/named.empty/etc/named.confのゾーン設定時に指定した名前に合わせてコピーする。

[root@localhost ~]# cd /var/named/
[root@localhost named]# ls
chroot  data  dynamic  named.ca  named.empty  named.localhost  named.loopback  slaves
[root@localhost named]# cp -p named.empty beta.jp.zone
[root@localhost named]# ls
beta.jp.zone  chroot  data  dynamic  named.ca  named.empty  named.localhost  named.loopback  slaves

コピーが完了したら、ゾーンファイルの編集を行う。

/var/named/beta.jp.zone
$TTL 3H
$ORIGIN beta.jp.

@       IN SOA  @ rname.invalid. (
                                        20230323        ; serial  →日付
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum

        NS      host1.beta.jp.→サーバーのドメイン名を記載
        MX 10   mail.beta.jp. →メール用のドメインを記載


host1   A       192.168.10.3
www     A       192.168.10.3
mail    A       192.168.10.3
vhost1  A       192.168.10.3
vhost2  A       192.168.10.3
→いくつかホストを追加

いくつかのDNSレコードの簡単な説明は以下。
他にもレコードはあるので気になる方は調べてみてください。

レコード 説明
SOA ゾーンに関する情報が書かれている。リトライ間隔等
A ドメイン名に対応するIPv4アドレスが書かれたレコード
AAAA ドメイン名に対応するIPv6アドレスが書かれたレコード
MX 対象のメールの配送先のホスト名を定義するレコード
NS ゾーン情報を管理するネームサーバーのサーバー名を定義するレコード

3.ゾーンファイルの構文チェック

作成したゾーンファイルとnamed.confの構文チェックを行う。
問題がなければ以下の状態となる。

[root@localhost named]# named-checkzone beta.jp. /var/named/beta.jp.zone
zone beta.jp/IN: loaded serial 20230323
OK
[root@localhost named]# named-checkconf

named.confの構文チェックでは、間違いがあると以下のような出力がされる。

[root@localhost named]# named-checkconf
/etc/named.conf:11: missing ';' before '}'

3.ファイアウォール設定

ファイアウォールへDNSを追加し、リロードする。
DNSが追加されていることを確認する。

[root@localhost named]# firewall-cmd --add-service=dns --permanent
success
[root@localhost named]# firewall-cmd --reload
success
[root@localhost named]#
[root@localhost named]#
[root@localhost named]# firewall-cmd --list-all
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: ens160 ens224
  sources:
  services: cockpit dhcpv6-client dns ssh
  ports:
  protocols:
  forward: no
  masquerade: no
  forward-ports:
  source-ports:
  icmp-blocks:
  rich rules:

4.起動

起動して、正常に稼働していることを確認する。

[root@localhost named]# systemctl start named-chroot
[root@localhost named]# systemctl status named-chroot
● named-chroot.service - Berkeley Internet Name Domain (DNS)
   Loaded: loaded (/usr/lib/systemd/system/named-chroot.service; disabled; vendor preset: disabled)
   Active: active (running) since Wed 2023-03-22 15:02:07 EDT; 9s ago
  Process: 84458 ExecStart=/usr/sbin/named -u named -c ${NAMEDCONF} -t /var/named/chroot $OPTIONS (code=>
  Process: 84456 ExecStartPre=/bin/bash -c if [ ! "$DISABLE_ZONE_CHECKING" == "yes" ]; then /usr/sbin/na>
 Main PID: 84460 (named)
    Tasks: 4 (limit: 5725)
   Memory: 16.3M
   CGroup: /system.slice/named-chroot.service
           mq84460 /usr/sbin/named -u named -c /etc/named.conf -t /var/named/chroot
[root@localhost named]# systemctl enable named-chroot.service
Created symlink /etc/systemd/system/multi-user.target.wants/named-chroot.service → /usr/lib/systemd/system/named-chroot.service.

検証

各コンテンツサーバーから、それぞれのゾーンの情報が得られか確認する。

ホスト名 IPアドレス ゾーン
Cache searver 192.168.10.1
ContentsB 192.168.10.2 alpha.jp
ContentsC 192.168.10.3 beta.jp

ContentsBから、ContentsCのbeta.jpの情報が取得できていることを確認できた。

ContentsB
[root@ContentsServerB named]# host -v beta.jp
Trying "beta.jp"
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 53925
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 0

;; QUESTION SECTION:
;beta.jp.                       IN      A

;; AUTHORITY SECTION:
beta.jp.                2542    IN      SOA     beta.jp. rname.invalid. 20230323 86400 3600 604800 10800

Received 74 bytes from 192.168.10.1#53 in 1 ms
Trying "beta.jp"
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 25168
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 0

;; QUESTION SECTION:
;beta.jp.                       IN      AAAA

;; AUTHORITY SECTION:
beta.jp.                2542    IN      SOA     beta.jp. rname.invalid. 20230323 86400 3600 604800 10800

Received 74 bytes from 192.168.10.1#53 in 5 ms
Trying "beta.jp"
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 25451
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;beta.jp.                       IN      MX

ContentsCから、ContentsCのalpha.jpの情報が取得できていることを確認できた。

ContentsServerC
[root@ContentsServerC ~]# host -v alpha.jp
Trying "alpha.jp"
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 62792
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 0

;; QUESTION SECTION:
;alpha.jp.                      IN      A

;; AUTHORITY SECTION:
alpha.jp.               3441    IN      SOA     alpha.jp. rname.invalid. 20230323 86400 3600 604800 10800

Received 75 bytes from 192.168.10.1#53 in 1 ms
Trying "alpha.jp"
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 13386
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 0

;; QUESTION SECTION:
;alpha.jp.                      IN      AAAA

;; AUTHORITY SECTION:
alpha.jp.               3441    IN      SOA     alpha.jp. rname.invalid. 20230323 86400 3600 604800 10800

Received 75 bytes from 192.168.10.1#53 in 0 ms
Trying "alpha.jp"
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 4646
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;alpha.jp.                      IN      MX

;; ANSWER SECTION:
alpha.jp.               10232   IN      MX      10 mail.alpha.jp.

Received 47 bytes from 192.168.10.1#53 in 1 ms

最後に

今回は、二回にわたりDNSサーバーを一通り構築してみました。
普段Ciscoばかりを触っているせいか、うまくいかないことが多く、
自分の知識・実力不足を感じた時間となりました。
こうして投稿という形でアウトプットしながら一つ一つ身に着けていきたいと思います。
ありがとうございました。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?