Debian 11 (bullseye) - DNS サーバ BIND9 構築!
Updated:
Debian GNU/Linux 11 (bullseye) に DNS サーバを構築する方法についての記録です。
以前古いバージョンでの作業時に残していた記録を参考に作業を行い、今回更新した作業記録を貼付する形式の内容となっています。
(当然ながら、興味がなければスルーしてください)
0. 前提条件
- Debian GNU/Linux 11.0.0 (bullseye; 64bit) での作業を想定。
- サーバのローカル IP アドレスは
192.168.11.101
、グローバル IP アドレスはxxx.yyy.zzz.aaa
を想定。 - ドメイン名は
xxxxxxxx.com
、マシンのホスト名はfoo
、ネームサーバホスト名はns
を想定。 - セカンダリ DNS は用意しない。
- root ユーザでの作業を想定。
1. BIND のインストール
(dnsutils は dig
コマンド用)
# apt -y install bind9 dnsutils
2. BIND 設定ファイルの編集
File: /etc/bind/named.conf
3. 内部向けゾーンファイルの作成
BIND 設定ファイルで指定している内部向けゾーンファイルを以下のように作成する。
File: /etc/bind/named.conf.internal-zones
最後の empty-zones-enable no;
は、ログに以下のようなメッセージが出力されないための対処。
Warning: view internal: 'empty-zones-enable/disable-empty-zone' not set: disabling RFC 1918 empty zones
4. 外部向けゾーンファイルの作成
BIND 設定ファイルで指定している外部向けゾーンファイルを以下のように作成する。
File: /etc/bind/named.conf.external-zones
5. オプション設定ファイルの編集
その他の設定用ファイルを以下のように編集する。
File: /etc/bind/named.conf.options
6. 内部向け正引きゾーン定義ファイルの作成
File: /etc/bind/xxxxxxxx.com.lan
hoge
, fuga
はローカルネットワーク内の別のマシン。
www
, ftp
, mail
は別名定義。
7. 外部向け正引きゾーン定義ファイルの作成
File: /etc/bind/xxxxxxxx.com.wan
8. 内部向け逆引きゾーン定義ファイルの作成
File: /etc/bind/11.168.192.db
9. 外部向け逆引きゾーン定義ファイルの作成
File: /etc/bind/zzz.yyy.xxx.db
(255.255.255.254
はグローバル IP が1個のみの場合の設定値)
10. 問合せ先 DNS サーバの追加
DNS サーバー自身も問合せ先に追加する。
最初から記載のあるルータの IP アドレス(インストール・初期設定時のもの)をセカンダリ、今回構築のサーバ自身をプライマリに設定するので、ルータより先に記述する。
File: /etc/resolv.conf
11. IPv6 の無効化設定
システムとして IPv6 を無効にしている場合は、以下のように /etc/default/named
を編集する。
(/var/log/syslog
に ... named[9999]: error (network unreachable) resolving ...
のようなエラーが出力されないようにするため)
※かつては、 named
というファイル名ではなく bind9
というファイル名だった。
File: /etc/default/named
12. BIND の再起動
設定を有効化するために BIND を再起動する。(サービス名は bind9
も可)
# systemctl restart named
13. 動作確認
DNS サーバが正常に機能する(正引きで IP アドレス、逆引きでホスト名が返ってくる)か、確認してみる。
【内部向け正引きテスト】
# dig ns.xxxxxxxx.com.
; <<>> DiG 9.16.15-Debian <<>> ns.xxxxxxxx.com.
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 42607
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1232
; COOKIE: feae014ca532b70b01000000612d88232c502b8a27dff786 (good)
;; QUESTION SECTION:
;ns.xxxxxxxx.com. IN A
;; ANSWER SECTION:
ns.xxxxxxxx.com. 86400 IN A 192.168.11.101
;; Query time: 8 msec
;; SERVER: 192.168.11.101#53(192.168.11.101)
;; WHEN: Tue Aug 31 10:38:43 JST 2021
;; MSG SIZE rcvd: 87
【内部向け逆引きテスト】
# dig -x 192.168.11.101
; <<>> DiG 9.16.15-Debian <<>> -x 192.168.11.101
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 30868
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1232
; COOKIE: 1a0f1c91c39ba3aa01000000612d885de1fc62bcd5c5375a (good)
;; QUESTION SECTION:
;101.11.168.192.in-addr.arpa. IN PTR
;; ANSWER SECTION:
101.11.168.192.in-addr.arpa. 86400 IN PTR ns.xxxxxxxx.com.
101.11.168.192.in-addr.arpa. 86400 IN PTR foo.xxxxxxxx.com.
;; Query time: 3 msec
;; SERVER: 192.168.11.101#53(192.168.11.101)
;; WHEN: Tue Aug 31 10:39:41 JST 2021
;; MSG SIZE rcvd: 131
【外部向け正引きテスト】
# dig www.isc.org
; <<>> DiG 9.16.15-Debian <<>> www.isc.org
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 1984
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 512
;; QUESTION SECTION:
;www.isc.org. IN A
;; ANSWER SECTION:
www.isc.org. 60 IN CNAME dualstack.osff2.map.fastly.net.
dualstack.osff2.map.fastly.net. 4 IN A 151.101.90.217
;; Query time: 175 msec
;; SERVER: 192.168.11.1#53(192.168.11.1)
;; WHEN: Tue Aug 31 10:40:24 JST 2021
;; MSG SIZE rcvd: 100
【外部向け逆引きテスト】
# dig -x 151.101.90.217
; <<>> DiG 9.16.15-Debian <<>> -x 151.101.90.217
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 60481
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 512
;; QUESTION SECTION:
;217.90.101.151.in-addr.arpa. IN PTR
;; AUTHORITY SECTION:
151.in-addr.arpa. 749 IN SOA pri.authdns.ripe.net. dns.ripe.net. 1630366598 3600 600 864000 3600
;; Query time: 55 msec
;; SERVER: 192.168.11.1#53(192.168.11.1)
;; WHEN: Tue Aug 31 10:40:49 JST 2021
;; MSG SIZE rcvd: 116
14. ファイアウォール (ufw) の設定
実際に運用する場合は、外部からのTCP/UDP53番ポート(DNS)へのアクセスを許可する必要がある。
# ufw allow 53
Rule added
# ufw status
Status: active
To Action From
-- ------ ----
9999/tcp ALLOW 192.168.11.0/24
53 ALLOW Anywhere
以上。
Comments