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 プロトコルに関する行を設定です。
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番目の作業は、ローカルネットワークに対する内部ビューです。
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サーバを利用する誰も)が引けるようにするための外部ビューです。
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 に関する最後の作業は、ロギングポリシーの設定です。
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アドレスを使用すると以下のとおりです。(すべてではないものの)ほとんどのドメイン名は「.」(ドット)で終わっていますので、気をつけてください。
$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)のためのサブドメインの設定だけが残っています。
$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 ファイルを書換えましょう。
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.