vCenterはNTPサーバとDNSサーバと併用する事を前提としています。手っ取り早くvCenterを検証したい方向けに、RHEL 8.XまたはRHEL 9.XでDNSサーバを構築する方法をまとめます。
前提
参照資料
特になし。適宜、manコマンドをご利用ください。
動作確認済環境
- CentOS 8.3
- Rocky Linux 8.6
- Rocky Linux 9.0
DNSサーバ(bind)の構築
bindをインストールします。bind-utilsは必須ではないですが、nslookupコマンドやdigコマンドなどをデバッグで使うためにインストールします。
chroot環境配下でbindを起動するbind-chrootというツールもあります。このページは手っ取り早くDNSサーバを構築する事を目的にしてますので、bind-chrootの説明は省略します。
dnf install bind bind-utils
named.confを編集します。デフォルト設定から変更している部分を以下にハイライトで表示します。listen-onとallow-queryを変更しdns queryに応答するようにします。また、zoneファイルを追加します。以下の例ではexample01.com.zoneとexample01.com.zone.revが追加されたzoneファイルです。
# 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; }; /* - If you are building an AUTHORITATIVE DNS server, do NOT enable recursion. - If you are building a RECURSIVE (caching) DNS server, you need to enable recursion. - If your recursive DNS server has a public IP address, you MUST enable access control to limit queries to your legitimate users. Failing to do so will cause your server to become part of large scale DNS amplification attacks. Implementing BCP38 within your network would greatly reduce such attack surface */ recursion yes; dnssec-validation yes; managed-keys-directory "/var/named/dynamic"; geoip-directory "/usr/share/GeoIP"; pid-file "/run/named/named.pid"; session-keyfile "/run/named/session.key"; /* https://fedoraproject.org/wiki/Changes/CryptoPolicy */ include "/etc/crypto-policies/back-ends/bind.config"; }; 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"; }; zone "." IN { type hint; file "named.ca"; }; include "/etc/named.rfc1912.zones"; include "/etc/named.root.key";
正引きファイルを編集します。NSレコードはDNSサーバ自身のIPアドレスを指定するよう、適宜変更ください。
cat << 'EOF' > /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 EOF
逆引きファイルを編集します。NSレコードはDNSサーバ自身のIPアドレスを指定するよう、適宜変更ください。
cat << 'EOF' > /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. EOF
DNSサーバを起動します。
systemctl enable named.service --now
digコマンドで正引きできる事を確認します。ANSWER SECTIONを見て想定通りのIPアドレスが記載されている事を確認します。
[root@rocky050 ~]# dig A vcenter01.example01.com @127.0.0.1 ; <<>> DiG 9.16.23-RH <<>> A vcenter01.example01.com @127.0.0.1 ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 50166 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 1232 ; COOKIE: ef8d08cfd2eded0a0100000062e0d9d486747c2b1db8f8f0 (good) ;; QUESTION SECTION: ;vcenter01.example01.com. IN A ;; ANSWER SECTION: vcenter01.example01.com. 1800 IN A 192.168.1.191 ;; Query time: 1 msec ;; SERVER: 127.0.0.1#53(127.0.0.1) ;; WHEN: Wed Jul 27 15:23:16 JST 2022 ;; MSG SIZE rcvd: 96 [root@rocky050 ~]#
digコマンドで逆引きできる事を確認します。ANSWER SECTIONを見て想定通りのFQDNが記載されている事を確認します。
[root@rocky050 ~]# dig -x 192.168.1.191 @127.0.0.1 ; <<>> DiG 9.16.23-RH <<>> -x 192.168.1.191 @127.0.0.1 ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 57906 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 1232 ; COOKIE: d62205d28472fc5a0100000062e0d9f199d7af8b76dbc897 (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. ;; Query time: 3 msec ;; SERVER: 127.0.0.1#53(127.0.0.1) ;; WHEN: Wed Jul 27 15:23:45 JST 2022 ;; MSG SIZE rcvd: 120 [root@rocky050 ~]#
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: