BIND DNSサーバーのはじめ方

ドメイン名サーバー(DNS)はインターネットインフラの重要な構成要素であり、DNSサーバーを構築することは難しい場合があります。しかし、BINDを使用すれば、短時間でBIND DNSサーバーを作成できます。BINDは、その柔軟性と高可用性サポートにより、管理者の間で優れた評判を持っています。

この記事では、安全なBIND DNSサーバーをインストールして構成し、サブドメインが正しいIPアドレスに解決されることを確認する方法について説明します。

続けて、簡単にDNSサーバーを作成してください!

前提条件

このチュートリアルは実演形式です。手順に従うには、以下が必要です。

  • A Linux server – This example uses the Ubuntu 20.04 server.
  • A non-root user with root privileges or root/administrator user.
  • A domain name pointed to the server IP address – This demo uses the atadomain.io domain and server IP address 172.16.1.10.

BINDパッケージのインストール

デフォルトのUbuntuリポジトリはBINDパッケージを提供していますが、システムにはインストールされていません。BINDをメインDNSサーバーまたは権威のみとしてインストールできます。BINDには、マスタースレーブインストールサポート、DNSSECサポート、および組み込みのアクセス制御リスト(ACL)などの強力な機能があります。

BIND DNSを開始するには、まずaptパッケージマネージャーを使用してマシンにBINDパッケージをインストールする必要があります。

1. ターミナルを開き、サーバーにログインしてください。

2. 次に、以下のapt updateコマンドを実行して、リポジトリのパッケージインデックスを更新してリフレッシュします。このコマンドにより、最新バージョンのパッケージがインストールされることが保証されます。

sudo apt update
Refreshing Package Index

3. 更新が完了したら、以下のapt installコマンドを実行して、Ubuntuサーバー用のBINDパッケージをインストールします。

 bind9-utils および bind9-dnsutils パッケージには、BINDのための追加のコマンドラインツールが含まれています。これらのパッケージは、BIND DNSサーバーのテストと管理に役立ちます。

sudo apt install bind9 bind9-utils bind9-dnsutils -y
Installing BIND Packages

4. 最後に、以下のsystemctlコマンドを実行して、BINDサービスを確認します。

BINDパッケージには、サービス named が付属しており、BINDパッケージのインストール中に自動的に起動および有効化されます。

# namedサービスが有効化されているかを確認
sudo systemctl is-enabled named

# namedサービスの状態を確認
sudo systemctl status named

これで、BIND named サービスが 有効 で アクティブ(実行中)の状態であることが確認できます。この時点で、BINDサービスはシステムの起動時に自動的に実行されます。

Checking BIND named service

BIND DNSサーバーの構成

あなたは今、UbuntuサーバーにBINDパッケージをインストールしましたので、Ubuntuサーバー上のBINDインストールを設定する時が来ました。どうやるか?BINDおよびnamedサービスの構成を編集することで。

BINDのすべての構成は、/etc/bind/ディレクトリで利用可能で、namedサービスの構成は/etc/default/namedにあります。

1. 好きなエディタを使用して/etc/default/named構成を編集し、以下に示すようにOPTIONS行に-4オプションを追加します。このオプションはnamedサービスをIPv4のみで実行します。

OPTIONS="-4 -u bind"

行った変更を保存してファイルを閉じてください。

Configuring BIND to Run on IPv4 Only

2. 次に、/etc/bind/named.conf.optionsファイルを編集し、directory "/var/cache/bind";行の下に以下の構成を追加します。

この構成では、BINDサービスをサーバーのlocalhostおよび公開IPアドレス(172.16.1.10)のデフォルトUDPポート53で実行するように設定されています。同時に、Cloudflare DNS 1.1.1.1をフォワーダーとして使用して、どのホストからでもBIND DNSサーバーへのクエリを許可します。

    // listen port and address
    listen-on port 53 { localhost; 172.16.1.10; };

    // for public DNS server - allow from any
    allow-query { any; };

    // define the forwarder for DNS queries
    forwarders { 1.1.1.1; };

    // enable recursion that provides recursive query
    recursion yes;

最後に、以下のコマンドを実行してBINDの構成を確認します。

Editing the BIND Configuration Options

sudo named-checkconf

If there’s no output, the BIND configurations are correct without any error.

Verifying BIND Configurations

DNSゾーンの設定

この時点で、BIND DNSサーバーの基本設定が完了しています。ドメインに対するDNSサーバーを作成し、アプリケーション用の他のサブドメインを追加する準備が整いました。これを行うには、新しいDNSゾーンの構成を定義して作成する必要があります。

このチュートリアルでは、新しいネームサーバー(ns1.atadomain.io)とサブドメイン(www.atadomain.iomail.atadomain.iovault.atadomain.io)を作成します。

1. 好みのエディタを使用して/etc/bind/named.conf.localファイルを編集し、次の構成を追加します。

