🍉
【Ubuntu 22.04】内部向けDNSサーバの構築
目的
今回はBIND9を用いて、内部向けのDNSサーバーを構築する方法を紹介します。
ネットワーク構成
下図に今回のネットワーク構成図をものすごく簡単に示します(適当ですみません)。実際に作成する際は、自分の環境に合わせてファイルの変更等を行なってください(必ずしも、以下のような構成でないといけないわけではありません)。
仕様
client1や2などで、dns.test.com というURIでアクセスしに行くことで、DNSサーバー内部で立っているサーバーにアクセスしにいくことができる。
手順
BIND9インストール
まずは、今回使用するBIND9のインストールを行います。
bash
sudo apt update && sudo apt install -y bind9 bind9-utils
BIND9の設定
これから、BIND9に関する設定をたくさんしていくので、ディレクトリを変更しておきましょう。
bash
cd /etc/bind
- BIND9の参照先ファイル
bash
sudo vi named.conf
/etc/bind/named.conf
include "/etc/bind/named.conf.options";
include "/etc/bind/named.conf.local";
include "/etc/bind/named.conf.default-zones";
// ↓新規追加
include "/etc/bind/named.conf.internal-zones";
- BIND9のオプションファイルの変更
ここでは、namedのオプション(問い合わせを許可するネットワーク、再起問い合わせなどの設定をする)に関するファイルを変更していきます。。
bash
sudo vim named.conf.options
/etc/bind/named.conf.options
//↓新規追加
acl internal-network {
192.168.50.0/24;
};
options {
directory "/var/cache/bind";
// If there is a firewall between you and nameservers you want
// to talk to, you may need to fix the firewall to allow multiple
// ports to talk. See http://www.kb.cert.org/vuls/id/800113
// If your ISP provided one or more IP addresses for stable
// nameservers, you probably want to use them as forwarders.
// Uncomment the following block, and insert the addresses replacing
// the all-0's placeholder.
// 問い合わせを受け付けるネットワーク(↓新規追加)
allow-query {
localhost; internal-network;
};
// 再起問い合わせを許可(↓新規追加)
recursion yes;
//========================================================================
// If BIND logs error messages about the root key being expired,
// you will need to update your keys. See https://www.isc.org/bind-keys
//========================================================================
dnssec-validation auto;
listen-on-v6 { any; };
};
- ドメイン定義ファイルの新規作成
bash
sudo vim named.conf.internal-zones
/etc/bind/named.conf.internal-zone
zone "test.com" IN {
type master;
file "/etc/bind/test.com.lan";
};
zone "50.168.192.in-addr.arpa" IN {
type master;
file "/etc/bind/db.50.168.192";
};
- ゾーンファイルの変更
bash
sudo vi test.com.lan
/etc/bind/test.com.lan
$TTL 86400
@ IN SOA www.test.com. root.test.com. (
2023031501 ;Serial
3600 ;Refresh
1800 ;Retry
604800 ;Expire
865400 ;Minimum TTL
)
IN NS www.test.com
dns IN A 192.168.50.100
bash
vim db.50.168.192
/etc/bind/db.50.168.192
$TTL 86400
@ IN SOA www.test.com. root.test.com. (
2023031501 ;Serial
3600 ;Refresh
1800 ;Retry
604800 ;Expire
86400 ;Minimum TTL
)
IN NS www.test.com.
100 IN PTR www.test.com.
最後に、以下のコマンドを実行して変更内容を適用しましょう。
bash
sudo systemctl reload named
sudo systemctl enable named
DNSサーバー自身のDNSの設定
netplan
等を用いてDNSサーバーを自分自身のIPアドレスに設定してください。今回のような環境の場合では192.168.50.100
を設定します。
ファイヤーウォールの設定
ubuntuとかを使っていると、ufw
とかを使ってファイヤーウォールの設定をすると思いますが、ホワイトリスト形式にしていると、DNSサービスのポートである53番が塞がっている可能性があるので、53番ポートは開けておくようにしてください。
まとめ
これらの設定を行うことで、内部的にDNSサーバーを建てることができたと思います。用途は様々かと思いますが、誰かの役に立てればと思います。最後まで読んでくださりありがとうございました。
Discussion