「BIND」の版間の差分
Kusakata.bot (トーク | 投稿記録) 細 (文字列「http://www.howtoforge.com/」を「https://www.howtoforge.com/」に置換) |
|||
33行目: | 33行目: | ||
これは BIND でシンプルなホームネットワーク DNS サーバーを作成するための手順です。この例では "domain.tld" というドメインを使用しています。 |
これは BIND でシンプルなホームネットワーク DNS サーバーを作成するための手順です。この例では "domain.tld" というドメインを使用しています。 |
||
− | もっと詳しい説明が欲しい方は [ |
+ | もっと詳しい説明が欲しい方は [https://www.howtoforge.com/two_in_one_dns_bind9_views Two-in-one DNS server with BIND9] を参照してください。[http://www.brennan.id.au/08-Domain_Name_System_BIND.html Linux Home Server HOWTO - Domain name system (BIND)] にはすぐに内部ネットワークの名前解決をセットアップする方法が載っています。 |
=== 1. zone ファイルを作成する === |
=== 1. zone ファイルを作成する === |
2018年2月6日 (火) 23:43時点における版
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 でシンプルなホームネットワーク 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; };
完了したらデーモンを再起動してください。
3. デフォルトの DNS サーバーに設定
DNS サーバーを動かしている場合、全ての DNS ルックアップでそのサーバーを使ってみたいと思うかもしれません。これには recursive なルックアップをできるようにする必要があります。DNS 増幅攻撃 をふせぐため、ほとんどのリゾルバでは recursion はデフォルトでオフになっています。デフォルトの Arch の /etc/named.conf
ファイルではループバックデバイスでだけ recursion を許可しています:
allow-recursion { 127.0.0.1; };
そのため、ホストから一般的な DNS ルックアップを使えるようにするには、/etc/resolv.conf
ファイルに次の行を記述する必要があります:
nameserver 127.0.0.1
/etc/resolv.conf
は生成されるファイルなので、/etc/resolvconf.conf
を編集して次の行をアンコメントしてください:
# name_servers=127.0.0.1
/etc/resolvconf.conf
は再起動時に適当に設定されます。
ローカルネットワーク 192.168.0 などにネームサービスを提供したい場合、IP アドレスの適当な範囲を /etc/named.conf
に追加してください:
allow-recursion { 192.168.0.0/24; 127.0.0.1; };
簡単な DNS 転送
もし VPN への接続などで問題が生じた場合、転送 DNS サーバーを建てることによって解決することができるでしょう。BIND を使えば簡単です。以下の行を /etc/named.conf
のグローバルな options セクションか、特定のゾーンのところに追加してください、IP アドレスは置き換えて下さい。
options { listen-on { 192.168.66.1; }; forwarders { 8.8.8.8; 8.8.4.4; }; };
完了したらデーモンを再起動してください。
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
) してください。
BIND を DNSSEC に対応させる
- http://www.dnssec.net/practical-documents
- もしくは OpenDNSSEC (自動キーロールオーバー) などを使ってください。
新しいインターフェイスに自動で接続
デフォルトで bind は新しいインターフェイスをスキャンし、数時間たったらインターフェイスを切断します。以下を追加することでこの値を調整できます:
interface-interval <rescan-timeout-in-minutes>;
named.conf
の options セクションにパラメータを追加してください。最大値は28日間 (40320分) です。値を0に設定することで機能を無効にすることもできます。
設定を変更したらサービスを再起動して下さい。