vm.gowatana.jp

NEOにほんごVMware(仮)

VMware Photon OS 4.0 Beta で簡易 DNS サーバ構築。(dnsmasq)

この投稿は、vExperts Advent Calendar 2020 の 19日目です。

VMware Photon OS 4.0 Beta で、簡易的な DNS サーバを構築してみます。DNS サーバのソフトウェアは、Photon OS の RPM リポジトリに登録されている dnsmasq を利用します。

デモ環境 / 自宅ラボなどでも、DNS による名前解決があったほうがよいケース(たとえば vCenter Server など)があるので、そのときの候補になるかなと思います。また、今回は Photon OS 4.0 で試していますが、3.0 でも一部を除き同様の手順です。

Photon OS の準備

VMware から提供されている、Photon OS 4.0 Beta の OVA をデプロイします。

今回は、「OVA with virtual hardware v13 (UEFI Secure Boot)」を利用しました。

Downloading Photon OS · vmware/photon Wiki · GitHub

vSphere Client でこのOVA ファイルをデプロイして、パワーオンします。

そして、root / changeme でログインして、そのまま初期パスワードを変更します。

f:id:gowatana:20201219234802p:plain

ホスト名は、わかりやすいもの(今回は lab-dns-01)に変更しておきます。ログインしなおすと、bash のプロンプトにもホスト名が反映されます。

root@photon-machine [ ~ ]# hostnamectl set-hostname lab-dns-01

ホスト名変更後にログインしなおした Photon OS 4.0 です。

root@lab-dns-01 [ ~ ]# cat /etc/photon-release
VMware Photon OS 4.0
PHOTON_BUILD_NUMBER=d98e681

なお、ネットワーク設定はとりあえず DHCP のままにしていますが、本来はスタティックなアドレスを設定します。

DNS サーバの構築(dnsmasq)

dnsmasq のインストール

まず、dnsmasq をインストールします。

root@lab-dns-01 [ ~ ]# tdnf install -y dnsmasq
root@lab-dns-01 [ ~ ]# rpm -q dnsmasq
dnsmasq-2.82-2.ph4.x86_64

DNS レコードの登録

dnsmasq では、hosts ファイルのエントリを DNS レコードとして利用できます。

/etc/hosts ファイルに、DNS レコードの情報を記入します。

root@lab-dns-01 [ ~ ]# echo '192.168.10.20 lab-vc-11.go-lab.jp' >> /etc/hosts
root@lab-dns-01 [ ~ ]# echo '192.168.10.30 lab-esxi-11.go-lab.jp' >> /etc/hosts
root@lab-dns-01 [ ~ ]# tail -n 2 /etc/hosts
192.168.10.20 lab-vc-11.go-lab.jp
192.168.10.30 lab-esxi-11.go-lab.jp

systemd-resolved の停止(Photon OS 3.0 では不要)

このあと、dnsmasq を起動しますが、Photon OS 4.0 ではデフォルトで起動されている systemd-resolved と TCP 53番ポートが競合してしまうので、今回は停止してしまいます。

root@lab-dns-01 [ ~ ]# systemctl stop systemd-resolved
root@lab-dns-01 [ ~ ]# systemctl disable systemd-resolved
Removed /etc/systemd/system/multi-user.target.wants/systemd-resolved.service.
Removed /etc/systemd/system/dbus-org.freedesktop.resolve1.service.

デフォルトだと systemd-resolved 関連ファイルのシンボリックリンクになっている /etc/resolv.conf も差し替えます。ここで設定している 192.168.1.101 と 192.168.1.102 は、自宅ラボの DNS サーバです。

root@lab-dns-01 [ ~ ]# rm -rf /etc/resolv.conf
root@lab-dns-01 [ ~ ]# echo 'nameserver 192.168.1.101' > /etc/resolv.conf
root@lab-dns-01 [ ~ ]# echo 'nameserver 192.168.1.102' >> /etc/resolv.conf
root@lab-dns-01 [ ~ ]# echo 'search go-lab.jp' >> /etc/resolv.conf
root@lab-dns-01 [ ~ ]# chmod o+r /etc/resolv.conf

dnsmasq の起動

そして、dnsmasq を起動します。

root@lab-dns-01 [ ~ ]# systemctl start dnsmasq
root@lab-dns-01 [ ~ ]# systemctl is-active dnsmasq
active
root@lab-dns-01 [ ~ ]# systemctl enable dnsmasq
Created symlink /etc/systemd/system/multi-user.target.wants/dnsmasq.service → /lib/systemd/system/dnsmasq.service.

ファイアウォール(iptables)の解放

iptables で、DNS のポートを開放しておきます。

iptables-save コマンドを利用するかわりに、/etc/systemd/scripts/ip4save ファイルへの「-A INPUT -p udp -m udp --dport 53 -j ACCEPT」直接追記でも、同様に iptables の設定を永続化できます。

root@lab-dns-01 [ ~ ]# iptables -A INPUT -p udp -m udp --dport 53 -j ACCEPT
root@lab-dns-01 [ ~ ]# iptables-save > /etc/systemd/scripts/ip4save
root@lab-dns-01 [ ~ ]# systemctl restart iptables

DNS レコードのメンテナンス

このあとの DNS レコード追加・削除についても、さきほどと同様に /etc/hosts ファイルを編集です。vi などのテキスト エディタで適宜ファイルを編集します。

hosts ファイルを編集するたびに、dnsmasq サービスも再起動します。

root@lab-dns-01 [ ~ ]# systemctl restart dnsmasq

名前解決の確認

別の Photon OS に、bindutils をインストールして、登録した DNS レコードが名前解決できることを確認します。

root@photon-machine [ ~ ]# tdnf install -y bindutils

bindutils には、nslookup や dig コマンドが含まれます。

root@photon-machine [ ~ ]# rpm -ql bindutils
/etc/named.conf
/usr/bin/dig
/usr/bin/host
/usr/bin/nslookup
/usr/lib/tmpfiles.d/named.conf

登録したレコードの名前解決ができることを確認します。

ここでは、「lab-vc-11.go-lab.jp」←→「192.168.1.30」を正引き / 逆引きで確認してみます。いまさらですが「10.0.1.167」が、dnsmasq をインストールした DNS サーバのアドレスです。

まず A レコードを確認してみます。

root@photon-machine [ ~ ]# nslookup -type=A lab-vc-11.go-lab.jp 10.0.1.167
Server:         10.0.1.167
Address:        10.0.1.167#53

Name:   lab-vc-11.go-lab.jp
Address: 192.168.10.20

PTR レコード(逆引き)を確認してみます。

root@photon-machine [ ~ ]# nslookup -type=PTR 192.168.10.20 10.0.1.167
Server:         10.0.1.167
Address:        10.0.1.167#53

20.10.168.192.in-addr.arpa      name = lab-vc-11.go-lab.jp.

これで、ラボなどで利用できる簡易的な DNS サーバが用意できました。

以上、Photon OS 4.0 を DNS サーバにしてみる話でした。