bindにかなり多くの脆弱性がでているため、新しいソフトでDNSを構築していきたい。
今回は、DNSキャッシュサーバ用のunboundを持ちいてDNSキャッシュサーバを作成していく。
実行環境
OS:CentOs8Stream
fireWallの設定など、基本的なサーバの設定は済んでいるものとする。
unboundのインストール
以下のコマンドを実行する。
sudo yum install unbound
unboud-server.keyを作成しないと、 unbound-checkconf でエラーが表示されるため、これを作成する。 まずは以下コマンドで、存在するかどうか確認する。
sudo systemctl status unbound-keygen
以下のような表示になる。
sudo systemctl status unbound-keygen
------------------------------------------------------------
● unbound-keygen.service - Unbound Control Key And Certificate Generator
Loaded: loaded (/usr/lib/systemd/system/unbound-keygen.service; disabled; vendor preset: disabled)
Active: inactive (dead)
次のコマンドで、keyファイルを作成する。
sudo systemctl start unbound-keygen
この状態でもう一度確認すると、Activeになっているのが分かる。
sudo systemctl status unbound-keygen
結果
● unbound-keygen.service - Unbound Control Key And Certificate Generator
Loaded: loaded (/usr/lib/systemd/system/unbound-keygen.service; disabled; vendor preset: disabled)
Active: active (exited) since Tue 2021-09-14 14:29:54 JST; 6s ago
また、lsコマンドで、 unbound_server.key がある事も確認できる。
ls -l /etc/unbound/*.key
コンフィグの変更
/etc/unbound/unbound.conf
を設定する。
デフォルトでは全てコメントアウトされている。必要な部分を追記したり、アンコメントしたりする。
- 以下の部分を検索し、設定を変更する。
許可する範囲は、管理ネットワークを包括する範囲である、10.0.0.0/8 である
sudo vi /etc/unbound/unbound.conf
内容
------------------------------------------------------------
server:
interface: 0.0.0.0 ←すべてのアドレスからの問い合わせに回答(IPv4)
interface: ::0 ←すべてのアドレスからの問い合わせに回答(IPv6)
access-control: 0.0.0.0/0 refuse ←デフォルト拒否(IPv4)
access-control: 127.0.0.0/8 allow ←ループバックアドレスを許可(IPv4)
access-control: 192.168.160.0/24 allow ←問い合わせを許可するネットワーク
access-control: ::0/0 refuse ←デフォルト拒否(IPv6)
access-control: ::1 allow ←ループバックアドレスを許可(IPv6)
access-control: ::ffff:127.0.0.1 allow ←ループバックアドレスを許可(IPv6)
interface-automatic: yes(この場合、すぐ下にあるNoをコメントアウトすること。VIPなどを使うために、
複数のアドレスをDNSサーバのアドレスとして使用するときに使う。)
------------------------------------------------------------
変更したら:wqで保存する。
以下のコマンドで確認を行う。
sudo unbound-checkconf
問題なければ、以下のように出力が出る。
unbound-checkconf: no errors in /etc/unbound/unbound.conf
動作させる。
以下コマンドで、unboundの再起動と、自動起動の設定をする。
sudo systemctl restart unbound
sudo systemctl enable unbound
起動の確認を行う。 成功すれば、以下のような出力結果が出てくる。
unbound.service - Unbound recursive Domain Name Server
Loaded: loaded (/usr/lib/systemd/system/unbound.service; enabled; vendor preset: disabled)
Active:
Main PID:
Tasks:
Memory:
CGroup:
active (running) since Fri 2021-10-01 16:37:11 JST; 8s ago
5645 (unbound)
4 (limit: 10993)
20.5M
/system.slice/unbound.service
└─5645 /usr/sbin/unbound -d
自分自身のDNSの名前解決の設定(本来は、8.8.8.8など、信頼できるDNSサーバにすべきだが、あくまで動作確認のため行なっている。)/etc/resolv.conf
を編集する。
sudo vi /etc/resolv.conf
以下に変更
nameserver 127.0.0.1(8.8.8.8など、信頼できるDNSサーバ)
nameserver (他のDNSサーバなど)
nslookupコマンドで、自分自身(127.0.0.1)を参照しているか確認できる。
これで、今回作ったサーバが、ちゃんと名前解決ができるサーバである事を確認できる。
nslookup www.google.com
Serverの部分は127.0.0.1と出ること
Server: 127.0.0.1
Address: 127.0.0.1#53
Non-authoritative answer:
Name: www.google.com
Address: 172.217.175.36
Name: www.google.com
Address: 2404:6800:4004:81f::2004
以上
参考サイト
https://tech-mmmm.blogspot.com/2017/03/centos-7unbounddns.html
https://blog.goo.ne.jp/a-storm/e/7e33c2195e2658ed9d45f27f005ad369