BIND(Berkeley Internet Name Domain)はインターネットでもっとも利用されている DNS サーバーです。Unix 系システムにおいては特にその傾向が著しいです。現在は ISC によって開発・サポートされていますが、元は Paul Vixie 氏が DEC に在籍中の 1988 年に作り上げたソフトウェアです。
- 内部ネットワーク「プライベートなネットワーク」向けに 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 へアクセスして接続できることを確認します。
まとめ
「プライベートなネットワーク」なる内部サーバー向けのネットワークは大変小規模で、名前解決をしなければならないアドレスは僅かです。しかし、だからこそ、最低限の設定で BIND の動作を確認できるとも言えます。
この小さなネットワークをベースに試行を重ねて、判ったことを反映させて内容を改善していきます。また設定ファイルの書き方についてもう少ししっかりまとめたいと思っています。引用できるサイトを探し、そして内容をよく咀嚼してから書き足していきます。
参考サイト
- bitWalk's: [AlmaLinux 9] ルーターの設定
- AlmaLinux 9 : BIND : 内部ネットワーク向けの設定 : Server World
- AlmaLinux 9 : BIND : ゾーンファイルの設定 : Server World
- AlmaLinux 9 : BIND : 起動と動作確認 : Server World
- 第1章 BIND DNS サーバーのセットアップおよび設定 Red Hat Enterprise Linux 9 | Red Hat Customer Portal
- BIND 9 Administrator Reference Manual
- RFC 1034 - Domain names - concepts and facilities
- RFC 1035 - Domain names - implementation and specification
にほんブログ村
0 件のコメント:
コメントを投稿