AlmaLinux9.2にBindをインストールしてDNSサーバを構築します。
今回はtest.local
というゾーンを作成してレコードを登録します。
環境
AlmaLinux release 9.2 (Turquoise Kodkod)
bind-9.16.23-11.el9.x86_64
bind-utils-9.16.23-11.el9.x86_64
※firewalldとselinuxは停止済み
1.DNSパッケージのインストール
DNSサーバ用のパッケージとして、bindをインストールします。
また、DNS系コマンド(nslookup等)向けに、bind-utilsをインストールします。
# dnf install -y bind bind-utils
パッケージ bind-utils-32:9.16.23-11.el9.x86_64 は既にインストールされています。
依存関係が解決しました。
=================================================================================================================
パッケージ アーキテクチャー バージョン リポジトリー サイズ
=================================================================================================================
インストール:
bind x86_64 32:9.16.23-11.el9 local_dvd_AppStream 488 k
依存関係のインストール:
bind-dnssec-doc noarch 32:9.16.23-11.el9 local_dvd_AppStream 45 k
python3-bind noarch 32:9.16.23-11.el9 local_dvd_AppStream 61 k
python3-ply noarch 3.11-14.el9 local_dvd_BaseOS 103 k
弱い依存関係のインストール:
bind-dnssec-utils x86_64 32:9.16.23-11.el9 local_dvd_AppStream 113 k
トランザクションの概要
=================================================================================================================
インストール 5 パッケージ
《中略》
完了しました!
2.DNS設定ファイル編集(/etc/named.conf)
デフォルトから一部のみ変更しています。
設定部 | 設定項目 | 内容 | 意味 |
---|---|---|---|
options | listen-on | 53 { 192.168.142.31; }; | 自身のDNS-NWインターフェースの指定 |
options | allow-query | 192.168.142.0/24 | DNS問合せ元のホスト指定 |
zone | - | "test.local" | ゾーン名(正引きルール) |
- | type | master | このゾーンはこのサーバがマスター |
- | file | "test.local" | ゾーンデータのファイル名(正引き) |
- | allow-update | none | 他DNSの更新を反映しない |
zone | - | "142.168.192.in-addr.arpa" | ゾーン名(逆引きルール) |
- | type | master | このゾーンはこのサーバがマスター |
- | file | "test.local.rev" | ゾーンデータのファイル名(逆引き) |
- | allow-update | none | 他DNSの更新を反映しない |
//
// 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 { 192.168.142.31; }; ##### 編集箇所 #####
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 { 192.168.142.0/24; }; ##### 編集箇所 #####
/*
- 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-validation yes;
managed-keys-directory "/var/named/dynamic";
geoip-directory "/usr/share/GeoIP";
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 "test.local" IN { ##### 編集箇所 #####
type master; ##### 編集箇所 #####
file "test.local"; ##### 編集箇所 #####
allow-update { none; }; ##### 編集箇所 #####
}; ##### 編集箇所 #####
zone "142.168.192.in-addr.arpa" IN { ##### 編集箇所 #####
type master; ##### 編集箇所 #####
file "test.local.rev"; ##### 編集箇所 #####
allow-update { none; }; ##### 編集箇所 #####
}; ##### 編集箇所 #####
include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";
3.正引き用設定ファイル作成
test.localドメインの正引き設定ファイルを作成します。
設定部 | 設定項目 | 内容 | 意味 |
---|---|---|---|
$ | TTL | 86400 | ゾーンレコードTTL秒。 |
@ | IN SOA | alma92-h1.test.local. root.test.local. | プライマリDNSサーバ、管理者メールアドレス(FQDN) |
- | - | 2020020501 ; Serial | ゾーン情報のシリアル番号(バージョン) |
- | - | 28800 ; Refresh | セカンダリDNSサーバーの更新確認間隔(秒) |
- | - | 14400 ; Retry | 更新失敗時の再試行時間(秒) |
- | - | 3600000 ; Expire | 更新失敗時の情報利用時間(秒) |
- | - | 86400 ) ; Minimum | レコードのTTL(秒) |
- | IN NS | alma92-h1.test.local. | 自身が管理しているゾーンのDNSサーバー(FQDN) |
alma92-h1 | IN A | 192.168.142.31 | 正引きレコード |
alma92-h2 | IN A | 192.168.142.32 | 正引きレコード |
$TTL 86400
@ IN SOA alma92-h1.test.local. root.test.local.(
2020020501 ; Serial
28800 ; Refresh
14400 ; Retry
3600000 ; Expire
86400 ) ; Minimum
IN NS alma92-h1.test.local.
alma92-h1 IN A 192.168.142.31
alma92-h2 IN A 192.168.142.32
4.逆引き用設定ファイル作成
test.localドメインの逆引き設定ファイルを作成します。
設定部 | 設定項目 | 内容 | 意味 |
---|---|---|---|
$ | TTL | 86400 | ゾーンレコードTTL秒。 |
@ | IN SOA | alma92-h1.test.local. root.test.local. | プライマリDNSサーバ、管理者メールアドレス(FQDN) |
- | - | 2020020501 ; Serial | ゾーン情報のシリアル番号(バージョン) |
- | - | 28800 ; Refresh | セカンダリDNSサーバーの更新確認間隔(秒) |
- | - | 14400 ; Retry | 更新失敗時の再試行時間(秒) |
- | - | 3600000 ; Expire | 更新失敗時の情報利用時間(秒) |
- | - | 86400 ) ; Minimum | レコードのTTL(秒) |
- | IN NS | alma92-h1.test.local. | 自身が管理しているゾーンのDNSサーバー(FQDN) |
31 | IN PTR | alma92-h1.test.local. | 逆引きレコード |
32 | IN PTR | alma92-h2.test.local. | 逆引きレコード |
$TTL 86400
@ IN SOA alma92-h1.test.local. root.test.local.(
2020020501 ; Serial
28800 ; Refresh
14400 ; Retry
3600000 ; Expire
86400 ) ; Minimum
IN NS alma92-h1.test.local.
31 IN PTR alma92-h1.test.local.
32 IN PTR alma92-h2.test.local.
5.DNSコンフィグ確認
各設定のコンフィグ内容が正しいかを確認していきます。
基本設定ファイル
# named-checkconf
ゾーン設定ファイル
# named-checkzone test.local /var/named/test.local
zone test.local/IN: loaded serial 2020020501
OK
# named-checkzone test.local.rev /var/named/test.local.rev
zone test.local.rev/IN: loaded serial 2020020501
OK
7.サービス起動
DNSサービスを起動します。
# systemctl restart named
# systemctl enable named
# systemctl status named
● named.service - Berkeley Internet Name Domain (DNS)
Loaded: loaded (/usr/lib/systemd/system/named.service; enabled; preset: disabled)
Active: active (running) since Sun 2023-06-04 20:06:35 JST; 6s ago
Process: 28260 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, stat>
Process: 28262 ExecStart=/usr/sbin/named -u named -c ${NAMEDCONF} $OPTIONS (code=exited, status=0/SUCCESS)
Main PID: 28263 (named)
Tasks: 4 (limit: 11107)
Memory: 15.6M
CPU: 115ms
CGroup: /system.slice/named.service
mq28263 /usr/sbin/named -u named -c /etc/named.conf
8.DNSクライアント設定
クライアントとなるサーバ側の設定としては、パッケージのインストールを行い、リゾルバ設定を記述すればOKです。
# yum install -y bind-utils
《中略》
完了しました!
# vi /etc/resolv.conf
# Generated by NetworkManager
search test.local
nameserver 192.168.142.31
rhel7ぐらいまではdomain
でドメイン記載していましたが、最近はドメインを複数記載可能なsearch
に代用されているようです。
8.DNS動作確認
DNSクライアント側から、nslookupコマンドでDNSサーバの応答を確認します。
# nslookup alma92-h1
Server: 192.168.142.31
Address: 192.168.142.31#53
Name: alma92-h1.test.local
Address: 192.168.142.31
# nslookup 192.168.142.31
31.142.168.192.in-addr.arpa name = alma92-h1.test.local.