「BIND」の版間の差分
(→設定: TLS または HTTPS で DNS を提供するを翻訳して追加) |
(→TLS または HTTPS で DNS を提供する: typo) |
||
50行目: | 50行目: | ||
=== TLS または HTTPS で DNS を提供する === |
=== TLS または HTTPS で DNS を提供する === |
||
− | BIND 9.18で DNS over TLS または HTTPS のサービスを有効にするには、証明書を指定して [https://downloads.isc.org/isc/bind9/9.18.0/doc/arm/html/reference.html#tls tls] ブロックを定義し、DNS over TLS および HTTPS リスナー (標準 DNS リスナーと同様) を有効にする[https://downloads.isc.org/isc/bind9/9.18.0/doc/arm/html/reference.html#interfaces listen-on] を追加してください。 |
+ | BIND 9.18で DNS over TLS または HTTPS のサービスを有効にするには、証明書を指定して [https://downloads.isc.org/isc/bind9/9.18.0/doc/arm/html/reference.html#tls tls] ブロックを定義し、DNS over TLS および HTTPS リスナー (標準 DNS リスナーと同様) を有効にする [https://downloads.isc.org/isc/bind9/9.18.0/doc/arm/html/reference.html#interfaces listen-on] を追加してください。 |
{{hc|/etc/named.conf|<nowiki> |
{{hc|/etc/named.conf|<nowiki> |
2023年2月5日 (日) 06:47時点における版
Berkeley Internet Name Domain (BIND) は Domain Name System(DNS) プロトコルのリファレンス実装です。
目次
インストール
以下の手順は BIND をインストールしてローカルキャッシュサーバーとして設定する方法です。
公式リポジトリにある bind パッケージをインストールしてください。
必要に応じて /etc/named.conf
を編集してローカルホストからしか接続を受け付けないように、以下のようなセクションを追加してください:
listen-on { 127.0.0.1; };
設定した DNS サーバーを使うために /etc/resolv.conf
を編集します:
nameserver 127.0.0.1
named デーモンを起動します。
設定
BIND は /etc/named.conf
で設定されます。使用可能なオプションについては、named.conf(5) を参照してください。
Reload して named.service
ユニットに構成変更を適用します。
localhost へのアクセスを制限する
デフォルトでは、BIND はすべてのインタフェースと IP アドレスのポート53で待機します。localhost からの接続のみを許可するには、/etc/named.conf
の options セクションに次の行を追加します。
listen-on { 127.0.0.1; };
DNS 転送を設定する
BIND が DNS クエリを別の DNS サーバーに転送するには、forwarders を options セクションに追加します。
BIND を Google DNS サーバに転送する例:
forwarders {8.8.8.8;8.8.4.4;};
TLS または HTTPS で DNS を提供する
BIND 9.18で DNS over TLS または HTTPS のサービスを有効にするには、証明書を指定して tls ブロックを定義し、DNS over TLS および HTTPS リスナー (標準 DNS リスナーと同様) を有効にする listen-on を追加してください。
/etc/named.conf
tls mycert { cert-file "<path>.crt"; key-file "<path>.key"; }; options { // Standard port 53 listeners need to be re-added explicitly listen-on { any; }; listen-on-v6 { any; }; // Add a DNS over TLS listener on standard port 853 listen-on tls mycert { any; }; listen-on-v6 tls mycert { any; }; // Add a DNS over HTTPS listener on custom port listen-on port 9443 tls mycert http default { any; }; listen-on-v6 port 9443 tls mycert http default { any; }; // If needed, add a cleartext HTTP listener for a reverse proxy //listen-on port 8443 tls none http default { 127.0.0.1; }; //listen-on-v6 port 8443 tls none http default { ::1; }; }; ...
tls{}
はトップレベルで定義されており、options{}
ブロック内では定義されていないことに注意してください。
デーモンを実行するための設定テンプレート
これは BIND でシンプルなホームネットワーク DNS サーバーを作成するための手順です。この例では "domain.tld" というドメインを使用しています。
もっと詳しい説明が欲しい方は Two-in-one DNS server with BIND9 を参照してください。Linux Home Server HOWTO - Domain name system (BIND) にはすぐに内部ネットワークの名前解決をセットアップする方法が載っています。
1. zone ファイルを作成する
# nano /var/named/domain.tld.zone
$TTL 7200 ; domain.tld @ IN SOA ns01.domain.tld. postmaster.domain.tld. ( 2007011601 ; Serial 28800 ; Refresh 1800 ; Retry 604800 ; Expire - 1 week 86400 ) ; Minimum IN NS ns01 IN NS ns02 ns01 IN A 0.0.0.0 ns02 IN A 0.0.0.0 localhost IN A 127.0.0.1 @ IN MX 10 mail imap IN CNAME mail smtp IN CNAME mail @ IN A 0.0.0.0 www IN A 0.0.0.0 mail IN A 0.0.0.0 @ IN TXT "v=spf1 mx"
$TTL (Time to Live) は全てのレコードのデフォルトのパケットの有効期間を秒単位で定義します。この例では7200秒 (2時間) となっています。
Serial は zone レコードを変更し named デーモンを再起動するたびに手動で増やしてください。忘れるとスレーブサーバーに zone 情報が転送されません。スレーブサーバーへの zone 転送は最後に転送された時間から値が増えていなければ転送されません。
2. マスターサーバーを設定する
/etc/named.conf
に zone を追加してください:
zone "domain.tld" IN { type master; file "domain.tld.zone"; allow-update { none; }; notify no; };
完了したらデーモンを再起動してください。
再帰を許可
自分の DNS サーバを動かしているなら、すべての DNS 検索に使うか、 RFC:7706 に従って自分でルートゾーンをローカルに提供した方がよいでしょう。前者には、 再帰 ルックアップを実行する機能が必要です。DNS Amplification Attacks を防ぐために、ほとんどのリゾルバで再帰はデフォルトでオフになっています。デフォルトの Arch /etc/named.conf
ファイルでは、ループバックインターフェイスでのみ再帰が許可されます。
allow-recursion { 127.0.0.1; };
ローカルネットワークにネームサービスを提供する場合;たとえば、192.168.0.0/24 の場合、適切なIPアドレスの範囲を /etc/named.conf
に追加する必要があります。
allow-recursion { 192.168.0.0/24; 127.0.0.1; };
DNSSEC 署名ゾーンを処理するための BIND の設定
DNSSEC 検証はデフォルトで有効になっています。"edns" が無効になっていないことを必ず確認してください。
マスター DNS サーバ:
- KSK キーと ZSK キーを生成する
$ dnssec-keygen -a NSEC3RSASHA1 -b 2048 -n ZONE example.com $ dnssec-keygen -f KSK -a NSEC3RSASHA1 -b 4096 -n ZONE example.com
- ゾーン構成を変更します。
zone "example.com" { type master; allow-transfer { ... }; auto-dnssec maintain; inline-signing yes; key-directory "master/"; file "master/example.com.zone"; };
これで BIND が自動的にゾーンに署名します。(この例では、必要なすべてのファイルが /var/named/master/ にあることを前提としています)
次に、レジスター Web サイトを使用して、DS レコード (dsset-example.comから。ファイル) を親ゾーン所有者に渡す必要があります。親ゾーンを KSK で接続します。
KSK (および対応する DS レコード) は、手動による介入が必要なため、変更しないでください。ZSK は、署名チェックを高速化するために通常はこのキーが短いため、頻繁に変更できます。
以下を使用して、古い ZSK キーの有効期限をスケジュールし、新しい有効期限を生成できます。
$ dnssec-settime -I +172800 -D +345600 Kexample.com.+000+111111.key $ dnssec-keygen -S Kexample.com.+000+111111.key -i 152800
Bind は適切なタイミングで自動的に新しい ZSK キーを使用します。
こちらも参照
OpenDNSSEC などの外部メカニズムがあり、完全自動キーロールオーバーを使用できます。
新しいインターフェイスに自動で接続
デフォルトで bind は新しいインターフェイスをスキャンし、数時間たったらインターフェイスを切断します。以下を追加することでこの値を調整できます:
interface-interval <rescan-timeout-in-minutes>;
named.conf
の options セクションにパラメータを追加してください。最大値は28日間 (40320分) です。値を0に設定することで機能を無効にすることもできます。
設定を変更したらサービスを再起動して下さい。
chroot 環境で実行する
chroot で実行することは必須ではありませんが、セキュリティが向上します。
監獄の作成
chroot を使うには、まず監獄を維持するための場所を作成する必要があります。ここでは /srv/named
を使用して、必要なファイルを監獄に追加します:
# mkdir -p /srv/named/{dev,etc,usr/lib/engines,var/{run,log,named}}
必要なシステムファイルをコピー:
# cp -av /etc/{localtime,named.conf} /srv/named/etc/ # cp -av /usr/lib/engines/* /srv/named/usr/lib/engines/ # cp -av /var/named/* /srv/named/var/named/.
必要な dev ノードを設定:
# mknod /srv/named/dev/null c 1 3 # mknod /srv/named/dev/random c 1 8
ファイルの所有者を設定:
# chown -R named:named /srv/named
これで監獄に必要なファイルシステムが作成されます。
サービスファイル
次に、chroot で bind を実行できるようにする新しいサービスファイルを作成します:
# cp -av /usr/lib/systemd/system/named.service /etc/systemd/system/named-chroot.service
サービスが bind を実行する方法を編集してください:
/etc/systemd/system/named-chroot.service
ExecStart=/usr/bin/named -4 -f -u named -t "/srv/named"
そして systemd をリロード (systemctl daemon-reload
) してからサービスを起動 (systemctl start named-chroot.service
) してください。