手当たり次第に書くんだ

CentOS8 外部DNSサーバー構築

目次に戻る

概要

外部向けのDNSサーバーを構築します。このDNSサーバーはインターネットから自身が管理しているドメインの名前解決を提供します。

前提条件

OS

CentOS Stream 8を使用します。

SELinux

有効です。無効にする場合はこちらを参照して下さい。

Firewalld

無効です。有効化する場合はこちらを参照して必要な許可設定をして下さい。

標準ポート番号

TCP:53 (DNS), UDP:53 (DNS)

通常はUDPが使われます。TCPはゾーン転送やデータサイズにより使用されるようです。

所感

基本的に内部向けDNSサーバーと同じですが、「recursion no;」で再帰問い合わせを無効にしていることがポイントです。

設定

インストール

BINDをインストールします。bind-chrootが必要ならそれでも構いませんし、後続の設定や手順に変わりはありません。尚、bind-chrootはコンテナ環境ではうまく動きませんでした。

[root@centos ~]# dnf install bind

ゾーンファイル格納用ディレクトリ

デフォルトのゾーンファイル格納先は/var/namedですが、他のファイルも格納されているため、管理上、ディレクトリを分けています。必須ではありませんので、好みに応じて設定して下さい。

[root@centos ~]# mkdir /var/named/myzone
[root@centos ~]# chmod 770 /var/named/myzone
[root@centos ~]# chgrp named /var/named/myzone

/etc/named.conf

named.confはBINDの設定ファイルです。

named.confのデフォルト値

コメント行等を削除した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";
    secroots-file "/var/named/data/named.secroots";
    recursing-file "/var/named/data/named.recursing";
    allow-query { localhost; };
    recursion yes;
    dnssec-enable yes;
    dnssec-validation yes;
    managed-keys-directory "/var/named/dynamic";
    pid-file "/run/named/named.pid";
    session-keyfile "/run/named/session.key";
    include "/etc/crypto-policies/back-ends/bind.config";
};
logging {
    channel default_debug {
        file "data/named.run";
        severity dynamic;
    };
};
zone "." IN {
    type hint;
    file "named.ca";
};

named.confの設定

named.confを編集します。

[root@centos ~]# vi /etc/named.conf
options {
    listen-on port 53 { any; };
    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";
    secroots-file "/var/named/data/named.secroots";
    recursing-file "/var/named/data/named.recursing";
    allow-query { any; };
    recursion no;
    dnssec-enable yes;
    dnssec-validation yes;
    managed-keys-directory "/var/named/dynamic";
    pid-file "/run/named/named.pid";
    session-keyfile "/run/named/session.key";
    include "/etc/crypto-policies/back-ends/bind.config";
    version "";
};
logging {
    channel default_debug {
        file "data/named.run";
        severity dynamic;
    };
};
zone "." IN {
    type hint;
    file "named.ca";
};
zone "si1230.com" {
    type master;
    file "myzone/si1230.com.zone";
};
listen-on port
デフォルト値は127.0.0.1です。anyに変更します。IPアドレスを指定すれば特定のインターフェイスだけ有効にできます。
allow-query
デフォルト値はlocalhostです。anyに変更します。IPアドレス、ネットワークアドレスを指定すれば範囲を限定できます。
recursion
デフォルト値はyesです。この設定値は再帰問い合わせの有効有無を制御しており、外部に公開するDNSサーバーでは、リゾルバとして利用されてしまう可能性があるため、リゾルバの要件がなければ必ずnoに変更します。
version
追加です。BINDのバージョン情報を非表示にします。
zone “si1230.com”
si1230.com(例)の正引き設定です。デフォルトの格納先の場合はmyzone/が不要です。

本稿ではインターネットに公開するDNSの逆引きは設定していません(必須ではありません)。逆引きの設定可否はISPに依存する為、必要に応じて設定して下さい。

ゾーンファイル

各ゾーンファイルを作成します。

正引き用ゾーンファイル

正引き用ゾーンファイルを作成します。xxx.xxx.xxx.xxxはグローバルIPアドレスです。

[root@centos ~]# vi /var/named/myzone/si1230.com.zone
$TTL 172800
@ IN SOA dns.si1230.com. root.si1230.com. (
    2021042701
    3600
    300
    360000
    86400
)
    IN NS dns.si1230.com.
    IN MX 10 smtp.si1230.com.

@ IN A xxx.xxx.xxx.xxx
@ IN TXT [TXT Record]
dns IN A xxx.xxx.xxx.xxx
smtp IN A xxx.xxx.xxx.xxx
www IN A xxx.xxx.xxx.xxx

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

ゾーンファイルのパーミッション変更

ディレクトリを分けているとこういった操作が簡単です。

[root@centos ~]# chmod 640 /var/named/myzone/*
[root@centos ~]# chgrp named /var/named/myzone/*

サービス起動設定

DNSサーバーを起動します。

[root@centos ~]# systemctl enable --now named.service
[root@centos ~]# systemctl status named.service

目次に戻る

CentOS8 外部DNSサーバー構築

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

トップへ戻る