BIND9でDNS

サーバー運用がかなり厳しいので寄付をしてくれる人がいたらこちら
メインPCもボロボロになってきたので、ついにほしいものリスト公開

ここではとりあえずインストールしてみるです。
設定については内向けと外向けの設定です。

長くなったから、階層分けて1から書き直すかなぁ

HP: http://www.isc.org/

インストール

インストールはyumでさくっとchrootを入れます。

yum -y install bind-*

設定

/var/named/chroot/etc/named.conf

// generated by named-bootconf.pl
acl ipsec {
	192.168.0.0/24;
	127.0.0.1;
};
 
acl slave {
	xxx.xxx.xxx.xxx;
};
 
acl blacklist {
	192.168.1.0/24;
};
 
options {
	directory "/var/named";
	/*
	 * If there is a firewall between you and nameservers you want
	 * to talk to, you might need to uncomment the query-source
	 * directive below. Previous versions of BIND always asked
	 * questions using port 53, but BIND 8.1 uses an unprivileged
	 * port by default.
	 */
	query-source address 192.168.11.10 port 53;
	allow-transfer { ipsec; };
	allow-query { any; };
	allow-recursion { ipsec; };
	blackhole { blacklist; };
	version "Hello World";
	auth-nxdomain yes;
	notify yes;
	recursion yes;
	// listen-on-v6 { none; };
};
 
//
// a caching only nameserver config
//
 
key "www" {
	algorithm hmac-md5;
	secret "xxxxx";
};
controls {
	inet 127.0.0.1 allow { 127.0.0.1; } keys { "www"; };
};
 
view "lan" {
	match-clients {
		ipsec;
	};
 
	zone "." IN {
		type hint;
		file "named.root";
	};
 
	zone "localhost" IN {
		type master;
		file "localhost.zone";
		allow-update { none; };
	};
 
	zone "0.0.127.in-addr.arpa" IN {
		type master;
		file "localhost.rev";
		allow-update { none; };
	};
 
	zone "momo-i.org" {
		type master;
		file "/var/named/momo-i.org.zone";
	};
 
	zone "0.168.192.in-addr.arpa" {
		type master;
		file "/var/named/momo-i.org.rev";
	};
};
 
view "wan" {
	match-clients { any; };
	allow-recursion{ any; };
 
	zone "momo-i.org" {
		type slave;
		masters {
			xxx.xxx.xxx.xxx//マスターのDNSサーバのIP
		};
		file "momo-i.org.slave";
		notify yes;
	};
};
 
logging {
	channel config_debug {
		file "/var/log/named/config_debug.log" versions 5 size 10m;
		severity debug 3;
		print-category yes;
		print-severity yes;
		print-time yes;
	};
	channel xfer-in_debug {
		file "/var/log/named/xfer-in_debug.log" versions 5 size 10m;
		severity debug 3;
		print-category yes;
		print-severity yes;
		print-time yes;
	};
	channel xfer-out_debug {
		file "/var/log/named/xfer-out_debug.log" versions 5 size 10m;
		severity debug 3;
		print-category yes;
		print-severity yes;
		print-time yes;
	};
	channel notify_debug {
		file "/var/log/named/notify_debug.log" versions 5 size 10m;
		severity debug 3;
		print-category yes;
		print-severity yes;
		print-time yes;
	};
	channel security_debug {
		file "/var/log/named/security_debug.log" versions 5 size 10m;
		severity debug 3;
		print-category yes;
		print-severity yes;
		print-time yes;
	};
	channel default_channel {
		syslog local3;
	};
	category config {
		config_debug;
	};
	category xfer-in {
		xfer-in_debug;
	};
	category xfer-out {
		xfer-out_debug;
	};
	category notify {
		notify_debug;
	};
	category security {
		security_debug;
	};
	category default {
		default_channel;
	};
};

/var/named/chroot/var/named/momo-i.org.zone

$TTL 3600
$ORIGIN momo-i.org.
@ IN SOA www.momo-i.org. postmaster.momo-i.org. (
 
	2005122601 ; serial
	3600 ; refresh
	1800 ; retry
	604800 ; expiration
	3600 ) ; minimum
 
	IN	NS	www.momo-i.org.
	IN	NS	プロバイダのネームサーバ
	IN	MX	0	momo-i.org.
localhost	IN	A	127.0.0.1
	IN	A	192.168.0.10
www	IN	A	192.168.0.10
router	IN	A	192.168.0.1
hage	IN	CNAME	www

