[AlmaLinux 9] BIND の設定

2024-02-11 公開

BIND(Berkeley Internet Name Domain)はインターネットでもっとも利用されている DNS サーバーです。Unix 系システムにおいては特にその傾向が著しいです。現在は ISC によって開発・サポートされていますが、元は Paul Vixie 氏が DEC に在籍中の 1988 年に作り上げたソフトウェアです。

Wikipedia より引用
今回のテーマ
  • 内部ネットワーク「プライベートなネットワーク」向けに DNS サーバーを構築して、名前解決サービスが提供できるようにします。

--- OUTLINE ---

DHCP サービス付きのルーターにするサーバーの OS は下記のとおりです。

OS AlmaLinux 9.3 (Shamrock Pampas Cat) x86_64

 

AlmaLinux 9

ネットワーク構成

今回 BIND を設定するサーバーは、DHCP サーバーを設定したネットワーク [1]trusted ゾーン内の「プライベートなネットワーク」で使用する DNS サーバーです。

右図に、参考サイト [1] と同じ、AlmaLinux (cnction) が扱うネットワーク構成を示しました。

BIND の設定については、参考サイト [2], [3], [4] を参考にさせていただきました。

 

AlmaLinux 9

DNS サーバーの設定

BIND をインストールします。

[bitwalk@cnction ~]$ sudo dnf -y install bind bind-utils
...
...
インストール済み:
  bind-32:9.16.23-14.el9_3.x86_64                                               
  bind-dnssec-doc-32:9.16.23-14.el9_3.noarch                                    
  bind-dnssec-utils-32:9.16.23-14.el9_3.x86_64                                  
  python3-bind-32:9.16.23-14.el9_3.noarch                                       
  python3-ply-3.11-14.el9.noarch                                                

完了しました!
[bitwalk@cnction ~]$ 

外部ネットワークには非公開の、下記の内部(ローカル)ネットワーク専用 DNS サーバーとして設定します。

ローカルネットワーク 192.168.2.0/24
ドメイン名           bitwalk.home

管理者権限で /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 internal-network {
        192.168.2.0/24;
};