この構成は、atadomain.ioドメイン名のフォワードゾーン(/etc/bind/zones/forward.atadomain.io)およびリバースゾーン(/etc/bind/zones/reverse.atadomain.io)を定義しています。

zone "atadomain.io" {
    type master;
    file "/etc/bind/zones/forward.atadomain.io";
};

zone "1.16.172.in-addr.arpa" {
    type master;
    file "/etc/bind/zones/reverse.atadomain.io";
};

変更を保存してファイルを閉じます。

Defining Forward Zone and Reverse Zone BIND

2. 次に、以下のコマンドを実行して新しいディレクトリ(/etc/bind/zones)を作成します。

mkdir -p /etc/bind/zones/

3. 各コマンドを実行して、デフォルトのフォワードおよびリバースゾーン構成を/etc/bind/zonesディレクトリにコピーします。

# デフォルトのフォワードゾーンをコピー
sudo cp /etc/bind/db.local /etc/bind/zones/forward.atadomain.io

# デフォルトのリバースゾーンをコピー
sudo cp /etc/bind/db.127 /etc/bind/zones/reverse.atadomain.io

# /etc/bind/zones/ディレクトリの内容をリストアップ
ls /etc/bind/zones/
Copying Default Zones Configurations

4. 今度は、好みのエディタを使用して前方ゾーンの構成(/etc/bind/zones/forward.atadomain.io)を編集し、以下の構成を入力してください。

フォワードゾーンの構成は、ドメイン名とサーバーのIPアドレスを定義する場所です。この構成により、ドメイン名がサーバーの正しいIPアドレスに変換されます。

以下の構成では、次の名前サーバーとサブドメインが作成されます:

  • ns1.atadomain.io – ドメインのメインネームサーバーで、IPアドレスは172.16.1.10です。
  • atadomain.ioドメインのMXレコードは、mail.atadomain.ioによって処理されます。MXレコードはメールサーバーに使用されます。
  • アプリケーション用のサブドメイン: www.atadomain.iomail.atadomain.io、および vault.atadomain.io
;
; BIND data file for the local loopback interface
;
$TTL    604800
@       IN      SOA     atadomain.io. root.atadomain.io. (
                            2         ; Serial
                        604800         ; Refresh
                        86400         ; Retry
                        2419200         ; Expire
                        604800 )       ; Negative Cache TTL

; Define the default name server to ns1.atadomain.io
@       IN      NS      ns1.atadomain.io.

; Resolve ns1 to server IP address
; A record for the main DNS
ns1     IN      A       172.16.1.10


; Define MX record for mail
atadomain.io. IN   MX   10   mail.atadomain.io.


; Other domains for atadomain.io
; Create subdomain www - mail - vault
www     IN      A       172.16.1.10
mail    IN      A       172.16.1.20
vault   IN      A       172.16.1.50

変更を保存してファイルを閉じます。

Configuring Forward Zone BIND

5. フォワードゾーンと同様に、逆ゾーン構成ファイル(/etc/bind/zones/reverse.atadomain.io)を編集し、次の構成を入力します。

逆ゾーンは、サーバーのIPアドレスをドメイン名に変換します。逆ゾーンまたはPTRレコードは、メールサーバーなどのサービスにとって重要です。これはメールサーバーの評判に影響します。

PTRレコードは、IPアドレスの最後のブロックを使用します。例えば、サーバーのIPアドレス172.16.1.10に対するPTRレコードは数字10を使用します。

この構成では、次のドメイン用の逆ゾーンまたはPTRレコードが作成されます:

  • 名前サーバー ns1.atadomain.io と逆ゾーンまたはPTRレコード 172.16.1.10
  • ドメイン mail.atadomain.io のPTRレコードは、サーバーのIPアドレス 172.16.1.20 に設定されます。
;
; BIND reverse data file for the local loopback interface
;
$TTL    604800
@       IN      SOA     atadomain.io. root.atadomain.io. (
                            1         ; Serial
                        604800         ; Refresh
                        86400         ; Retry
                        2419200         ; Expire
                        604800 )       ; Negative Cache TTL

; Name Server Info for ns1.atadomain.io
@       IN      NS      ns1.atadomain.io.


; Reverse DNS or PTR Record for ns1.atadomain.io
; Using the last number of DNS Server IP address: 172.16.1.10
10      IN      PTR     ns1.atadomain.io.


; Reverse DNS or PTR Record for mail.atadomain.io
; Using the last block IP address: 172.16.1.20
20      IN      PTR     mail.atadomain.io.

ファイルを保存して閉じてください。

Configuring Reverse Zone BIND

6. 次のコマンドを実行して、BINDの設定をチェックおよび検証します。

# BINDのメイン設定を確認します
sudo named-checkconf

# forward.atadomain.ioのフォワードゾーンをチェックします
sudo named-checkzone atadomain.io /etc/bind/zones/forward.atadomain.io

