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:
