Junkie Work

access: 200051

FreeBSD 14.3-RELEASEにてDNS設定(BIND)


インストール

インストールはpkgを利用します。

 # pkg install bind920

設定

今回は、以下の内容を設定します。

/usr/local/etc/namedb/named.confに設定を記載します。

acl "trusted" {
        172.18.0.0/16;
        127.0.0.1;
};

include "/usr/local/etc/namedb/include/junkie.work.key.conf";

options {
	directory	"/usr/local/etc/namedb/working";
	pid-file	"/var/run/named/pid";
	dump-file	"/var/dump/named_dump.db";
	statistics-file	"/var/stats/named.stats";

	listen-on	{ any; };
	listen-on-v6	{ any; };

	allow-query     { any; };
	recursion yes;
	allow-recursion { trusted; };
	allow-query-cache { trusted; };

	version "unknown";

};

include "/usr/local/etc/namedb/zoneconf/default.conf" ;
include "/usr/local/etc/namedb/zoneconf/junkie.work.conf" ;
include "/usr/local/etc/namedb/zoneconf/local.conf" ;

/usr/local/etc/namedb/zoneconf/default.conf には以下のようにZONEを設定します。

zone "." { type hint; file "/usr/local/etc/namedb/named.root"; };

zone "localhost"        { type primary; file "/usr/local/etc/namedb/primary/localhost-forward.db"; };
zone "127.in-addr.arpa" { type primary; file "/usr/local/etc/namedb/primary/localhost-reverse.db"; };
zone "255.in-addr.arpa" { type primary; file "/usr/local/etc/namedb/primary/empty.db"; };
zone "0.ip6.arpa"       { type primary; file "/usr/local/etc/namedb/primary/localhost-reverse.db"; };
zone "0.in-addr.arpa"   { type primary; file "/usr/local/etc/namedb/primary/empty.db"; };

/usr/local/etc/namedb/zoneconf/junkie.work.conf には以下のようにZONEを設定します。

セカンダリへの転送と通知も許可しておきます(163.44.76.202)

zone "junkie.work" IN {
        type master;
        file "/usr/local/etc/namedb/primary/junkie.work.zone";

        allow-transfer {
                163.44.76.202;
        };
	also-notify {
		163.44.76.202;
	};
};

/usr/local/etc/namedb/primary/junkie.work.zone にマスターのZONE情報を記載します。

ドメイン宛のメールも扱えるように、MXやSPFも記載しています。

$ORIGIN .
$TTL 3600	; 1 hour
junkie.work		IN SOA	ns.junkie.work. hostmaster.junkie.work. (
				2025071001 ; serial
				10800      ; refresh (3 hours)
				3600       ; retry (1 hour)
				1209600    ; expire (2 weeks)
				3600       ; minimum (1 hour)
				)
			NS	ns.junkie.work.
			NS	2nd.dnsv.jp.
			A	118.27.7.39
			MX	10 conoha.junkie.work.
			TXT	"v=spf1 a mx -all"
			TXT	"google-site-verification=vXMM2Irn1lOoFET8wrSHfrbUuU7Sy1aZ0qOUghEgjOQ"
$ORIGIN junkie.work.
_dmarc			TXT	"v=DMARC1; p=reject; pct=100;"
				"rua=mailto:dmarc.rua@junkie.work;"
				"ruf=mailto:dmarc.ruf@junkie.work"
default._domainkey	TXT	"v=DKIM1; k=rsa; "
				"p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDlDvVmXOKJ6oHNcmey"
				"IIZQToSYTnllOsqtqpLUasMhPi+yx8/BcuijrN6Mwx3lKjTxP1vodHug"
				"tHYlQtwEt9RasQGAJ7bG2nBGBRbVsPq48R2vpy0rmB/HJm2xlsXNHC66"
				"L8HuPhNoROoNrKTOs3gCQQHiHhUvA59Pkm5vtlLqLQIDAQAB"
conoha			A	118.27.7.39

/usr/local/etc/namedb/zoneconf/local.conf にはローカル向けの設定を記載します。

今回はスレーブですので、マスターを指定しています(今回は10.0.0.1)

zone "lo.junkie.work" IN {
        type slave;
        file "slaves/lo.junkie.work.zone";

        masters {
                10.0.0.1;
        };
        allow-query {
                127.0.0.1;
                10.0.0.0/16;
        };
};

zone "0.10.in-addr.arpa" {
        type slave;
        file "slaves/0.10.in-addr.arpa.zone";
        masters {
                10.0.0.1;
        };
        allow-query {
                127.0.0.1;
                10.0.0.0/16;
        };
};

スレーブのZONEファイルが保存できるように/usr/local/etc/named/slaves/ を作成します。

 # mkdir /usr/local/etc/namedb/slaves/
 # chown named.named /usr/local/etc/namedb/slaves/
 # chmod 770 /usr/local/etc/namedb/slaves/

起動

以下のコマンドで起動できます。

 # service named start
http://www.dnsinspect.com/のサービスを使ってチェックし、問題が検出されなければ完成です。

OS起動時に自動起動するように設定します。

 # sysrc named_enable="YES"

追加作業

DDNS対応

DDNS対応にするための設定を行います。

DDNS関係のファイルを置くために、 /usr/local/etc/namedb/include/ を作成します。

 # mkdir /usr/local/etc/namedb/include/

DDNSのアクセスキーを生成して、コンフィグファイルを作ります。

 # /bin/sh -c 'dd if=/dev/random bs=32 count=1 2>/dev/null | base64'

上記のコマンドの結果は、以下のようなランダムな値が表示されます。

yDkmmLWq/c5AToNzRyV7KCyqXZYP9mVWZHhmrOqNJLI=

/usr/local/etc/namedb/include/junkie.work.key.conf に、 できたランダム値を認証キーとしたコンフィグファイルを生成します。 (secretの値は参考値)

key "junkie.work" {
        algorithm hmac-sha256;
        secret "yDkmmLWq/c5AToNzRyV7KCyqXZYP9mVWZHhmrOqNJLI=";
};

/usr/local/etc/namedb/named.confに以下の設定を追加します。
記載場所は、optionsの前あたりです。

include "/usr/local/etc/namedb/include/junkie.work.key.conf";

DDNSで更新できる内容を特定のAレコードに限定。

/usr/local/etc/namedb/include/junkie.update-policy.conf に指定します。

update-policy {
  grant junkie.work name home.junkie.work. A;
  grant junkie.work name cloud.junkie.work. A;
  grant junkie.work name imageai.junkie.work. A;
};
なお、
update-policy {
  grant junkie.work wildcard *.junkie.work. A;
};
のように、ワイルドカードで指定することもできますが、セキュリティ上の理由から特定のレコードに限定することが推奨されています。

/usr/local/etc/namedb/named.junkie.zones に以下の設定を追加します。
記載場所は、zone設定の最後あたり(括弧で閉じる前)です。

include "/usr/local/etc/namedb/include/junkie.update-policy.conf";

以下のコマンドで再起動できます。

 # service named restart