Ubuntu 22.04 外部向けDNSサーバー構築

目次に戻る

概要

外部向け(インターネット公開用)のDNSサーバーを構築します。このDNSはコンテンツサーバーとして稼働し、キャッシュサーバーとしては使用しません。

細かい内容は基本的に内部向けDNSサーバーと同じになりますので重複箇所は省略しています。

インストール

aptでインストールします。

myadmin@ubuntu:~$ sudo DEBIAN_FRONTEND=noninteractive apt-get -o Dpkg::Options::=--force-confdef -o Dpkg::Options::=--force-confold install bind9

設定

/etc/bind/named.conf.options

デフォルト値

コメント行を除き成形したデフォルト値は下記の通りです。

myadmin@ubuntu:~$ grep -v -e '^s*/' -e '^s*$' /etc/bind/named.conf.options | expand | tr -s [:space:] | sed 's/^s/    /g'
options {
    directory "/var/cache/bind";
    dnssec-validation auto;
    listen-on-v6 { any; };
};

設定値

設定例は下記の通りです。allow-query(このDNSを参照可能な範囲)、recursion(再帰問い合わせを禁止)を追加しています。インターネットに公開しているDNSサーバーでrecursion yes;にするとオープンリゾルバとなり危険ですので注意が必要です。

myadmin@ubuntu:~$ sudo cp /etc/bind/named.conf.options /etc/bind/named.conf.options.orig
myadmin@ubuntu:~$ sudo tee /etc/bind/named.conf.options <<"EOF"
options {
    directory "/var/cache/bind";
    dnssec-validation auto;
    listen-on-v6 { any; };
    allow-query { any; };
    recursion no;
};
EOF

/etc/bind/named.conf.local

デフォルト値

コメント行を除き成形したデフォルト値は下記の通りです。全てコメントアウトされています。

myadmin@ubuntu:~$ cat /etc/bind/named.conf.local | expand | tr -s [:space:] | sed 's/^s/    /g'
//
// Do any local configuration here
//
// Consider adding the 1918 zones here, if they are not used in your
// organization
//include "/etc/bind/zones.rfc1918";

設定値

設定例は下記の通りです。追加のゾーン設定に加えzones.rfc1918をincludeしています。この設定ファイルは不明なRFC1918のIPアドレスの逆引きを上位のDNSへ問い合わせないための設定です。

インターネットに自身が管理するDNSサーバーを登録するには、一般的にドメインを払い出す事業者のDNSサーバーで委任設定が必要となります。大抵設定画面が用意されているので必要な情報(グローバルアドレス、DNSサーバーのFQDN等)を記載します。基本的に正引きのみです。

インターネットに公開するDNSサーバーの逆引きはグローバルアドレスとなるため、逆引き設定はIPプロバイダ側の管理に任せます。逆引きを明示的に設定できるプロバイダもあるようです。

myadmin@ubuntu:~$ sudo cp /etc/bind/named.conf.local /etc/bind/named.conf.options.local.orig
myadmin@ubuntu:~$ sudo tee /etc/bind/named.conf.local <<"EOF"
include "/etc/bind/zones.rfc1918";
zone "si1230.com" {
    type master;
    file "/etc/bind/si1230.com.zone";
};
EOF

/etc/bind/si1230.com.zone

正引きのゾーンファイルの設定例です。

外部に公開するWebサーバーがGoogleのGoogle Search Consoleと連携する際、DNSサーバーにTXTレコードの追加が必要です。BINDの場合は上記のように[TXT Record]を追加します。[TXT Record]はGoogleから提示されたもので置き換えて下さい。Google Search Consoleは取得したドメイン名である必要があり@で記載します。例えばwww IN TXT [TXT Record]とした場合はいつまでたってもGoogle Search Consoleの確認は成功しません。

myadmin@ubuntu:~$ sudo tee /etc/bind/si1230.com.zone <<"EOF"
$TTL 172800
@ IN SOA dns.si1230.com. root.si1230.com. (
    2022041101
    3600
    300
    360000
    86400
)
    IN NS dns.si1230.com.
    IN MX 10 mail.si1230.com.

@ IN A xxx.xxx.xxx.xxx
@ IN TXT [TXT Record]
dns IN A xxx.xxx.xxx.xxx
mail IN A xxx.xxx.xxx.xxx
www IN A xxx.xxx.xxx.xxx
EOF

設定の有効化

myadmin@ubuntu:~$ sudo systemctl restart bind9.service
myadmin@ubuntu:~$ systemctl status bind9.service
myadmin@ubuntu:~$ journalctl -u named.service -n 100

目次に戻る

Ubuntu 22.04 外部向けDNSサーバー構築

コメントを残す

メールアドレスが公開されることはありません。

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

トップへ戻る