# reverse.atadomain.ioのリバースゾーンをチェックします
sudo named-checkzone atadomain.io /etc/bind/zones/reverse.atadomain.io

設定が正しい場合、以下のような出力が表示されます。

Checking and Verifying BIND configurations

7. 最後に、以下のsystemctlコマンドを実行して、namedサービスを再起動して検証します。これにより、namedサービスに新しい変更が適用されます。

# namedサービスを再起動します
sudo systemctl restart named

# namedサービスを確認します
sudo systemctl status named

以下では、namedサービスの状態がアクティブ(実行中)であることが示されています。

Restarting Named Service and Verifying Named Service Status

UFWファイアウォールでDNSポートを開く

この時点で、BIND DNSサーバーのインストールが完了しました。しかし、まだDNSサーバーを保護する必要があります。UFWファイアウォールを設定し、クライアントがBIND DNSサーバーにクエリを行うためにDNSポートを開きます。これにより、クライアントがBIND DNSサーバーにクエリを行うことが可能になります。

セキュリティ上の理由から、UbuntuサーバーでUFWファイアウォールを実行および有効化することを推奨します。

1. 下記のufwコマンドを実行して、UFWファイアウォールで利用可能なアプリケーションを確認します。

sudo ufw app list

1. UFWアプリケーションリスト以下にBind9が表示されるはずです。

Listing Available Applications on the UFW Firewall

2. 以下のコマンドを実行して、Bind9をUFWファイアウォールにallowする。

sudo ufw allow Bind9
Adding UW Rule

3. 最後に、以下のコマンドを実行して、UFWファイアウォールで有効なルールを確認します。

sudo ufw status

スクリーンショットのように、リストにはBind9アプリケーションが表示されるはずです。

Verifying List of Rules

BIND DNSサーバーのインストールを確認する

BIND DNSのインストールとUFWファイアウォールの構成が完了しました。しかし、DNSサーバーのインストールを確認するにはどうすればよいでしょうか? digコマンドが役立ちます。

DigはDNSサーバーのトラブルシューティングに使用されるコマンドラインユーティリティです。 digは指定されたドメイン名のDNS検索を実行し、対象のドメイン名に対する詳細な回答を表示します。 Ubuntuシステムでは、digbind9-dnsutilパッケージの一部です。

BIND DNSサーバーのインストールを確認するには、以下の手順に従います。

1. 各digコマンドを実行して、サブドメインwww.atadomain.iomail.atadomain.io、およびvault.atadomain.ioを確認します。

もしDNSサーバーのインストールが成功しているなら、各サブドメインはforward.atadomain.ioの設定に基づいて正しいIPアドレスに解決されるでしょう。

# ドメイン名の確認
dig @172.16.1.10 www.atadomain.io
dig @172.16.1.10 mail.atadomain.io
dig @172.16.1.10 vault.atadomain.io

以下は、サブドメインwww.atadomain.ioがサーバーIPアドレス172.16.1.10に解決された出力です。

Checking sub-domain www.atadomain.io

以下は、サブドメインmail.atadomain.ioがサーバーIPアドレス172.16.1.20に解決されたものです。

Checking sub-domain mail.atadomain.io

そして、以下はサブドメインvault.atadomain.ioがサーバーIPアドレス172.16.1.50に解決されたものです。

Checking sub-domain vault.atadomain.io

2. 次に、以下のdigコマンドを実行して、atadomain.ioドメインのMXレコードを確認してください。

dig @172.16.1.10 atadomain.io MX

atadomain.ioドメインがMXレコードmail.atadomain.ioを持っているはずです。

Checking MX record for atadomain.io

3. 最後に、次のコマンドを実行して、サーバーIPアドレス172.16.1.10および172.16.1.20のPTRレコードまたはリバースゾーンを確認してください。

BINDのインストールが成功している場合、各IPアドレスはreverse.atadomain.ioの構成に基づいてドメイン名に解決されるはずです。

# PTRレコードまたはリバースDNSの確認
dig @172.16.1.10 -x 172.16.1.10
dig @172.16.1.10 -x 172.16.1.20

以下で確認できますが、サーバーIPアドレス172.16.1.10はドメイン名ns1.atadomain.ioに解決されています。

Checking PTR record for IP address 172.16.1.10

以下で確認できるように、サーバーIPアドレス172.16.1.20はドメイン名mail.atadomain.ioに解決されています。

Checking PTR record for IP address 172.16.1.20

結論

このチュートリアルを通じて、Ubuntuサーバー上で安全なBIND DNSサーバーを作成および設定する方法を学びました。また、ドメインを追加し、digコマンドを実行してDNSサーバーを確認するためのフォワードゾーンとリバースゾーンも作成しました。

では、どのようにしてBIND DNSサーバーを環境に実装できますか?おそらく権威サーバーとしてBINDを実装する方法?それともマスター・スレーブ BINDインストールで高可用性を設定する方法はありますか?

Source:
https://adamtheautomator.com/bind-dns-server/