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に変更します。