vCenterはNTPサーバとDNSサーバと併用する事を前提としています。手っ取り早くvCenterを検証したい方向けに、CentOS 8.2でDNSサーバを構築する方法をまとめます。
DNSサーバ(bind)の構築
bindをインストールします。bind-utilsは必須ではないですが、nslookupコマンドやdigコマンドなどをデバッグで使うためにインストールします。
chroot環境配下でbindを起動するbind-chrootというツールもあります。このページは手っ取り早くDNSサーバを構築する事を目的にしてますので、bind-chrootの説明は省略します。
dnf install bind bind-utils
named.confを編集します。以下に設定例を紹介します。forwarderは自身で名前解決できない名前を問い合わせるDNSサーバを指定します。環境に応じて適宜変更ください。
# vi /etc/named.conf options { listen-on port 53 { 0.0.0.0/0; }; listen-on-v6 port 53 { ::1; }; directory "/var/named"; dump-file "/var/named/data/cache_dump.db"; statistics-file "/var/named/data/named_stats.txt"; memstatistics-file "/var/named/data/named_mem_stats.txt"; recursing-file "/var/named/data/named.recursing"; secroots-file "/var/named/data/named.secroots"; allow-query { 0.0.0.0/0; }; recursion yes; pid-file "/run/named/named.pid"; forwarders { 203.XXX.XX.XXX; 220.XXX.XX.XXX; }; }; logging { channel default_debug { file "data/named.run"; severity dynamic; }; }; zone "example01.com" IN { type master; file "example01.com.zone"; }; zone "168.192.in-addr.arpa" IN { type master; file "example01.com.zone.rev"; };
正引きファイルを編集します。NSレコードはDNSサーバ自身のIPアドレスを指定するよう、適宜変更ください。
# vi /var/named/example01.com.zone $TTL 1800 @ IN SOA ns.gokatei.go. root.example01.com. ( 0 ; serial 1D ; refresh 1H ; retry 1W ; expire 3H ) ; minimum IN NS ns.example01.com. @ IN A 192.168.1.20 ns IN A 192.168.1.20 vcenter01 IN A 192.168.1.191 vcenter02 IN A 192.168.1.192 vcenter03 IN A 192.168.1.193 vcenter04 IN A 192.168.1.194 vcenter05 IN A 192.168.1.195
逆引きファイルを編集します。NSレコードはDNSサーバ自身のIPアドレスを指定するよう、適宜変更ください。
# vi /var/named/example01.com.zone.rev $TTL 1800 @ IN SOA ns.example01.com root.example01.com ( 2021040100 ;Serial 10800 ;Refresh 3 hours 3600 ;Retry 1 hour 86400 ;Expire 1 day 3600) ;Minimum 24 hours IN A 192.168.1.20 IN NS ns.example01.com. 20.1 IN PTR ns.example01.com. 191.1 IN PTR vcenter01.example01.com. 192.1 IN PTR vcenter02.example01.com. 193.1 IN PTR vcenter03.example01.com. 194.1 IN PTR vcenter04.example01.com. 195.1 IN PTR vcenter05.example01.com.
DNSサーバを起動します。
systemctl enable named.service --now
digコマンドで正引きできる事を確認します。ANSWER SECTIONを見て想定通りのIPアドレスが記載されている事を確認します。
[root@centos20 ~]# dig A vcenter01.example01.com @127.0.0.1 ; <<>> DiG 9.11.20-RedHat-9.11.20-5.el8_3.1 <<>> A vcenter01.example01.com @127.0.0.1 ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 41432 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 2 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 4096 ; COOKIE: 1ebd89da6b336ac836ed13176063172e2626773aed60c327 (good) ;; QUESTION SECTION: ;vcenter01.example01.com. IN A ;; ANSWER SECTION: vcenter01.example01.com. 1800 IN A 192.168.1.191 ;; AUTHORITY SECTION: example01.com. 1800 IN NS ns.example01.com. ;; ADDITIONAL SECTION: ns.example01.com. 1800 IN A 192.168.1.20 ;; Query time: 0 msec ;; SERVER: 127.0.0.1#53(127.0.0.1) ;; WHEN: 火 3月 30 21:18:54 JST 2021 ;; MSG SIZE rcvd: 129
digコマンドで逆引きできる事を確認します。ANSWER SECTIONを見て想定通りのFQDNが記載されている事を確認します。
[root@centos20 ~]# dig -x 192.168.1.191 @127.0.0.1 ; <<>> DiG 9.11.20-RedHat-9.11.20-5.el8_3.1 <<>> -x 192.168.1.191 @127.0.0.1 ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 15118 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 2 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 4096 ; COOKIE: c79698da1fdffe817b587e74606317e4ca812ae2d17a0f0a (good) ;; QUESTION SECTION: ;191.1.168.192.in-addr.arpa. IN PTR ;; ANSWER SECTION: 191.1.168.192.in-addr.arpa. 1800 IN PTR vcenter01.example01.com. ;; AUTHORITY SECTION: 168.192.in-addr.arpa. 1800 IN NS ns.example01.com. ;; ADDITIONAL SECTION: ns.example01.com. 1800 IN A 192.168.1.20 ;; Query time: 0 msec ;; SERVER: 127.0.0.1#53(127.0.0.1) ;; WHEN: 火 3月 30 21:21:56 JST 2021 ;; MSG SIZE rcvd: 153
firewalldの接続許可
環境によって設定方法は異なりますが、デフォルト設定のfirewalldならば、以下の設定でDNSが使用するudp53を許可する事ができます。
firewall-cmd --add-port=53/udp --zone=external --permanent firewall-cmd --reload
udp53が確かに許可されている事を確認します。
[root@centos20 ~]# firewall-cmd --list-all --zone=external external target: default icmp-block-inversion: no interfaces: sources: services: ssh ports: 123/udp 53/udp protocols: masquerade: yes forward-ports: source-ports: icmp-blocks: rich rules: