これまでなんとなくDNSサーバを扱ってきたので
DNSサーバの挙動を理解するために実際にDNSサーバを立ててみようかと思います。
その際の手順や設定を記載していきます。
今回は下記のDNSサーバ構築を解説してくれているサイトがあったのでこちらを参考に進めていこうと思います。
※手持ちで所持している機器で構築していくのである程度妥協があるかも
参考:https://www.isoroot.jp/blog/2929/
ちなみに現状の構成です。
よく家庭用にあるONU兼wifiルータ(dhcp,dns機能諸々込みのやつ)です。
ルータに有線で差し込んであるだけでHUBなど何も嚙ましてない拡張性皆無の構成です。
DNSサーバはPC上でサーバソフト(BlackJumboDog)とかで建てるのもいいかなとは思ったけど
折角なので仮想マシンの構築からやっていきます。
まず仮想マシンのおさらいから
■ホスト型とハイパーバイザー型について↓↓
上記のサイトを見ておさらい終わり、忘れたら見に行こう。
次、
ESXiはよく聞くけど何かよくわからない物の認識だったので調べるところから。↓
- ハイパーバイザ型の仮想マシン
- ESXiはVMware社の製品vSphereの中核的な物で、vSphereはVcenterという複数のESXiを管理できるものがついてくる。
- 有償版と無料版(評価用)がある。
参考:https://frontl1ne.net/2019/12/vmware-esxi-install/
調べていく内にESXiを入れるには空のHDD、SSDを丸ごと1つ食いつぶす。
なのでほかのOSとは別のストレージに入れてあげる必要がある。(デュアルブート出来ないね)
サーバ専用マシンは用意していないので敷居の低いホスト型の仮想マシンを使うことにしました。
過去に触ったことのあるVirtual boxを使おうと思います。
仮想マシンのセットアップ手順
仮想マシン上でCentOSを起動させるにあたり必要なものは以下の2つ。
- 仮想化マシン (virtual box)
- CentOSのisoファイル (仮想マシンとして建てたいマシンのOS)
やり方は先人が残したものがあるのでそちらを参照。
ちなみにisoファイルは複数のファイルで構成された一つのファイル。
これでCentOSを仮想マシン上で稼働できるようになった。
※ちなみに仮想マシンのネットワークの種類(NWの割り当て(A):)はブリッジアダプターにした↓↓
未割当:ネットワークアダプタを有効にするが通信はさせない。異常試験の時に使う模様。
ブリッジアダプター:仮想SWの配下にホストOSとゲストOSがいる構成となる。
NAT:ホストOSのIPを共有して外部の物理ネットワークと接続するモード。
ホストOSとゲストOSの間でvitual boxがNATを行う。

CentOS上でDNSサーバを立てる
ここからCentOS上でのCLI操作となるのでDNSソフト bindのセットアップの一連の動作を記載する。
#yum install bind
#systemctl stop firewalld
↑これがないとDNS関連の通信がブロックされます。
#systemctl start named
#systemctl status named
これでDNSサーバの起動と確認ができたので今の構成はこんな感じ。↓↓

次はDNSの設定について。
/etc/named.confでDNSサーバの設定ができるので設定していきます。
#vi /etc/named.conf
設定すべき点は以下の4つ。(最初に紹介した今回構築にあたって参考にしたサイトに詳しい説明があったのでそちらから抜粋↓↓)
- listen-on port 53
LISTENするIPアドレスを指定します。
自身のIPアドレスを追記しています。 - allow-query
問い合わせを受け付けるネットワークを制限します。
今回はClientのネットワークも含めた192.168.0.0/16で許可します。 - forwarders
再帰問い合わせ先を指定します。
GoogleのパブリックDNSサーバーを指定します。 - recursion
再帰問い合わせ機能を利用するかを記述します。
利用する場合は yes , 利用しない場合は no と記述します。
なので自分は以下の通りに設定しました。
- listen-on port 53 { 127.0.0.1; 192.168.0.12;};
- allow-query { localhost; 192.168.0.0/16;};
- forwarders{ 8.8.8.8; };
- recursion yes;
変更後にDNSを立ち上げたままでconfファイルの中身を変更しても反映されないので注意!
下記のrestartコマンドでDNSサービスを再起動する必要あり↓↓
#systemctl restart named
これでDNSのセットアップは一通り終わりのはずです。
通信確認
ホストOS端末はこれまでwifiルータのDHCP機能でipを自動取得してきたので、ホストOS端末のipアドレス、サブネット、デフォゲ、DNSサーバのipアドレスをstaticで設定してWeb閲覧できるかチェックしてみます。
自分で建てたDNSサーバでうまくWebサイト見れました!!

再帰問い合わせ名前解決のパターンを確認できたので今度は非再帰問い合わせもできるかやってみる予定。
LAN内でNTPサーバ立ててclientからFQDNで名前解決できてることを確認するとか。