/var/named/chroot/var/named/momo-i.org.rev

$ORIGIN 0.168.192.in-addr.arpa.
$TTL 3600
@ IN SOA www.momo-i.org. postmaster.momo-i.org. (
	2005100302 ; serial
	3600 ; refresh
	1800 ; retry
	604800 ; expiration
	3600 ) ; minimum
 
	IN	NS	www.momo-i.org.
1	IN	PTR	router.momo-i.org.
10	IN	PTR	www.momo-i.org.

これでとりあえずは完了です。
後は以下のコマンドを実行してエラーが出ていないかを確認します。

/etc/init.d/named start

エラーが出ていなければ実際にDNSが引けるかを違う端末からテストしてみます。

正引きの確認

# dig @192.168.0.10 www.momo-i.org. A
 
; <<>> DiG 9.8.0-P2-RedHat-9.8.0-5.P2.fc15 <<>> @192.168.0.10 www.momo-i.org.
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 5026
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 1
 
;; QUESTION SECTION:
;www.momo-i.org.                        IN      A
 
;; ANSWER SECTION:
www.momo-i.org.         3600    IN      A       192.168.0.10
 
;; AUTHORITY SECTION:
momo-i.org.             3600    IN      NS      ns.momo-i.org.
 
;; ADDITIONAL SECTION:
ns.momo-i.org.          3600    IN      A       192.168.0.10
 
;; Query time: 0 msec
;; SERVER: 192.168.0.10#53(192.168.0.10)
;; WHEN: Sat Jun 11 16:32:02 2011
;; MSG SIZE  rcvd: 81
 
# dig @192.168.0.10 www.yahoo.co.jp.
 
; <<>> DiG 9.8.0-P2-RedHat-9.8.0-5.P2.fc15 <<>> @192.168.0.10 www.yahoo.co.jp.
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 52020
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 2, ADDITIONAL: 0
 
;; QUESTION SECTION:
;www.yahoo.co.jp.               IN      A
 
;; ANSWER SECTION:
www.yahoo.co.jp.        900     IN      CNAME   www.ya.gl.yahoo.co.jp.
www.ya.gl.yahoo.co.jp.  60      IN      A       124.83.187.140
 
;; AUTHORITY SECTION:
gl.yahoo.co.jp.         900     IN      NS      gns02.net.bbt.yahoo.co.jp.
gl.yahoo.co.jp.         900     IN      NS      gns02.net.djm.yahoo.co.jp.
 
;; Query time: 26 msec
;; SERVER: 192.168.0.10#53(192.168.0.10)
;; WHEN: Sat Jun 11 16:34:44 2011
;; MSG SIZE  rcvd: 129

外と内のアドレスが引ければOKです。
また、マスターのDNSから情報を引いてきているか
確認しておきます。
うちではzoneeditでがーっとやっとります。
ここでは外の名前解決をZoneEditがMaster、自分がSlaveにしてますが、
そのうち暇があれば自分がMaster、ほかがSlaveも試しておきます。

# ls -l /var/named/chroot/var/named/momo-i.org.slave
-rw------- 1 named named 587 316 09:02 momo-i.org.slave
# cat /var/named/chroot/var/named/momo-i.org.slave
$ORIGIN .
$TTL 1200 ; 20 minutes
momo-i.org IN SOA ns12.zoneedit.com. soacontact.zoneedit.com. (
	1071152270 ; serial
	3600 ; refresh (1 hour)
	1200 ; retry (20 minutes)
	86400 ; expire (1 day)
	1200 ; minimum (20 minutes)
)
	NS	ns12.zoneedit.com.
	NS	ns14.zoneedit.com.
$TTL 300 ; 5 minutes
	A xxx.yyy.zzz.aaa
$TTL 1200 ; 20 minutes
	MX	0	momo-i.org.
	MX	20	mail.momo-i.org.
	MX	100	mx2.zoneedit.com.
$ORIGIN momo-i.org.
$TTL 300 ; 5 minutes
*	A	xxx.yyy.zzz.aaa
$TTL 1200 ; 20 minutes
mail2	MX	5	www2
	MX 100 mx2.zoneedit.com.

後は外の環境から引けるかどうかを確認ってところです。

# dig @111.89.162.86 www.momo-i.org.
 
; <<>> DiG 9.8.0-P2-RedHat-9.8.0-5.P2.fc15 <<>> @www.xxx.yyy.zzz www.momo-i.org.
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 1059
;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 2
;; WARNING: recursion requested but not available
 
