Table of Contents
Introduction
The previous guide posted on BIND DNS Server for a single node OKD Cluster, in this guide covering BIND DNS Server for HA OKD/Openshift cluster.
If you’re looking Bind DNS server for both single-node and multi-node OKD clusters, you’re in the right place.
DNS Server IP - 192.168.11.100 | ns1.okd.linuxsysadmins.lan
Installing Bind DNS Server
Install the bind package and utility related to DNS query, make a backup of original file before making any chages.
$ dnf install bind bind-utils -y
$ cp /etc/named.conf /etc/named.conf-original
Configuring Bind DNS Server
Below is the complete content of the main DNS configuration file. I have defined separate forward zone files for the single-node and multi-node clusters, while the reverse zone will remain in the existing file.
$ vim /etc/named.conf // named.conf // options { listen-on port 53 { 127.0.0.1; 192.168.11.100; }; 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"; secroots-file "/var/named/data/named.secroots"; recursing-file "/var/named/data/named.recursing"; allow-query { localhost; 192.168.11.0/24; }; allow-recursion { localhost; 192.168.11.0/24; }; forwarders { 192.168.11.1; }; 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"; include "/etc/crypto-policies/back-ends/bind.config"; }; logging { category notify { zone_transfer_log; }; category xfer-in { zone_transfer_log; }; category xfer-out { zone_transfer_log; }; channel zone_transfer_log { file "/var/named/log/transfer.log" versions 10 size 50m; print-time yes; print-category yes; print-severity yes; severity info; }; }; zone "okd.linuxsysadmins.lan" { type master; file "/var/named/okd.linuxsysadmins.lan.zone"; allow-query { localhost; 192.168.11.0/24; }; allow-transfer { none; }; }; zone "okdcls.linuxsysadmins.lan" { type master; file "/var/named/okdcls.linuxsysadmins.lan.zone"; allow-query { localhost; 192.168.11.0/24; }; allow-transfer { none; }; }; zone "11.168.192.in-addr.arpa" { type master; file "/var/named/11.168.192.in-addr.arpa.zone"; allow-query { localhost; 192.168.11.0/24; }; allow-transfer { none; }; }; include "/etc/named.rfc1912.zones"; include "/etc/named.root.key";
Check for Syntax errors
$ named-checkconf
Create the required directory for logs with appropriate permission and ownership
$ mkdir /var/named/log/
$ chown named:named /var/named/log/
$ chmod 700 /var/named/log/
$ restorecon -RFv /var/named/log/
Defining forward Zones
The existing forward zone config file for single node cluster okd
$ vim /var/named/okd.linuxsysadmins.lan.zone
$TTL 8h
@ IN SOA ns1.okd.linuxsysadmins.lan. root (
2024080101 ; serial
3H ; refresh (3 hours)
30M ; retry (30 minutes)
2W ; expiry (2 weeks)
1W ) ; minimum (1 week)
IN NS ns1.okd.linuxsysadmins.lan.
IN MX 10 smtp.okd.linuxsysadmins.lan.
ns1.okd.linuxsysadmins.lan. IN A 192.168.11.100
smtp.okd.linuxsysadmins.lan. IN A 192.168.11.100
helper.linuxsysadmins.lan IN A 192.168.11.100
helper.okd.linuxsysadmins.lan. IN A 192.168.11.100
api.okd.linuxsysadmins.lan. IN A 192.168.11.101
api-int.okd.linuxsysadmins.lan. IN A 192.168.11.101
*.apps.okd.linuxsysadmins.lan. IN A 192.168.11.101
control-plane.okd.linuxsysadmins.lan. IN A 192.168.11.101
bastion.okd.linuxsysadmins.lan. IN A 192.168.11.11
bootstrap.okd.linuxsysadmins.lan. IN A 192.168.11.107
A separate forward zone file for new multi node cluster okdcls
$ vim /var/named/okdcls.linuxsysadmins.lan.zone
$ORIGIN okdcls.linuxsysadmins.lan.
$TTL 8h
@ IN SOA ns1.okdcls.linuxsysadmins.lan. root (
2024080101 ; serial
3H ; refresh (3 hours)
30M ; retry (30 minutes)
2W ; expiry (2 weeks)
1W ) ; minimum (1 week)
IN NS ns1.okdcls.linuxsysadmins.lan.
ns1.okdcls.linuxsysadmins.lan. IN A 192.168.11.100
api.okdcls.linuxsysadmins.lan. IN A 192.168.11.100
api-int.okdcls.linuxsysadmins.lan. IN A 192.168.11.100
*.apps.okdcls.linuxsysadmins.lan. IN A 192.168.11.100
control-plane1.okdcls.linuxsysadmins.lan. IN A 192.168.11.201
control-plane2.okdcls.linuxsysadmins.lan. IN A 192.168.11.202
control-plane3.okdcls.linuxsysadmins.lan. IN A 192.168.11.203
compute1.okdcls.linuxsysadmins.lan. IN A 192.168.11.204
compute2.okdcls.linuxsysadmins.lan. IN A 192.168.11.205
compute3.okdcls.linuxsysadmins.lan. IN A 192.168.11.206
bastion.okdcls.linuxsysadmins.lan. IN A 192.168.11.11
bootstrap.okdcls.linuxsysadmins.lan. IN A 192.168.11.107
Defining Reverse Zones
As said above, we are using the existing reverse zone file and include the new clusters zone information.
$ vim /var/named/11.168.192.in-addr.arpa.zone
$TTL 8h
@ IN SOA ns1.okd.linuxsysadmins.lan. root (
2024080101 ; serial
3H ; refresh (3 hours)
30M ; retry (30 minutes)
2W ; expiry (2 weeks)
1W ) ; minimum (1 week)
IN NS ns1.okd.linuxsysadmins.lan.
100.11.168.192.in-addr.arpa. IN PTR ns1.okd.linuxsysadmins.lan.
101.11.168.192.in-addr.arpa. IN PTR api.okd.linuxsysadmins.lan.
101.11.168.192.in-addr.arpa. IN PTR api-int.okd.linuxsysadmins.lan.
101.11.168.192.in-addr.arpa. IN PTR control-plane.okd.linuxsysadmins.lan.
11.11.168.192.in-addr.arpa. IN PTR bastion.okd.linuxsysadmins.lan.
107.11.168.192.in-addr.arpa. IN PTR bootstrap.okd.linuxsysadmins.lan.
100.11.168.192.in-addr.arpa. IN PTR api.okdcls.linuxsysadmins.lan.
100.11.168.192.in-addr.arpa. IN PTR api-int.okdcls.linuxsysadmins.lan.
201.11.168.192.in-addr.arpa. IN PTR control-plane1.okdcls.linuxsysadmins.lan.
202.11.168.192.in-addr.arpa. IN PTR control-plane2.okdcls.linuxsysadmins.lan.
203.11.168.192.in-addr.arpa. IN PTR control-plane3.okdcls.linuxsysadmins.lan.
204.11.168.192.in-addr.arpa. IN PTR compute1.okdcls.linuxsysadmins.lan.
205.11.168.192.in-addr.arpa. IN PTR compute2.okdcls.linuxsysadmins.lan.
206.11.168.192.in-addr.arpa. IN PTR compute3.okdcls.linuxsysadmins.lan.
11.11.168.192.in-addr.arpa. IN PTR bastion.okdcls.linuxsysadmins.lan.
107.11.168.192.in-addr.arpa. IN PTR bootstrap.okdcls.linuxsysadmins.lan.
Permission and Ownership of Zone files
Set the appropriate permission and ownership on created new zone files.
$ chown root:named /var/named/okd.linuxsysadmins.lan.zone
$ chown root:named /var/named/11.168.192.in-addr.arpa.zone
$ chmod 640 /var/named/okd.linuxsysadmins.lan.zone
$ chmod 640 /var/named/11.168.192.in-addr.arpa.zone
Run named-checkzone file for any errors.
$ named-checkzone okd.linuxsysadmins.lan /var/named/okd.linuxsysadmins.lan.zone
$ named-checkzone 11.168.192.in-addr.arpa /var/named/11.168.192.in-addr.arpa.zone
Restore the SELinux labels
$ restorecon -RFv /var/named/*.zone
Starting Service
Start and enable the service persistently
$ systemctl enable --now named
$ systemctl status named.service
Run dig command for both forward and reverse zone lookup to confirm the DNS resolution.
$ dig +short @localhost A ns1.okd.linuxsysadmins.lan
$ dig +short @localhost A api.okd.linuxsysadmins.lan
$ dig @localhost A api.okd.linuxsysadmins.lan
$ dig +short @localhost -x 192.168.11.10
Firewall Exclusion
Add firewall exclusion for DNS service.
$ firewall-cmd --permanent --add-service=dns
$ firewall-cmd --reload
$ firewall-cmd --list-all
That’s it, our Bind DNS server is ready for both single node and multi node OKD cluster. This setup is more reliable and perfect for a home lab or for a small scale business.