Gentoo BIND ガイド
1.
概要
ここではあなたのローカルネットワーク用とその他全世界用との二つの異なる設定が、
あなたのドメインを解決するbindで動くようにします。
このように一つのBINDで二つの異なるドメインへの名前解決をする為に、
viewという仕組みを利用します。一つのviewで内部(ローカルネットワーク)での名前解決のために使われ、
もう一つが外部(全世界)での名前解決のために使われます。
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 |
zoneファイルを修正した日付と回数 |
2009062901 |
図 2.1: Network example |
 |
3.
BINDを設定する
インストール
まずは、 net-dns/bindをインストールします。
コード表示 3.1: BINDのインストール |
# emerge net-dns/bind
|
/etc/bind/named.confを設定する
BINDの設定で最初に行う事は、/etc/bind/named.confを編集することです。
この段階でまず行う事は、BINDのルートディレクトリの指定、IPアドレスと
リッスンするポートの指定、pidファイルのパス、そしてIPv6に関する設定です。
コード表示 3.2: 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";
};
|
次に、ローカルネットワーク向けのviewを設定します。
コード表示 3.3: ローカルネットワークのview |
view "internal" {
match-clients { YOUR_LOCAL_NETWORK; localhost; };
recursion yes;
zone "YOUR_DOMAIN" {
type master;
file "pri/YOUR_DOMAIN.internal";
allow-transfer { any; };
};
};
|
更に、世界中の人が私たちのドメインの名前を解決出来て、私たちが世界中の他の
ドメインをの名前を解決出来る様にする為に、(そして私たちのDNSサーバを
利用したいと思う誰かの為に)グローバルネットワーク向けのviewを設定します。
コード表示 3.4: グローバルネットワークのview |
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; };
};
};
|
そして最後に、ログ保存のポリシーを設定します。
コード表示 3.5: ログ保存のポリシー |
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がそのディレクトリの
所有権を持っている必要があります。
コード表示 3.6: ログファイルを作成する |
# mkdir -p /var/log/named/
# chmod 770 /var/log/named/
# touch /var/log/named/named.log
# chmod 660 /var/log/named/named.log
# chown -R named /var/log/named/
# chgrp -R named /var/log/named/
|
ローカルネットワーク向けのzoneファイルを作成する
ここでは、上の画像で例示されているホスト名とIPアドレスを利用しています。
全てではありませんが、殆どのドメイン名は"."(ドット)で終了している事に注意してください。
コード表示 3.7: /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
|
グローバルネットワーク向けのzoneファイルを作成する
ここでは、外部のクライアント向けに必要なサブドメイン(www, mail そして ns)を指定するだけです。
コード表示 3.8: /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をデフォルトのランレベルに追加する必要があるでしょう。
コード表示 3.9: デフォルトのランレベルへの追加 |
# rc-update add named default
|
4.
クライアントの設定
この時点で、あなたはローカルネットワークの全てのマシンから、名前解決の為にあなたの
DNSサーバを利用する事が出来ます。ローカルネットワーク上のマシンの
/etc/resolv.confを編集してください。
コード表示 4.1: /etc/resolv.conf の編集 |
search YOUR_DOMAIN
nameserver YOUR_DNS_SERVER_IP
|
YOUR_DNS_SERVER_IP は、ドキュメントで出て来たYOUR_LOCAL_IP と同一であり、
上の画像においては 192.168.1.5 となる事に注意してください。
5.
テストをする
新しいDNSサーバのテストを行います。まず、BINDのサービスを起動します。
コード表示 5.1: 手動でBINDを起動する |
# /etc/init.d/named start
|
BINDが適切に設定されているかのテストの為に、いくつかのドメインに対してhost
コマンドを発行します。このテストは、ローカルネットワーク内のどのコンピュータでも
可能です。もしあなたが net-dns/host をインストールしていない場合は、代わりに
pingを利用することも可能です。pingが嫌ならば、まずemerge hostを実行しましょう。
コード表示 5.2: テストの実行 |
$ host www.gentoo.org
www.gentoo.org has address 209.177.148.228
www.gentoo.org has address 209.177.148.229
$ host hell
hell.YOUR_DOMAIN has address 192.168.1.3
$ host router
router.YOUR_DOMAIN has address 192.168.1.1
|
6.
iptablesでサーバを保護する
もしあなたがiptablesでサーバを保護しているのなら、DNSサービスを保護する為に
以下のルールを追加するといいでしょう。
コード表示 6.1: 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 --sport 53 -j ACCEPT
iptables -A INPUT -p tcp --dport 53 -j ACCEPT
|
|