Linuxサーバー構築標準教科書
こちらの参考書を使用してDNSサーバを構築しました。記事はWebサーバ、DNSサーバ、メールサーバと3回に分けて書いていき、今回はDNSサーバとなります。
ホスト名やIPアドレス、設定ファイルの値などについては上記の参考書に記載してあるのでそちらでご確認ください。
1.概要
今回は2つのドメイン(example1.jp と example2.jp)を用意し、それぞれが相互に名前解決できるようにDNSサーバーを構築しました。上位ドメイン(jp)からサブドメインへのゾーン委譲も設定しています。
DNSサーバーは3台構成です。
DNS構成概要
| ゾーン | 役割 | 説明 |
|---|---|---|
| jpゾーンのサーバー | 親ゾーン(キャッシュDNS兼任) | jpドメインを管理し、example1.jp と example2.jp に対してゾーン委譲を行う。またキャッシュDNSサーバーとしても動作させる。 |
| example1.jpゾーンのサーバー | 権威サーバー |
example1.jp ドメインの権威サーバーとして動作。 |
| example2.jpゾーンのサーバー | 権威サーバー |
example2.jp ドメインの権威サーバーとして動作。 |
各サーバー情報
| ドメイン名 | ホスト名 | IPアドレス |
|---|---|---|
| jp. | host0.jp. | 192.168.56.100 |
| example1.jp. | host1.example1.jp. | 192.168.56.101 |
| example2.jp. | host2.example2.jp. | 192.168.56.102 |
各環境情報
| 項目 | 内容 |
|---|---|
| OS | AlmaLinux 9.3 |
| 仮想環境 | VirtualBox |
| ネットワーク構成 | NAT、ホストオンリーアダプター |
2. example1.jpの設定
example1.jpドメインの設定を行っていきます。
2-1 BINDのインストール
dnf install bind bind -chroot
2-2 /etc/named.confの変更
参考書に従って以下の項目を追加、変更しました
vi /etc/named.conf
options {
listen -on port 53 { 127.0.0.1; 192.168.56.101; };
allow -query { any; };
recursion no;
}
zone "example1.jp" IN {
type master;
file "example1.jp.zone ";
allow -update { none; };
};
変更前
変更後
2-3 ゾーンファイルの作成
ゾーンファイルのテンプレートをコピーし編集していきます。
cp -p /var/named/named.empty /var/named/example1.jp.zone
vi /var/named/example1.jp.zone
$TTL 3H
$ORIGIN example1.jp.
@ IN SOA host1 root (
2023100901 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS host1.example1.jp.
MX 10 mail.example1.jp.
host1 A 192.168.56.101
www A 192.168.56.101
mail A 192.168.56.101
変更後
2-4 設定ファイルとゾーンファイルのチェック
/etc/named.comfの書式にミスがないかチェックします
named-checkconf
「;」をつけ忘れていたので修正します
ゾーンファイルの確認
named-checkzone example1.jp. /var/named/example1.jp.zone
3行目に@が2つあったのでSOAとhost1の間にある@を消しました。

2-5 BINDの起動
サービスの起動やファイアウォールの設定を行います
systemctl start named-chroot
systemctl enable named-chroot
firewall-cmd --add-service=dns --zone=public --permanent
firewall-cmd --reload
2-5 NATネットワークの無効化
使用している仮想マシンはNATとホストオンリーアダプトの2つを使っています。
さきほど色々とDNSの設定を行いましたが、NATによって参照するDNSサーバーが変わってしまうのでNATのインターフェイスを停止させます。
画像の様に名前解決を行うサーバが10.0.2.3で、そのインターフェイスがenp0s3なのでこれを停止させます。
nmcli connection down enp0s3
これで参照するサーバが自分自身になりました
2-6 名前解決の確認
名前解決ができるかdigコマンドを使って確認します
dig host1.example1.jp
dig www.example1.jp
dig mail.example1.jp
名前解決が出来ていることを確認できました
3. exmaple2.jpドメインとjpドメインの設定
example1.jpドメインの設定が出来たので、exmaple2.jpドメインとjpドメインの設定をしていきます。ホスト名やIPアドレスなどは1.概要に記載しています。
3-1 example2.jpの設定
example2.jpの設定はexample1.jpの設定と同じであるため省略しますが、設定でミスをした
箇所を書いておきます。
⇒MX 10 mail.example2.jpの部分でミス。最後に「.」をつけ忘れ
ゾーンファイル名のミス
サービスを開始させようとしたが出来なかった

⇒ゾーンファイルが存在しないと出ていたので確認すると、ゾーンファイル名が「example2.ip.zone」となっていた。「jp」とするべき部分を「ip」にしていた。
ファイルをコピーして起動させると成功しました。
名前解決できるか確認
3-2 ホスト0の設定
ホスト0の設定もホスト1、2とほぼ同じですが上位ゾーンの設定を行うので、そのあたりを中心に書いていこうと思います。
/etc/named.conf
ホスト0はキャッシュサーバとしても動作させるため「recursion yes;」に設定しています。また定義するゾーンも「jp」になります。
options {
listen -on port 53 { 127.0.0.1; 192.168.56.100; };
allow -query { any; };
recursion yes;
}
zone "jp" IN {
type master;
file "jp.zone ";
allow -update { none; };
};
/var/named/jp.zoneの修正
権限の譲渡を行ったゾーンのNSレコードとコンテンツサーバを指定するAレコード、グルーレコードを書いていきます
$TTL 3H
$ORIGIN jp.
@ IN SOA host0 root (
2023100901 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS host0.jp.
example1.jp. NS host1.example1 .jp.
example2.jp. NS host2.example2 .jp.
host0 A 192.168.56.100
host1.example1 .jp. A 192.168.56.101
host2.example2 .jp. A 192.168.56.102
その後はホスト1,2と同じく書式チェック・サービス起動・ファイアウォールの設定をします

4. 名前解決の確認
名前解決を確認していきます
ホスト1,2はDNSサーバを自身に指定しているためホスト0に変更する(写真はホスト1のみ)

画像はありませんがホスト2⇒ホスト1の名前解決も確認できました
感想
参考書に書いてあることをそのまま行っただけですが、どうであれDNSサーバを構築するという体験ができてよかったです。
Webサーバと同様に、CCNAなどの資格勉強がひと段落したらもう一歩踏み込んだDNSサーバの構築にチャレンジしたいと思います












































