ksaitoの日記

日々試したことの覚え書き

DebianでDNSサーバを立ち上げる

家のネットワーク用にプライベートなDNSサーバを立てました。
Debain/Ubuntuでは、パッケージを入れてローカルネットワークを定義し外部のDNSを設定するだけです。

BINDパッケージのインストール

パッケージをインストールします。

$ sudo apt-get install bind9
$

パッケージを入れたところでルートサーバは、引けるようになっています。

$ dig @localhost A.ROOT-SERVERS.NET

; <<>> DiG 9.5.1-P3 <<>> @localhost A.ROOT-SERVERS.NET
; (2 servers found)
;; global options:  printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 1020
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 13, ADDITIONAL: 0

;; QUESTION SECTION:
;A.ROOT-SERVERS.NET.		IN	A

;; ANSWER SECTION:
A.ROOT-SERVERS.NET.	604756	IN	A	198.41.0.4

;; AUTHORITY SECTION:
			139169	IN	NS	K.ROOT-SERVERS.NET.
			139169	IN	NS	M.ROOT-SERVERS.NET.
			139169	IN	NS	I.ROOT-SERVERS.NET.
			139169	IN	NS	D.ROOT-SERVERS.NET.
			139169	IN	NS	F.ROOT-SERVERS.NET.
			139169	IN	NS	C.ROOT-SERVERS.NET.
			139169	IN	NS	A.ROOT-SERVERS.NET.
			139169	IN	NS	E.ROOT-SERVERS.NET.
			139169	IN	NS	J.ROOT-SERVERS.NET.
			139169	IN	NS	H.ROOT-SERVERS.NET.
			139169	IN	NS	G.ROOT-SERVERS.NET.
			139169	IN	NS	B.ROOT-SERVERS.NET.
			139169	IN	NS	L.ROOT-SERVERS.NET.

;; Query time: 101 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Fri Oct 30 07:46:04 2009
;; MSG SIZE  rcvd: 245

$

ローカルネットワークとフォアードを定義

localnetにローカルのネットワークアドレスを設定します。
この範囲のアドレスを、このDNSサーバで管理することになります。
forwardersに外部の名前を解決するDNSサーバのIPアドレスを設定します。(プロバイダのDNSサーバなど)

$ hg diff -r 68:71 /etc/bind/named.conf.options 
diff -r 2a6b93634c9a -r e3177f9ee71e bind/named.conf.options
--- a/bind/named.conf.options	Sun Oct 25 16:31:13 2009 +0900
+++ b/bind/named.conf.options	Sun Oct 25 22:27:50 2009 +0900
@@ -1,5 +1,12 @@
+acl localnet {
+    192.168.100.0/8;
+    127.0.0.1;
+};
+
 options {
 	directory "/var/cache/bind";
+	version "DNS Server";
 
 	// If there is a firewall between you and nameservers you want
 	// to talk to, you may need to fix the firewall to allow multiple
@@ -14,6 +21,15 @@
 	// 	0.0.0.0;
 	// };
 
+	allow-query { localnet; };
+	allow-recursion { localnet; };
+	allow-transfer { none; };
+	forward first;
+	forwarders {
+		   プロバイダのDNSサーバのIPアドレス;
+	};
 	auth-nxdomain no;    # conform to RFC1035
 	listen-on-v6 { any; };
 };

ローカルの設定は、また今度...