Server

21. セカンダリDNSサーバーの構築

 この章では、Oracle Linux 8で、セカンダリDNSサーバーを構築する手順等について記述しています。

 ここまでの設定で、一通りのサーバー構築は終わりましたが、一つ弱点があります。それは、DNSサーバーが一台だけのため、サーバーをメンテナンスのために落とすと、LAN内部のマシンからネット接続ができなくなってしまうことです。

 そのため、負荷分散の意味も込めて、もう一台サーバーを用意し、セカンダリDNSサーバーとするのと同時に、そのマシンに、最もメモリを必要とするであろうWebサーバーを分離して実装することにしました。

 以下、本稿では、最初に構築したサーバー(192.168.0.2)をメールサーバー、これから構築するサーバー(192.168.0.3)をWebサーバーと呼称することとします。

 インストール手順や、初期設定、Apacheやfail2banのインストール、ファイアーウォールの設定等は、今までと同じです。前の章などを参照してください。


 ここから、新しい作業手順を記述します。まず、メールサーバー(192.168.0.2)から設定します。

 Apacheの自動起動を廃止し、停止させます。

sudo systemctl disable httpd
sudo systemctl stop httpd

 Apacheと関連パッケージをアンインストールします。インストールの逆順に行うと良いでしょう。

sudo dnf remove mod_ssl
sudo dnf remove php-fpm
sudo dnf remove php
sudo dnf remove httpd

 ファイアーウォールからHTTP、HTTPS通信の除外設定を削除します。

sudo firewall-cmd --remove-service=https --permanent
sudo firewall-cmd --remove-service=http --permanent
sudo firewall-cmd --reload

 fail2banの設定をします。この設定ファイルは、Webサーバー(192.168.0.3)でも流用可能ですので、設定する前にWinSCPやRLoginを用いて、Windowsマシンに転送して保存しておくと作業がやりやすくなります。

sudo vim /etc/fail2ban/jail.local

 前の章の設定内容から、[apache-auth]、[apache-overflows]、[apache-badbots]、[php-url-fopen]、[apache-shellshock]の部分を削除かコメントアウトして、保存します。


 次に、hostsファイルを編集します。

sudo vim /etc/hosts

 以下のように編集します。

 変更前

127.0.0.1   localhost www www.example.net
192.168.0.2 www www.example.net

 変更後

127.0.0.1   localhost mail mail.example.net
192.168.0.2 mail mail.example.net

 ホスト名を変更します。

sudo hostnamectl set-hostname mail.example.net

 続けてBIND(DNSサーバー)の設定に移ります。設定ファイル(/etc/named.conf)を編集します。ここでついでに、練習のために設定した外部向け設定を削除します。なお、ここでは設定内容の説明をしません。プライマリDNSサーバーの章を参照してください。

sudo vim /etc/named.conf

 15行目辺りを変更します。

 変更前

	allow-transfer  { none; };

 変更後

	#allow-transfer  { none; };
	allow-transfer  { 192.163.0.3; };

 60行目辺りを変更します。最初の3行と最後の1行をコメントアウトします。

 変更前

// naibu muke settei kaisi
view "internal" {
	match-clients { 192.168.0.0/24; };
	match-destinations { 192.168.0.0/24; };

zone "." IN {
	type hint;
	file "named.ca";
};

include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";

	include "/etc/named/named.example.net.zone";
};
// naibu muke settei syuuryou

 変更後

// naibu muke settei kaisi
#view "internal" {
#	match-clients { 192.168.0.0/24; };
#	match-destinations { 192.168.0.0/24; };

zone "." IN {
	type hint;
	file "named.ca";
};

include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";

	include "/etc/named/named.example.net.zone";
#};
// naibu muke settei syuuryou

 最終行辺りを変更し、外部向け設定をコメントアウトします。

 変更前

// gaibu muke settei kaisi
view "external" {
	match-clients { any; };
	match-destinations { any; };
	include "/etc/named/named.example.net.zone.wan";
};
// gaibu muke settei syuuryou

 変更後

// gaibu muke settei kaisi
#view "external" {
#	match-clients { any; };
#	match-destinations { any; };
#	include "/etc/named/named.example.net.zone.wan";
#};
// gaibu muke settei syuuryou

 正引きのデータベースファイル(/var/named/example.net.db)を編集します。

sudo vim /var/named/example.net.db

 シリアルナンバー(2020年8月11日バージョン01)を適当なものに書き換え、www.example.netの部分を192.168.0.3に変更します。

 変更前

$TTL	86400
@	IN	SOA	example.net. 	root.example.net. (
				2020081101	; Serial
				28800		; Refresh
				14400		; Retry
				3600000		; Expire
				86400 ) 	; Negative TTL
	IN NS	example.net.
	IN MX 10 example.net.
@	IN A	192.168.0.2
www	IN A	192.168.0.2
www2	IN A	192.168.0.1
*	IN A	192.168.0.2

 変更後