;; QUESTION SECTION:
;www.momo-i.org.                        IN      A
 
;; ANSWER SECTION:
www.momo-i.org.         3600    IN      A       www.xxx.yyy.zzz
 
;; AUTHORITY SECTION:
momo-i.org.             3600    IN      NS      ns.momo-i.org.
momo-i.org.             3600    IN      NS      ns1.momo-i.org.
 
;; ADDITIONAL SECTION:
ns.momo-i.org.          3600    IN      A       www.xxx.yyy.zzz
ns1.momo-i.org.         3600    IN      A       www.xxx.yyy.zzz
 
;; Query time: 9 msec
;; SERVER: www.xxx.yyy.zzz#53(www.xxx.yyy.zzz)
;; WHEN: Sat Jun 11 16:41:12 2011
;; MSG SIZE  rcvd: 115

自宅内でDDNS

久しぶりに覚書追加です。
DHCPDで自動IPのページでdhcpが有効になっている場合、
nsupdateを使用してクライアントのIPとホスト名を紐付けできます。

dhcpd.confに

ddns-update-style interim;

を入れて
named.confのzoneへDNSの更新を許可するIPアドレス/ネットワークを記述できます。

allow-update { 192.168.xx.xx; };

またはACLで

acl hoge {
	192.168.0.0/24;
	192.168.1.0/24;
};
zone xxx {
	type master;
	file "/xxx/xxx/xxx.xxx";
	allow-update { hoge; };
};
</cdoe>
<p>を記述して、namedの再起動を実施します。<br>次に更新できるか確認をします。</p>
<h2>DNSが存在しない事を確認</h2>
<code language="bash">
# nslookup hoge.momo-i.org.
** server can't find hoge.momo-i.org: NXDOMAIN

追加

# nsupdate
> update add hoge.momo-i.org. 1200 in a 192.168.0.100
> send
> quit

確認

# nslookup hoge.momo-i.org.
Name: hoge.momo-i.org
Address: 192.168.0.100

削除

# nsupdate
> update delete hoge.momo-i.org.
> send
> quit

削除されたか確認

# nslookup hoge.momo-i.org.
** server can't find hoge.momo-i.org: NXDOMAIN

namedのログを見ると以下の様なものが出てきます。

named[4708]: client 192.168.0.1#53100: view lan: updating zone 'momo-i.org/IN': adding an RR at 'hoge.momo-i.org' A

DHCPで払い出されたアドレスを管理するdhcpd.leasesには
IPアドレスが払い出されたホストで以下のように

set ddns-rev-name = "100.0.168.192.in-addr.arpa.";
set ddns-client-fqdn = "xxx.momo-i.org";

と表示がされているかもしれません。

DNSSECを試してみる

巷で話題のDNSSECですが、Fedora11から(?)BINDをyumで入れると
勝手にDNSSECが有効になるようです。

その為アップグレードしたり旧環境からの設定のまま移行すると 起動時に怒られて起動しません。

chroot環境で、アップグレード(環境の移行)をした人は、 /var/named/chroot/etc/配下に/etc/pki/dnssec-keys/をコピーしておきましょう?

鍵の作成と署名の方法

鍵の作成

# cd /var/named/chroot/var/named/
# dnssec-keygen -a DSA -b 1024 -n ZONE momo-i.org

Kxxxxxx.keyとKxxxxx.privateが出てくるので、Kxxxxx.keyの中身をゾーンファイルの最後に追加しておきます。

追加したらシリアルをあげておきましょう。

署名

# dnssec-signzone -o momo-i.org /var/named/chroot/var/named/momo-i.org.zone

これでmomo-i.org.zone.signedというファイルが出来ているはずです。
これをmomo-i.org.zoneに置き換えてnamedを再起動すれば終わりです。

Fedora17を素っ飛ばしたのであれですが、Fedora18からはほとんどがsystemdになっているので、namedの起動もこれでやります。
通常時はnamedのみで

systemctl start named
chrootしたいときは後ろに-chrootをつけないとだめです。
systemctl start named-chroot

なれるとsystemd楽チンですね。

Tags: 

コメントを追加

Plain text

  • HTMLタグは利用できません。
  • ウェブページアドレスとメールアドレスは、自動的にハイパーリンクに変換されます。
  • 行と段落は自動的に折り返されます。
CAPTCHA
また変更しました
Fill in the blank.