BIND/ガイド

From Gentoo Wiki
< BIND
Jump to:navigation Jump to:search
This page is a translated version of the page BIND/Guide and the translation is 100% complete.

このガイドでは、BIND のインストールと、ドメインとローカルネットワークに対する BIND の設定を詳解します。

はじめに

BIND は、インターネット上で最も利用されている DNS サーバです。このガイドではあるドメインに対して、ローカルネットワーク向けと全世界向けでそれぞれ異なる内容を BIND に設定します。そのために、2 つのビューを使います。

  1. 内部ゾーンのビュー(ローカルネットワーク)。
  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.confoptions セクション
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 のルール
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.