見出し画像

BIND 9.18 のインストール

さくらインターネットのさくらの VPS に FreeBSD 13.1-RELEASE をセットアップして、無料SSL証明書を取得して、Apache 2.4 でウェブサーバを立ち上げた。今回がこのシリーズ最後の記事になる。BIND 9.18 を使って DNS をインストールして設定する。もちろん、DNS を使わない場合は不要。

無料SSL証明書を取得する中で、さくらのネームサーバサービスを使って簡易に設定してしまったが、記述できるレコードに制約があること(NSレコードや SRVレコードなどを追加できない)、さくらの DNS は IPv6 から使えないなど、自前の DNS を用意しないと不便な点があったので DNS も用意することにした。

以下、作業は ssh で行っている。プロンプトが # の場合は rootユーザで作業する。プロンプトが % なら一般ユーザでよい。


BIND 9.18 のインストール


pkg からインストール。


# pkg install bind918


/etc/rc.conf に以下を追加。


named_enable="YES"


基本的な設定


基本的な設定を追加する。pkg からインストールした BIND の設定ファイルは、/usr/local/etc/namedb 以下に置かれている。


listen する IPアドレスを記述していく。IPv4アドレスは listen-onディレクティブに、IPv6アドレスは listen-on-v6ディレクティブにそれぞれ記述する。

ローカルホストの 127.0.0.1 と ::1 に関しては使わないのであれば不要。

IPv6 のリンクローカルアドレスを使う場合、スコープを指定するが、スコープ名が使えないので Scope ID を使う。Scope ID は ifconfigコマンドで確認できる。(ifconfigコマンドの結果は 16進数で書かれているので注意)

リンクローカルアドレスも listen しているのは、同じ LAN内に置いた、セカンダリサーバへゾーン転送を行うため。不要であれば記述の必要はない。

allow-transfer でゾーン転送を許可するセカンダリサーバのネットワークを記述していく。特定の IPv4アドレスなら、/32、特定の IPv6アドレスなら /128 をネットマスクに指定する。

210.188.224.9 と 210.224.172.13 はさくらインターネットが用意しているセカンダリDNS のサービスが使っている IPアドレスで、それぞれ ns1.sakura.ad.jp、ns2.sakura.ad.jp で引ける IPアドレスになる。

fe80::%2/64 で vnet1 のリンクローカルからのリクエストはすべてゾーン転送許可としてある。


pf の設定


named は UDP/IP 53ポートを使用する。また、ゾーン転送は TCP/IP 53ポートを使用する。

サービスを外部に提供するために、pf でこれらのポートへのアクセスを許可するルールを追加する。


pass in log inet proto tcp from { 210.188.224.9 210.224.172.13 } to any port { 5
3 } flags S/SA keep state
pass in log inet proto udp from { 210.188.224.9 210.224.172.13 } to any port { 5
3 } keep state
pass in log inet6 proto tcp from any to any port { 53 } flags S/SA keep state
pass in log inet6 proto udp from any to any port { 53 } keep state

このサーバは IPv4 では外部に公開しておらず、IPv6 のみ公開するため、それぞれ設定を変えてある。

IPv4 はゾーン転送先のさくらのネームサーバ(210.188.224.9/210.224.172.13)からのパケットだけ、許可してある。

IPv4 でサービスを公開したい場合は、any とすれば良い。pfctl -f /etc/pf.conf で設定を適用する。


ゾーンを記述


named.conf でゾーンファイルを指定する。


ゾーンファイルはテキスト形式なので、エディタで記述していけば良い。フォーマットは割愛する。

service named start コマンドで BIND を立ち上げる。


さくらのネームサーバでセカンダリを設定する


いま設定したものを、そのまま公開してしまっても良いが、さくらのネームサーバではセカンダリサーバのサービスを提供しているので、このサーバは外部へ公開せず、外部からはさくらのネームサーバを参照してもらうようにする。

元の設定を primary、設定のコピー先を sedondary と言い、primary から secondary へはゾーン転送という方法で設定内容をコピーする。

ゾーン転送は TCP/IP 53ポートを使って行われる。


さくらのネームサーバサービスのコントロールパネルから、ドメイン名を指定して、ネームサーバで設定したいドメインを登録する。


ゾーンをクリック。


さきほど BIND をセットアップしたサーバの IPアドレスを入力して、追加して設定をクリック。


これでさくらインターネット側の設定は完了。


独自ドメイン名を管理しているレジストラの設定画面へ行って、さくらインターネットのネームサーバサービスで使う DNS のホスト名、ns1.dns.ne.jp と ns2.dns.ne.jp を設定する。

これにより、自身のサーバはさくらインターネットの DNS の裏で稼働させたまま、外部への公開をさくらインターネットの DNS に任せることができる。設定を変更した場合も、数分もすればゾーン転送が実行されて設定内容が反映される。

なお、プライマリサーバの指定には IPv6アドレスのフォーマットも入力できるものの、IPv6 ではゾーン転送が行われないようで、ここで指定するホスト名は IPv4 でアクセスできる必要がある。


自前のセカンダリサーバを使う


ここまでの設定で外部への公開はできているが、ついでなので自前でセカンダリサーバを用意する場合の設定も紹介する。

セカンダリサーバで使うインスタンスにも BIND 9.18 をインストールする。


listen する IPアドレスの設定なども同じ。

なお、BIND 9.18 ではゾーン転送した設定内容が、デフォルトだと RAW形式になってしまい読み取りが困難なので、cat コマンドで設定を確認できるように TEXT形式で保存したいので、masterfile-format text の設定を加える。


セカンダリに設定する FQDN のゾーン設定を行う。

primariesディレクティブで、プライマリサーバの IPアドレスを指定する。もちろん、IPv4アドレスも使える。


BIND 9.18 を起動すると、プライマリサーバからゾーン転送で設定をコピーしてくる。secondaryディレクトリ以下にゾーンファイルが保存されるので内容を確認すると、プライマリサーバで設定したものがまるごとコピーされていることを確認できる。(コメントなどはコピーされない)

セカンダリサーバを外部に公開するためには、プライマリサーバと同様に、pf で UDP/IP 53ポートを外部向けに公開する設定する。

さくらインターネットのさくらの VPS に FreeBSD 13.1-RELEASE をセットアップ無料SSL証明書を取得Apache 2.4 でウェブサーバを立ち上げ、今回の DNS のセットアップの計4回でさくらの VPS シリーズは完結する。


さいごに


技術的な小難しい話題でしたが、最後まで読んでいただいてありがとうございました。

よければ ↓ にある、♡ をクリックしていただけると励みになります。質問のコメントも歓迎です。

この記事が気に入ったらサポートをしてみませんか?