BIND/ガイド
このガイドでは、BIND のインストールと、ドメインとローカルネットワークに対する BIND の設定を詳解します。
はじめに
BIND は、インターネット上で最も利用されている DNS サーバです。このガイドではあるドメインに対して、ローカルネットワーク向けと全世界向けでそれぞれ異なる内容を BIND に設定します。そのために、2 つのビューを使います。
- 内部ゾーンのビュー(ローカルネットワーク)。
- 外部ゾーンのビュー(他の世界)。
この例で使用しているデータ
キーワード | 説明 | 例 |
---|---|---|
YOUR_DOMAIN | あなたのドメイン名 | gentoo.org |
YOUR_PUBLIC_IP | ISPから提供されているグローバルIPアドレス | 204.74.99.100 |
YOUR_LOCAL_IP | ローカルのIPアドレス | 192.168.1.5 |
YOUR_LOCAL_NETWORK | ローカルのネットワーク | 192.168.1.0/24 |
SLAVE_DNS_SERVER | あなたのドメインで利用しているスレーブDNSサーバのIPアドレス | 209.177.148.228 |
ADMIN | DNSサーバの管理者のユーザ名 | root |
MODIFICATION | ゾーンファイルの更新日に連番を加えたもの | 2009062901 |
BIND の設定
インストール
まず、 net-dns/bind をインストールしましょう。
root #
emerge --ask net-dns/bind
/etc/bind/named.conf の設定
最初に、/etc/bind/named.conf を設定します。このステップでの1番目の作業は、bind のルートディレクトリ、及び、各IPアドレスで開くポート、 pid ファイル、IPv6 プロトコルに関する行を設定です。
/etc/bind/named.conf
options セクションoptions { directory "/var/bind"; listen-on-v6 { none; }; listen-on port 53 { 127.0.0.1; YOUR_LOCAL_IP; }; pid-file "/var/run/named/named.pid"; };
named.conf に関する2番目の作業は、ローカルネットワークに対する内部ビューです。
/etc/bind/named.conf
内部ビューview "internal" { match-clients { YOUR_LOCAL_NETWORK; localhost; }; recursion yes; zone "YOUR_DOMAIN" { type master; file "pri/YOUR_DOMAIN.internal"; allow-transfer { any; }; }; };
named.conf に関する3番目の作業は、あなたのドメイン名が全世界でも引け、他のドメイン名をあなた(及びあなたのDNSサーバを利用する誰も)が引けるようにするための外部ビューです。
/etc/bind/named.conf
外部ビューview "external" { match-clients { any; }; recursion no; zone "." IN { type hint; file "named.ca"; }; zone "127.in-addr.arpa" IN { type master; file "pri/127.zone"; allow-update { none; }; notify no; }; zone "YOUR_DOMAIN" { type master; file "pri/YOUR_DOMAIN.external"; allow-query { any; }; allow-transfer { SLAVE_DNS_SERVER; }; }; };
named.conf に関する最後の作業は、ロギングポリシーの設定です。
/etc/bind/named.conf
外部ビューlogging { channel default_syslog { file "/var/log/named/named.log" versions 3 size 5m; severity debug; print-time yes; print-severity yes; print-category yes; }; category default { default_syslog; }; };
/var/log/named/ ディレクトリが存在し、その所有権が named
にある必要があります。
root #
mkdir -p /var/log/named/
root #
chmod 770 /var/log/named/
root #
touch /var/log/named/named.log
root #
chmod 660 /var/log/named/named.log
root #
chown -R named /var/log/named/
root #
chgrp -R named /var/log/named/
内部ゾーンファイルの作成
上記ネットワーク例のホスト名とIPアドレスを使用すると以下のとおりです。(すべてではないものの)ほとんどのドメイン名は「.」(ドット)で終わっていますので、気をつけてください。
/var/bind/pri/YOUR_DOMAIN.internal
$TTL 2d @ IN SOA ns.YOUR_DOMAIN. ADMIN.YOUR_DOMAIN. ( MODIFICATION ; serial 3h ; refresh 1h ; retry 1w ; expiry 1d ) ; minimum YOUR_DOMAIN. IN MX 0 mail.YOUR_DOMAIN. YOUR_DOMAIN. IN TXT "v=spf1 ip4:YOUR_PUBLIC_IP/32 mx ptr mx:mail.YOUR_DOMAIN ~all" YOUR_DOMAIN. IN NS ns.YOUR_DOMAIN. YOUR_DOMAIN. IN NS SLAVE_DNS_SERVER www.YOUR_DOMAIN. IN A 192.168.1.3 ns.YOUR_DOMAIN. IN A 192.168.1.5 mail.YOUR_DOMAIN. IN A 192.168.1.3 router.YOUR_DOMAIN. IN A 192.168.1.1 hell.YOUR_DOMAIN. IN A 192.168.1.3 heaven.YOUR_DOMAIN. IN A 192.168.1.5 desktop.YOUR_DOMAIN. IN A 192.168.1.4
外部ゾーンファイルの作成
あとは、外部クライアント(wwwやmail、ns)のためのサブドメインの設定だけが残っています。
/var/bind/pri/YOUR_DOMAIN.external
$TTL 2d @ IN SOA ns.YOUR_DOMAIN. ADMIN.YOUR_DOMAIN. ( MODIFICATION ;serial 3h ;refresh 1h ;retry 1w ;expiry 1d ) ;minimum YOUR_DOMAIN. IN MX 0 mail.YOUR_DOMAIN. YOUR_DOMAIN. IN TXT "v=spf1 ip4:YOUR_PUBLIC_IP/32 mx ptr mx:mail.YOUR_DOMAIN ~all" YOUR_DOMAIN. IN NS ns.YOUR_DOMAIN. YOUR_DOMAIN. IN NS SLAVE_DNS_SERVER www.YOUR_DOMAIN. IN A YOUR_PUBLIC_IP ns.YOUR_DOMAIN. IN A YOUR_PUBLIC_IP mail.YOUR_DOMAIN. IN A YOUR_PUBLIC_IP
設定を完了する
named
を default ランレベルに追加しましょう:
root #
rc-update add named default
クライアント側の設定
これで、あなた用のDNSサーバを利用して、あなたのローカルネットワーク上のすべてのマシンでドメイン名が引けるようになります。あなたのローカルネットワーク上のすべてのマシンで、/etc/resolv.conf ファイルを書換えましょう。
/etc/resolv.conf
search YOUR_DOMAIN nameserver YOUR_DNS_SERVER_IP
YOUR_DNS_SERVER_IP は、この文書にある YOUR_LOCAL_IP と同じです。今回の例そのままだと 192.168.1.5 にあたります。
テスト
これで、新しい DNS サーバの動作テストができる段階になりました。まずは、サービスを起動しなければなりません。
root #
/etc/init.d/named start
つぎに、いくつかのドメインについて、host コマンドを試してみましょう。このテストは、ローカルネットワーク上のどのマシンでも実行することができます。もし、 net-dns/host
をインストールしていないようなら、その代わりに ping
コマンドが利用可能ですし、もういっそのこと emerge host
してもよいでしょう。
user $
host www.gentoo.org
www.gentoo.org has address 209.177.148.228 www.gentoo.org has address 209.177.148.229
user $
host hell
hell.YOUR_DOMAIN has address 192.168.1.3
user $
host router
router.YOUR_DOMAIN has address 192.168.1.1
iptables によるサーバ防御
DNSサービスが稼働している時、追加の保護のためのルールを iptables に設定することが出来ます。
iptables -A INPUT -p udp --sport 53 -m state --state ESTABLISHED,RELATED -j ACCEPT iptables -A INPUT -p udp --dport 53 -j ACCEPT iptables -A INPUT -p tcp --dport 53 -j ACCEPT
This page is based on a document formerly found on our main website gentoo.org.
The following people contributed to the original document: Vicente Olivert Riera, nightmorph
They are listed here because wiki history does not allow for any external attribution. If you edit the wiki article, please do not add yourself here; your contributions are recorded on each article's associated history page.