【初心者必見】ゾーンファイルの作成方法

【初心者必見】ゾーンファイルの作成方法

みなさんこんにちは さくちゃん です。

本日は、前回構築したDNSサーバーに、ゾーン情報を作成し追加していきます。
ではやっていきましょう!

そもそもゾーン情報とは何か?

ゾーン情報とは、DNSサーバーが管理している管理情報のことを言います。

ゾーン情報は、ドメインに対するIPアドレスを管理しています。
DNSサーバーが名前解決をする時に、このゾーン情報を参照して、ドメインに対するIPアドレスを返答しています。
これがゾーン情報の役割です。

例に挙げると、市役所が「DNSサーバー」で、市役所で管理している「住所」がゾーン情報にあたります。
詳しくはこちらをご覧ください。

ゾーン情報を作成しよう!

ゾーン情報について理解できたところで、実際にゾーン情報を作成していきます。
実際のゾーン情報はこんな感じです。

$TTL 86400
    @ IN SOA ns.sakuchan.org. XXX@sakuchan.org.(
      2019070201  ; Serial
      28800     ; Refresh
      14400     ; Retry
      3600000    ; Expire<br>
      86400 )    ; Minumum TTL

sakuchan.org.   IN    A     XXX.XXX.XXX.XXX

それぞれの意味はこんな感じです。

種類意味
$TTL 86400DNSサーバーがゾーン情報のデータをキャッシュする時間(デフォルト:86400秒)
@ IN SOA ns.sakuchan.org. XXX@sakuchan.org.・@はドメイン名(ここではsakuchan.org)を表します.
・ns.sakuchan.org. はこのゾーン情報を管理するDNSサーバー
・XXX@sakuchan.org.は、このドメインの管理者メールアドレス
2019110301  ; Serialゾーン情報のシリアル番号。更新日+管理番号を表すことが多い。
ゾーン情報を更新した場合は、今よりもこの値を大きくしないといけない。
28800     ; RefreshセカンダリDNSサーバが、プライマリDNSサーバにゾーン転送後に再度ゾーン情報を取得しようと試みるまでの時間
14400     ; RetryセカンダリDNSサーバが、Refreshでゾーン情報の更新が失敗した場合に
再度Refreshを試みるまでの時間。
3600000    ; ExpireセカンダリDNSサーバが、ゾーン情報のリフレッシュができない状態が続いた場合、セカンダリDNSサーバが持っているゾーン情報をどれだけの時間利用するかの時間。
86400 )    ; Minumum TTL存在していないドメインのキャッシュを維持する時間。
sakuchan.org IN  A XXX.XXX.XXX.XXXAレコードの設定。ドメインに対するIPアドレスを記述。

それぞれの値に決まった役割があり、それを指定していきます。
必ずしもこれが正解というわけではないので、それぞれの環境に合わせて設定していきましょう!

レコードの種類

先ほど出てきた「Aレコード」ですが、Aレコード以外にもいくつか種類があります。
このレコードは、非常に重要なのでしっかり覚えましょう!

レコードの種類意味
AレコードドメインのIPアドレスを指定。
NSレコードドメインを管理するDNSサーバー名を指定
MXレコードドメインのメールサーバーを指定
PTRレコードIPアドレスに対するドメインを指定(逆引き)
TXTレコードドメインのテキスト情報を指定
CNAMEレコードドメインの別名を指定

書き方は「〇〇 IN レコード 〇〇」と書きます。
例えばAレコードに場合は

sakuchan.org IN A XXX.XXX.XXX.XXX

・sakuchan.org → ドメイン
・A → レコードの種類
・XXX.XXX.XXX.XXX → Aレコードなのでドメインに対するIPアドレスとなります。

ゾーン情報を設定してみよう!

それでは、実際にゾーン情報を設定してみましょう!

ファイルを作成するコマンドは、touchコマンドで作成できます。
touchコマンドは、空のファイルを作成するだけです。

編集するにはviコマンドで編集します。

touch ファイル名

前回紹介したviコマンドでも作成できます。

vi ファイル名

では入力してみましょう。
まずはファイルを開きます。

vi ファイル名

ファイルを開いたら、キーボードの「i」でコマンドモードから入力(挿入)モードへ切り替えます。
切り替えたらゾーン情報を入力します。

$TTL 86400
    @ IN SOA ns.sakuchan.org. XXX@sakuchan.org.(
      2019070201  ; Serial
      28800     ; Refresh
      14400     ; Retry
      3600000    ; Expire
      86400 )    ; Minumum TTL

sakuchan.org.   IN    A     XXX.XXX.XXX.XXX

ゾーン情報を入力したら、「ESC」で入力(挿入)モードからコマンドモードへ切り替えます。
「:wq」でファイルを保存し、viを終了させます。

次に設定ファイル(named.conf)を編集します。
viコマンドでファイル開きます。

vi /etc/named.conf
options {
    listen on port 53 { 127.0.0.1; };
    listen on v6 port 53 {::1;};
    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";
    recursing file "/var/named/data/named.
    secroots file "/var/named/data/named.secroots";
    allow query {localhost; };

# 〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜省略〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
# ここから編集していきます

zone " . " IN {
    type hint;
    file "name.ca";
};

# ↓ここに追加します
zone "ドメイン名" IN{
    type master;
    file "ファイル名";
};
# ここまで

include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";

zone “ドメイン名” IN{  → ドメイン名を入力
type master;
file “ファイル名”; → ゾーン情報を入力したファイルを指定
};

入力したら「ESC」で終了します。

設定できたら、BINDを再起動します。

systemctl restart named

エラーが返ってこなければOKです!