閉じる

BIND(DNSサーバー / ネームサーバーの構築・設定)

BIND(DNSサーバー / ネームサーバー)でホスト名からIPアドレス又はIPアドレスからホスト名への変換が出来るように構築・設定します。

ここでは、次の環境とします。
LAN内ドメインネーム: zoah.lan
外部ドメインネーム: zoah.net
LAN: 192.168.100.0/24 , 192.168.102.0/24
固定グローバルIPアドレス: 115.179.209.126 , 115.179.209.127

[root@server1 ~]# dnf -y install bind bind-chroot ← bind , bind-chrootをインストールします。

[root@server1 ~]# vi /etc/named.conf ← BINDの設定ファイルを編集します。

↓ /etc/named.conf を下記の様にします。

options {
listen-on port 53 { any; };
#listen-on-v6 port 53 { ::1; }; ← 行頭に#を追加してコメントアウトします。
directory "/var/named";
dump-file "/var/named/data/cache_dump.db";
version "T_T";
statistics-file "/var/named/data/named_stats.txt";
memstatistics-file "/var/named/data/named_mem_stats.txt";
recursing-file "/var/named/data/named.recursing";
secroots-file "/var/named/data/named.secroots";
recursion yes;
allow-query { any; };
allow-recursion { localhost; localnets; 192.168.100.0/24; 192.168.102.0/24; }; ← 内部からのみ再帰問合せを許可します。
//allow-query-cache { localhost; localnets; 192.168.100.0/24; 192.168.102.0/24; };
dnssec-validation auto;
bindkeys-file "/etc/named.root.key";
};

logging {
channel default_debug {
file "data/named.run";
severity dynamic;
};
category lame-servers { null; };
};

// 内部向け設定開始
view "internal" {
match-clients {
localhost;
127.0.0.1;
192.168.100.0/24;
192.168.102.0/24;
};
zone "." IN {
type hint;
file "named.ca";
};
zone "0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa" IN {
type master;
file "named.ip6.local";
allow-update {
none;
};
};
zone "0.0.127.in-addr.arpa" IN {
type master;
file "named.local";
allow-update {
none;
};
};
zone "localdomain" IN {
type master;
file "localdomain.zone";
allow-update {
none;
};
};
zone "localhost" IN {
type master;
file "localhost.zone";
allow-update {
none;
};
};
zone "zoah.lan" {
type master;
file "zoah.lan.hosts";
allow-update { 192.168.100.0/24; 127.0.0.1; }; ← 192.168.100.0/24からのDNSのレコードのアップデートを許可します。
};
zone "100.168.192.in-addr.arpa" {
type master;
file "zoah.lan.rev";
allow-update { 192.168.100.0/24; 127.0.0.1; }; ← 192.168.100.0/24からのDNSのレコードのアップデートを許可します。
};
};
// 内部向け設定終了

// 外部向け設定開始
view "external" {
match-clients { any; };
match-destinations { any; };
zone "zoah.net" {
type master;
file "zoah.net.hosts";
allow-update { none; };
allow-transfer{
153.120.38.37; ← このゾーン情報の転送先として153.120.38.37(ns3.maihama-net.comのIPアドレス)を追加します。
160.16.54.90; ← このゾーン情報の転送先として160.16.54.90(ns1.maihama-net.comのIPアドレス)を追加します。
};
notify yes;
};
zone "126.209.179.115.in-addr.arpa" {
type master;
file "zoah.net.rev";
allow-update { none; };
};
};
// 外部向け設定終了

[root@server1 ~]# dig . ns @198.41.0.4 +bufsize=1024 > /var/named/named.ca ← ルートゾーン(named.ca)を最新化します。

[root@server1 ~]# vi /etc/cron.monthly/named.root_update ← ルートゾーンを毎月自動的に最新化するスクリプトを作成します。

#!/bin/bash

new=`mktemp`
errors=`mktemp`

dig . ns @198.41.0.4 +bufsize=1024 > $new 2> $errors

if [ $? -eq 0 ]; then
    sort_new=`mktemp`
    sort_old=`mktemp`
    diff_out=`mktemp`
    sort $new > $sort_new
    sort /var/named/named.ca > $sort_old
    diff --ignore-matching-lines=^\; $sort_new $sort_old > $diff_out
    if [ $? -ne 0 ]; then
        (
         echo '-------------------- old named.root --------------------'
         cat /var/named/named.ca
         echo
         echo '-------------------- new named.root --------------------'
         cat $new
         echo '---------------------- difference ----------------------'
         cat $diff_out
        ) | mail -s 'named.root updated' root
        cp -f $new /var/named/named.ca
        chown named. /var/named/named.ca
        chmod 644 /var/named/named.ca
        which systemctl > /dev/null 2>&1
        systemctl restart named-chroot > /dev/null
    fi
    rm -f $sort_new $sort_old $diff_out
else
    cat $errors | mail -s 'named.root update check error' root
fi
rm -f $new $errors

[root@server1 ~]# chmod 700 /etc/cron.monthly/named.root_update ← ルートゾーンを毎月自動的に最新化するスクリプトへ実行権限を付加します。

[root@server1 ~]# vi /var/named/zoah.lan.hosts ← LAN内正引きゾーンデータベースを作成します。

$ORIGIN .
$TTL 600	; 10 minutes
zoah.lan		IN SOA	server1.zoah.lan. rezo.zoah.net. (
				2023093516 ; serial
				600        ; refresh (10 minutes)
				600        ; retry (10 minutes)
				172800     ; expire (2 days)
				3600       ; minimum (1 hour)
				)
			NS	server1.zoah.lan.
$ORIGIN zoah.lan.
router			A	192.168.100.1 ← サーバーのプライベートIPアドレスを指定します。
server1			A	192.168.100.200 ← サーバーのプライベートIPアドレスを指定します。

[root@server1 ~]# vi /var/named/zoah.lan.rev ← LAN内逆引きゾーンデータベースを作成します。

$ORIGIN .
$TTL 600	; 10 minutes
100.168.192.in-addr.arpa IN SOA	server1.zoah.lan. rezo.zoah.net. (
				2023093313 ; serial
				600        ; refresh (10 minutes)
				600        ; retry (10 minutes)
				172800     ; expire (2 days)
				3600       ; minimum (1 hour)
				)
			NS	server1.zoah.lan.
$ORIGIN 100.168.192.in-addr.arpa.
1			PTR	router.zoah.lan. ← サーバーIPアドレスの最下部(例:192.168.100.1)とホスト名を指定します。
200			PTR	server1.zoah.lan. ← サーバーIPアドレスの最下部(例:192.168.100.200)とホスト名を指定します。

[root@server1 ~]# vi /var/named/zoah.net.hosts ← 外部向け正引きゾーンデータベースを作成します。

$ORIGIN .
$TTL 3600	; 1 hour
zoah.net				IN SOA	server1.zoah.net. rezo.zoah.net. (
						2023101501 ; serial
						3600       ; refresh (1 hour)
						3600       ; retry (1 hour)
						172800     ; expire (2 days)
						3600       ; minimum (1 hour)
						)
					IN	NS		server1.zoah.net. ← ネームサーバー名
					IN	NS		ns1.maihama-net.com. ← ネームサーバー名
					IN	NS		ns3.maihama-net.com. ← ネームサーバー名
					IN	TXT		"v=spf1 a:server1.zoah.net mx ~all" ← メールサーバーを構築する場合のみ(各自の環境に合わせて下さい。)
default._domainkey.zoah.net.		IN	TXT		"v=DKIM1; k=rsa;""p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAhPjDVIuuuF5TGVCW/U1+TKGj3khf8i8rZlTlgTDrvqcRQKLJERwWeagxzS4sbUcU/9WVPRGeUbQQ+IJdwgQ9Ia5g7h1rjcybpyNgp2iNSXfOz/l/K5tbRR0kLIapmY8Grp9Kt4D8Z7R/3X2ftGs1VQL+B72ZGIy9ZhzuSPSI/0DHjvaI2V4qfudsnmbnF54tbEL0L67zy63Osk""N0cNifqJziwuXyaKKezFsb5KIPoW2dagAs/KNdbleptahmGbG22KL+WJQEP2gUdaX9sTyeKWrwJhi1M8TujLcvX77zIBusHzv14ku296k4gUptYQfF5n/hzjJ35vHCA7lseqHnTQIDAQAB" ← メールサーバーを構築する場合のみ(各自の環境に合わせて下さい。)
_adsp._domainkey.zoah.net.		IN	TXT		dkim=unknown ← メールサーバーを構築する場合のみ(各自の環境に合わせて下さい。)
_dmarc.zoah.net.			IN	TXT		"v=DMARC1; p=quarantine; pct=100; adkim=r; aspf=r" ← メールサーバーを構築する場合のみ(各自の環境に合わせて下さい。)
zoah.net.				IN	MX	10	server1.zoah.net.
router.zoah.net.			IN	A		115.179.209.126
server1.zoah.net.			IN	A		115.179.209.127
www.zoah.net.				IN	A		115.179.209.127
jpsonic.zoah.net.			IN	A		115.179.209.127
linux.zoah.net.				IN	A		115.179.209.127

[root@server1 ~]# vi /var/named/zoah.net.rev ← 外部向け逆引きゾーンデータベースを作成します。

$ORIGIN .
$TTL 3600 ; 1 hour
126.209.179.115.in-addr.arpa IN SOA server1.zoah.net. rezo.zoah.net. (
2023101501 ; serial
3600 ; refresh (1 hour)
3600 ; retry (1 hour)
172800 ; expire (2 days)
3600 ; minimum (1 hour)
)
IN NS server1.zoah.net.
126 IN PTR router.zoah.net. ← サーバーIPアドレスの最下部(例:115.179.209.126)とホスト名を指定します。
127 IN PTR server1.zoah.net. ← サーバーIPアドレスの最下部(例:115.179.209.127)とホスト名を指定します。

[root@server1 ~]# systemctl start named ← BINDを起動します。


[root@server1 ~]# systemctl enable named ← BINDを自動起動するように設定します。

セカンダリネームサーバーを登録します。
マイハマネットを利用します。(無料です。)
ユーザー登録をして、登録時のメールアドレスにきたメールに従い、プライマリネームサーバーの情報(サーバーのグローバルIPアドレスとドメイン名(例:zoah.net))を登録します。

※ユーザー登録時に指定するメールアドレスは、登録するドメイン名のメールアドレス(例:test@zoah.net)でなければならないため、先にメールサーバーを構築しておく必要があります。

尚、ゾーンデータベースの設定を変更した時は、ゾーンデータベースの Serial をカウントアップするのを忘れないで下さい。そうしないと、セカンダリネームサーバーに設定の変更が反映されません。

© 2025 Linuxで自宅サーバー(ホームサーバー)-構築・設定方法- | WordPress テーマ: CrestaProject の Annina Free