こんにちは、インフラエンジニアのryuです。
今回は、初心者でも理解できるようにDNSゾーン転送の仕組みと設定方法の解説をします。ゾーン転送とは、簡単に言うとDNSのバックアップです。DNSサーバーを2台用意して、ゾーンを転送してゾーン情報をバックアップします。ゾーン転送が理解できていない人は必見です。
目次
【初心者でも分る!】DNSゾーン転送の仕組みと設定方法の解説!
ゾーン転送とは、簡単に言うとDNSのバックアップです。DNSサーバーを2台用意して、ゾーンを転送してゾーン情報をバックアップします。
では、詳しく解説していきます!
ゾーン転送とは?
そもそも、ゾーンとは何でしょうか?
ゾーンとはDNSサーバーが保持しているドメインの管理情報です。つまり、AレコードやCNAMEレコードが設定してあるドメインの情報です。
ゾーンについては、こちらの記事で詳しく解説しています。参考にしてください。
では、ゾーン転送とは何でしょうか?
ゾーン転送とは、DNSサーバーが管理しているゾーン情報を別のDNSサーバーに転送することです。
イメージは↓のような感じです。
もともとゾーン情報を管理していたDNSサーバーをマスターサーバー(プライマリサーバー)、ゾーン情報をコピーした方をスレイブサーバー(セカンダリサーバー)と呼びます。
ここまでまとめると以下のようになります。
- ゾーンとは、ドメインの管理情報
- ゾーン転送とは、ゾーンを転送してバックアップすること
- もともとゾーンを持っていたサーバーをマスターサーバーと呼ぶ
- もう一台をスレイブサーバーと呼ぶ
bind9でゾーン転送を設定してみよう!
ゾーン転送の概要を理解したら、ゾーン転送を実際に設定してみましょう。
ゾーン転送を実装するためにはDNSサーバーを2台準備する必要があります。
VirtualBoxやHyper-vなどの仮想環境を使用して2台準備しましょう。IPアドレスはマスターサーバーが”192.168.100.107“、スレイブサーバーは”192.168.100.108“としています。
ゾーン転送を設定する手順は以下の通りとなります。
- マスターサーバーにゾーンを作成する
- スレイブサーバーの準備
- ゾーン転送の設定
- 再起動
では、詳しく解説します。
手順①. マスターサーバーにゾーンを作成する
まず、マスターサーバーにゾーンを作成します。
ゾーンの作成は、普通にAレコードを登録して名前解決ができるように設定します。
設定方法の詳細はこちらの記事で紹介しているので参考にしてください。
1つ追加の設定があります。
スレイブサーバーのAレコードとNSレコードの登録が必要です。
ゾーンファイルの編集を行います。以下のように設定しましょう。
vi /etc/bind/db.example.com
ゾーンファイルの中身を以下のように設定します。
@ IN NS www2.example.com. ←スレイブサーバーのホスト名(適当です)
www2 IN NS 192.168.100.108 ←スレイブサーバーのホスト名とIPアドレス
これは、ゾーン転送したセカンダリサーバーが、このゾーンの名前解決ができるようにするためです。
手順②.スレイブサーバーの準備
次にスレーブサーバーの準備です。
まず、ゾーンファイルの定義をします。
viコマンドでファイルを開きます。
vi /etc/bind/named.conf.default-zones
/etc/bind/named.conf.default-zonesのファイルの中身は以下のように設定します。
//named.conf.default-zonesの中身
zone "example.com" {
type slave;
file "/etc/bind/slave/db.example.com";
masters { 192.168.100.107; };
};
上記の設定では、mastersでプライマリサーバーのIPアドレスを指定します。
fileで指定した、場所にゾーン情報がコピーされます。
fileで指定したディレクトリは作っておく必要があります。今回の場合は、/etc/bind/slaveです。
注意点は、そのゾーンにbindが書き込む権限が必要です。ファイルの作成方法を書いておきます。
mkdir /etc/bind/slave ←ディレクトリを作成
chown bind /etc/bind/slave ←ディレクトリの所有者を変更
chmod 660 /etc/bind/slave ←ディレクトリの権限を変更
手順③.ゾーン転送の設定
次にゾーン転送の設定です。
プライマリサーバーへの設定を行います。
まず、ゾーン転送を許可する設定です。
vi /etc/bind/named.conf.default-zones
//named.conf.default-zonesの中身
zone "example.com" {
type master;
file "/etc/bind/db.example.com";
allow-transfer { 192.168.100.108;}; ←これを設定
};
allow-transferで許可するDNSサーバーを指定します。
今回は、その他のサーバーを拒否したり、notifyの制限は割愛します。
手順④.再起動
ゾーン転送の設定が完了したら、最後に再起動をします。
/etc/init.d/bind9 resetart
これで完了です。
スレイブサーバーにもゾーンファイルが作られたと思います。
ゾーン転送ができない場合
ゾーン転送ができない場合、logファイルを見ましょう。
エラーの内容が表示されていると思います。
tail -f /var/log/syslog
以上でゾーン転送の設定手順の解説を終了します!
DNSのゾーン転送まとめ
今回の記事では、DNSのゾーン転送について解説しました。ゾーン転送は手順が多いので、今回解説した内容を参考にしてください。
けて、InfraAcademyというインフラ学習サービスのご紹介です。
「Linuxの実践的な内容を学習したい」、「コマンドを打ちながらLinuxを学習したい」
そのようなご要望にお応えして、Linuxやネットワークが学習できるサイト「InfraAcademy」をリリースしました!
InfraAcademyの特徴は以下の通り。
- Linuxやネットワークの知識が体系的に学べる
- LINEやZoomでエンジニアに質問可能
- 全ての講座が閲覧できて、1,480円
- 購入から1週間以内であれば全額返金
Linuxの参考書を購入すると、3,000円以上するものもあります。InfraAcademyでは、1,480円でコンテンツ見放題で現役エンジニアに質問できるサービスまで付いています。
また、購入から1週間以内であれば全額返金保証もあるので安心です。
InfraAcademyでは、一部のコンテンツは無料で閲覧できるので、興味のある方はお試しください。