$TTL	86400
@	IN	SOA	example.net.	root.example.net. (
				2020121501	; Serial
				28800		; Refresh
				14400		; Retry
				3600000		; Expire
				86400 ) 	; Negative TTL
	IN NS	example.net.
	IN MX 10 example.net.
@	IN A	192.168.0.2
www	IN A	192.168.0.3
www2	IN A	192.168.0.1
*	IN A	192.168.0.2

 逆引きのデータベースファイル(/var/named/0.168.192.in-addr.arpa.db)を編集します。www.example.netの情報を加えます。

 変更前

$TTL 	86400
@ 	IN 	SOA 	example.net. 	root.example.net. (
					2020081201 	; Serial
					28800 		; Refresh
					14400 		; Retry
					3600000 	; Expire
					86400 	) 	; Negative TTL
		IN	NS 	example.net.
2 		IN 	PTR 	example.net.
1 		IN 	PTR 	www2.example.net.

 変更後

$TTL	86400
@	IN	SOA	example.net. 		root.example.net. (
					2020121501	; Serial
					28800		; Refresh
					14400		; Retry
					3600000		; Expire
					86400	) 	; Negative TTL
		IN	NS	example.ent.
2		IN	PTR	example.net.
1		IN	PTR	www2.example.net.
3		IN	PTR	www.example.net.

 BINDを再起動します。

sudo systemctl restart named

 ここからは、Webサーバー(192.168.0.3)の設定をします。

 hostsファイルを編集します。

sudo vim /etc/hosts

 変更前

127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

 変更後

127.0.0.1   localhost www www.example.net
192.168.0.3 www www.example.net
::1         localhost ip6-localhost ip6-loopback

 ホスト名を変更します。メールサーバー(192.168.0.2)の設定の後にWebサーバー(192.168.0.3)のインストールをした場合はすでになっていると思いますが、一応やっておきます。

sudo hostnamectl set-hostname www.example.net

 BINDと関連ツールをインストールします。

sudo dnf -y install bind bind-utils

 ファイアーウォールの設定をします。

sudo firewall-cmd --add-service=dns --permanent
sudo firewall-cmd --reload

 BINDの起動と、サーバー起動時に同時に起動するように設定します。

sudo systemctl start named
sudo systemctl enable named

 設定ファイル(/etc/named.conf)を編集します。

sudo vim /etc/named.conf

 10行目辺りを編集します。

 変更前

	listen-on port 53 { 127.0.0.1; };
	listen-on-v6 port 53 { ::1; };

 変更後

	#listen-on port 53 { 127.0.0.1; };
	#listen-on-v6 port 53 { ::1; };

 この次にある、

	directory 	"/var/named";

 のに、以下の行を追加します。

	version		"unknown";

 20行目辺りの以下の行をコメントアウトします。

 変更前

	allow-query     { localhost; };

 変更後

	#allow-query     { localhost; };

 15行目辺りにある

	memstatistics-file "/var/named/data/named_mem_stats.txt";

 の次に、以下の行を追加します。

	allow-transfer	{ none; };

 30行目辺りにある、/* ~ */で囲まれたコメントの次に、以下の行を追加します。

 変更前

	recursion yes;

 変更後

	recursion yes;
	allow-query	{ localhost; 192.168.0.0/24; };
	allow-recursion	{ localhost; 192.168.0.0/24; };
	allow-query-cache { localhost; 192.168.0.0/24; };
	forwarders{ 8.8.8.8; 8.8.4.4; };

 50行目辺りにある、

	channel default_debug {
		file "data/named.run";
		severity dynamic;
	};

 の次に、以下の行を追加します。

	category lame-servers { null;  };

 最終行に以下を追加します。

include "/etc/named/named.example.net.zone";

 /etc/named/named.example.net.zoneを新規作成し、編集します。

sudo vim /etc/named/named.example.net.zone

 以下の内容を書き加えます。

zone "example.net" {
	type slave;
	file "db.example.net";
	masters { 192.168.0.2; };
};
zone "0.168.192.in-addr.arpa" {
	type slave;
	file "db.192";
	masters { 192.168.0.2; };
};

 BINDを再起動し、ステータスをチェックしてエラーがないか確認します。

sudo systemctl restart named
sudo systemctl status named

 続けてfail2banの設定を行います。設定ファイル(jail.local)を新規作成し、編集します。

sudo vim /etc/fail2ban/jail.local

 書き込む内容は前の章とほぼ同じです。ただ、不要になったメールサーバーの設定([postfix]、[postfix-sasl]、[dovecot]の各種監獄設定)を削除したものを書き込みます。


 fail2banを再起動します。

sudo systemctl restart fail2ban

 各種サーバーとルーター設定のセカンダリDNSサーバーを、192.168.0.3に設定します。

 Webサーバー(Apache)のインストールについては、前の章と同じですので、そちらを参照してください。

 ルーターのHTTP、HTTPSの転送先を192.168.0.3に変更します。