ラズパイで作る自宅WEBサーバ構築
第7回 BIND(DNSサーバ) 設定 2019.11.11 / 2021.07.29更新
今回はドメイン名とIP アドレスの名前解決機能を提供する DNS (Domain Name System) サーバーを構築します。
YouTube 動画でポイントを説明しています。上記画像をクリックすると再生できます。
ここでのポイントはブロードバンドルータの内側、ローカル側にあるラズパイにDNS設定を行う点です。
ブロードバンドルータ: | 192.168.11.1 |
ラズパイ: | 192.168.11.21 |
固定IPアドレス: | 123.456.78.90 |
ドメイン名: | example.jp |
ホスト名: | ns.example.jp |
として説明します。
まずは、固定IPアドレスの取得に関してです。
固定IPアドレスを取得する際には、利用している回線に対応しているサービス提供業者を選択しましょう。
私は、GMOとくとくBB フレッツ光ファミリー 固定IP付接続サービスを利用しています。
WEB申込みでクレジット決済であれば、早ければ当日に固定IPアドレスを取得できます。
手続きが完了すると、固定IPアドレスと接続ID、接続パスワードが通知されます。
ブロードバンドルータ側でIDとパスワードを設定することにより、開通します。
次にドメインの取得は、ドメイン登録業者いわゆるレジストラに申請します。
レジストラ(ドメイン登録業者)の代表格の、「お名前.com」では「お名前.com Navi」からDNS設定も行えるようです。
独自にDNSサーバーを運用するのは敷居が高いと思われる方は、 このような外部DNSサーバを利用するのもよいかもしれません。
また、お名前.comさんでは、お名前メールというサービスがあるようです。メールサーバーの設定は複雑ですので、メール機能はお名前メールに任せ、WEBサービスのみを自宅サーバーで運用するような形態を考えるのもよいかもしれません。→ https://sekaiokaeru.com/onamae-mail
私の利用しているレジストラさんはドメイン申請や管理のみですので、自宅サーバーに切り替える場合は、ドメイン名、ホスト名、IPアドレスを連絡することで、レジストリを書き換えてもらいます。
取得済みドメインを既に別サーバーで運用していて、ラズパイにこのドメインを切り替える場合は注意が必要です。
DNSおよびメールサーバの設定ミスでメールが届かなくなる危険性があります。
ドメインで利用しているメールアドレスを各種外部サービスに登録している場合は、GmailやYahoo!メールにアカウントを作り、暫定的にメールアドレスを登録変更しておいたほうがよいかもしれません。
◇bind のインストール
パッケージの有無を確認します
$ dpkg --get-selections | grep bind
bind9-host install
libbind9-160:arm64 install
利用できるパッケージのバージョンの確認します
$ apt-cache show bind9
Package: bind9
Architecture: arm64
Version: 1:9.11.3+dfsg-1ubuntu1
bind 9 をインストールします
$ sudo apt-get install bind9
インストール後の設定ファイルの存在を確認します
$ ls -al /etc/bind
drwxr-sr-x 2 root bind 4096 5月 24 10:25 .
drwxr-xr-x 99 root root 4096 5月 24 10:25 ..
-rw-r--r-- 1 root root 2761 4月 24 19:04 bind.keys
-rw-r--r-- 1 root root 237 10月 11 2018 db.0
-rw-r--r-- 1 root root 271 10月 11 2018 db.127
-rw-r--r-- 1 root root 237 10月 11 2018 db.255
-rw-r--r-- 1 root root 353 10月 11 2018 db.empty
-rw-r--r-- 1 root root 270 10月 11 2018 db.local
-rw-r--r-- 1 root root 3171 10月 11 2018 db.root
-rw-r--r-- 1 root bind 463 10月 11 2018 named.conf
-rw-r--r-- 1 root bind 490 10月 11 2018 named.conf.default-zones
-rw-r--r-- 1 root bind 165 10月 11 2018 named.conf.local
-rw-r--r-- 1 root bind 890 10月 11 2018 named.conf.options
-rw-r----- 1 bind bind 77 5月 24 10:25 rndc.key
-rw-r--r-- 1 root root 1317 10月 11 2018 zones.rfc1918
◇bind の設定
named.conf を確認します
$ cat /etc/bind/named.conf
include "/etc/bind/named.conf.options";
include "/etc/bind/named.conf.local";
include "/etc/bind/named.conf.default-zones";
ns.example.jp 以外は外部DNSを参照するように、転送設定を追記します。
$ sudo vi /etc/bind/named.conf.options
options {
directory "/var/cache/bind";
forwarders {
192.168.11.1; ← ブロードバンドルータのアドレス
};
dnssec-validation auto;
auth-nxdomain no;
listen-on-v6 { none; }; ← IPV6を利用する場合は、any
};
逆引きを設定します
$ sudo vi /etc/bind/db.192.168.11.21
$ORIGIN 21.11.168.192.in-addr.arpa.
$TTL 604800
@ IN SOA ns.example.jp. root.ns.example.jp. (
2019071903; Serial
604800; Refresh
86400; Retry
2419200; Expire
604800 ); Negative Cache TTL
;
IN NS ns.example.jp.
21 IN PTR ns.example.jp.
正引きを設定します
$ sudo vi /etc/bind/db.example.jp
$ORIGIN example.jp.
$TTL 604800
@ IN SOA ns.example.jp. root.example.jp. (
2019071909; Serial
604800; Refresh
86400; Retry
2419200; Expire
604800 ); Negative Cache TTL
;
IN NS ns.example.jp.
IN MX 10 mail.example.jp.
IN A 123.456.78.90
IN TXT "v=spf1 +ip4:123.456.78.90 ~all"
ns IN A 123.456.78.90
@ IN A 123.456.78.90
www IN A 123.456.78.90
mail IN A 123.456.78.90
ゾーンファイルを named.conf.local に追記します
$ sudo vi /etc/bind/named.conf
(or $ sudo vi /etc/bind/named.conf.local)
include "/etc/bind/named.conf.options";
include "/etc/bind/named.conf.local";
include "/etc/bind/named.conf.default-zones";
zone "example.jp" {
type master;
file "/etc/bind/db.example.jp";
allow-query { any; };
allow-update { none; };
};
zone "21/24.11.168.192.in-addr.arpa" {
type master;
file "/etc/bind/db.192.168.11.21";
};
bind を再起動します
$ sudo /etc/init.d/bind9 restart
あるいは
$ sudo systemctl restart named
$ sudo systemctl enable named
ホスト名からIPアドレスを調べてみます
$ dig example.jp
; <<>> DiG 9.11.3-1ubuntu1.8-Ubuntu <<>> example.jp
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 33960
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 65494
;; QUESTION SECTION:
;example.jp. IN A
;; ANSWER SECTION:
example.jp. 604800 IN A 123.456.78.90
;; Query time: 1 msec
;; SERVER: 127.0.0.53#53(127.0.0.53)
;; WHEN: Tue Sep 17 20:17:53 JST 2019
;; MSG SIZE rcvd: 57
IPアドレスをもとにネームサーバ名を逆引きしてみます
$ dig -x 192.168.11.21
; <<>> DiG 9.11.3-1ubuntu1.8-Ubuntu <<>> -x 192.168.11.21
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 16704
;; flags: qr rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 65494
;; QUESTION SECTION:
;21.11.168.192.in-addr.arpa. IN PTR
;; ANSWER SECTION:
21.11.168.192.in-addr.arpa. 0 IN PTR ns.example.jp.
21.11.168.192.in-addr.arpa. 0 IN PTR ns.
21.11.168.192.in-addr.arpa. 0 IN PTR ns.local.
;; Query time: 90 msec
;; SERVER: 127.0.0.53#53(127.0.0.53)
;; WHEN: Fri Jul 19 20:21:26 JST 2019
;; MSG SIZE rcvd: 122
下記のサイトでDNSの設定をチェックできます。
https://dnscheck.jp
|