vCenter向けDNSサーバ構築手順 (RockyLinux 9.0編)

スポンサーリンク

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:
タイトルとURLをコピーしました