options {
	listen-on port 53 { any; };
	listen-on-v6 port 53 { any; };
	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; internal-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-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 "." IN {
	type hint;
	file "named.ca";
};

include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";

zone "bitwalk.home" IN {
        type master;
        file "bitwalk.home.lan";
        allow-update { none; };
};
zone "2.168.192.in-addr.arpa" IN {
        type master;
        file "2.168.192.db";
        allow-update { none; };
};

下に追加した部分では、正引きおよび逆引き情報のゾーンファイル名を指定しています。

あと、管理者権限で /etc/sysconfig/named を編集して一行加えます。これは IPv4 のみの使用に変更して不要なログを抑制するためのものです。

# BIND named process options
# ~~~~~~~~~~~~~~~~~~~~~~~~~~
#
# OPTIONS="whatever"     --  These additional options will be passed to named
#                            at startup. Don't add -t here, enable proper
#                            -chroot.service unit file.
#
# NAMEDCONF=/etc/named/alternate.conf
#                        --  Don't use -c to change configuration file.
#                            Extend systemd named.service instead or use this
#                            variable.
#
# DISABLE_ZONE_CHECKING  --  By default, service file calls named-checkzone
#                            utility for every zone to ensure all zones are
#                            valid before named starts. If you set this option
#                            to 'yes' then service file doesn't perform those
#                            checks.
OPTIONS="-4"

 

AlmaLinux 9

ゾーンファイルの設定

/etc/named.conf で追加したゾーンファイルのうち、まず、ホスト名から IP アドレスを解決する、正引き情報のゾーンファイル /var/named/bitwalk.home.lan を作成します。

$TTL 86400
@   IN  SOA     dns.bitwalk.home. root.bitwalk.home. (
        2024021001  ;Serial
        3600        ;Refresh
        1800        ;Retry
        604800      ;Expire
        86400       ;Minimum TTL
)
        IN  NS      dns.bitwalk.home.
        IN  A       192.168.2.1
        IN  MX 10   dns.bitwalk.home.

dns     IN  A       192.168.2.1

www     IN  CNAME   dns.bitwalk.home.

次に IP アドレスからホスト名を解決する、逆引き情報のゾーンファイル /var/named/2.168.192.db を作成します。

$TTL 86400
@   IN  SOA     dns.bitwalk.home. root.bitwalk.home. (
        2024021001  ;Serial
        3600        ;Refresh
        1800        ;Retry
        604800      ;Expire
        86400       ;Minimum TTL
)
        IN  NS      dns.bitwalk.home.

1       IN  PTR     dns.bitwalk.home.

 

AlmaLinux 9

BIND の起動

BIND (named) を起動して、自動起動も有効にしておきます。

[bitwalk@cnction ~]$ sudo systemctl start named
[bitwalk@cnction ~]$ sudo systemctl enable named
Created symlink /etc/systemd/system/multi-user.target.wants/named.service → /usr/lib/systemd/system/named.service.
[bitwalk@cnction ~]$ 

 

AlmaLinux 9

ファイアウォール の設定

ゾーン trusted 側に DNS サービスを追加します。

[bitwalk@cnction ~]$ sudo firewall-cmd --permanent --zone=trusted --add-service=dns
success
[bitwalk@cnction ~]$ sudo firewall-cmd --reload
success
[bitwalk@cnction ~]$ 

 

AlmaLinux 9

DHCP の設定変更

参考サイト [1] で設定した DHCP サーバーですが、DNS サーバーの設定に合わせて、DHCP サーバーの設定 /etc/dhcp/dhcpd.conf を下記のように変更します。

# If this DHCP server is the official DHCP server for the local
# network, the authoritative directive should be uncommented.
authoritative;

subnet 192.168.2.0 netmask 255.255.255.0 {
  range 192.168.2.100 192.168.2.200;
  option domain-name "bitwalk.home";
  option domain-name-servers 192.168.2.1;
  option routers 192.168.2.1;
  option broadcast-address 192.168.2.255;
  default-lease-time 600;
  max-lease-time 7200;
}

 

Client PC

動作確認

AlmaLinux を再起動して、クライアントのノート PC (silverblue) を接続して DNS サービスの動作確認をします。

まず、ドメイン bitwalk.home のネームサーバーを問い合わせます。

bitwalk@silverblue:~$ dig bitwalk.home NS

; <<>> DiG 9.18.21 <<>> bitwalk.home NS
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 55296
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 2

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 65494
;; QUESTION SECTION:
;bitwalk.home.			IN	NS

;; ANSWER SECTION:
bitwalk.home.		86400	IN	NS	dns.bitwalk.home.

;; ADDITIONAL SECTION:
dns.bitwalk.home.	86400	IN	A	192.168.2.1

;; Query time: 3 msec
;; SERVER: 127.0.0.53#53(127.0.0.53) (UDP)
;; WHEN: Sun Feb 11 13:40:14 JST 2024
;; MSG SIZE  rcvd: 75

bitwalk@silverblue:~$ 

次に、www.bitwalk.home の IP アドレスを問い合わせます。

bitwalk@silverblue:~$ dig www.bitwalk.home.

; <<>> DiG 9.18.21 <<>> www.bitwalk.home.
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 11916
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 65494
;; QUESTION SECTION:
;www.bitwalk.home.		IN	A

;; ANSWER SECTION:
www.bitwalk.home.	86400	IN	CNAME	dns.bitwalk.home.
dns.bitwalk.home.	86400	IN	A	192.168.2.1

;; Query time: 3 msec
;; SERVER: 127.0.0.53#53(127.0.0.53) (UDP)
;; WHEN: Sun Feb 11 14:12:54 JST 2024
;; MSG SIZE  rcvd: 79

bitwalk@silverblue:~$ 

今度は、逆引きで IP アドレス 192.168.2.1 からドメイン名を問い合わせます。

bitwalk@silverblue:~$ dig -x 192.168.2.1

; <<>> DiG 9.18.21 <<>> -x 192.168.2.1
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 47057
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 65494
;; QUESTION SECTION:
;1.2.168.192.in-addr.arpa.	IN	PTR

;; ANSWER SECTION:
1.2.168.192.in-addr.arpa. 86400	IN	PTR	dns.bitwalk.home.

;; Query time: 2 msec
;; SERVER: 127.0.0.53#53(127.0.0.53) (UDP)
;; WHEN: Sun Feb 11 13:31:23 JST 2024
;; MSG SIZE  rcvd: 83

bitwalk@silverblue:~$ 

この Almalinux (192.168.2.1) には Apache httpd サーバーが稼働しているので、クライアント PC でブラウザを起動して http://www.bitwalk.home へアクセスして接続できることを確認します。

http://www.bitwalk.home へアクセス

 

まとめ

「プライベートなネットワーク」なる内部サーバー向けのネットワークは大変小規模で、名前解決をしなければならないアドレスは僅かです。しかし、だからこそ、最低限の設定で BIND の動作を確認できるとも言えます。

この小さなネットワークをベースに試行を重ねて、判ったことを反映させて内容を改善していきます。また設定ファイルの書き方についてもう少ししっかりまとめたいと思っています。引用できるサイトを探し、そして内容をよく咀嚼してから書き足していきます。

 

参考サイト

  1. bitWalk's: [AlmaLinux 9] ルーターの設定
  2. AlmaLinux 9 : BIND : 内部ネットワーク向けの設定 : Server World
  3. AlmaLinux 9 : BIND : ゾーンファイルの設定 : Server World
  4. AlmaLinux 9 : BIND : 起動と動作確認 : Server World
  5. 第1章 BIND DNS サーバーのセットアップおよび設定 Red Hat Enterprise Linux 9 | Red Hat Customer Portal
  6. BIND 9 Administrator Reference Manual
  7. RFC 1034 - Domain names - concepts and facilities
  8. RFC 1035 - Domain names - implementation and specification

 

ブログランキング・にほんブログ村へにほんブログ村

0 件のコメント: