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 をカウントアップするのを忘れないで下さい。そうしないと、セカンダリネームサーバーに設定の変更が反映されません。