Tested on OpenBSD 6.4
Install two VMs in two different networks.
For example, OpenBSD.Amsterdam and Vultr.
Let's pick arbitrary names for them:
ns1.example.com
ns2.example.com
Edit nsd.conf(5) on ns1,
create a zone file for example.com,
copy nsd.conf and example.com.zone to ns2,
enable and start nsd(8) on both servers.
# cat > /var/nsd/etc/nsd.conf << EOF
server:
database: ""
remote-control:
control-enable: yes
control-interface: /var/run/nsd.sock
zone:
name: example.com
zonefile: master/%s.zone
EOF
#
# cat > /var/nsd/zones/master/example.com.zone << EOF
$ORIGIN example.com.
$TTL 300
@ 3600 SOA ns1.example.com. hostmaster.example.com. (
2018121401 ; serial YYYYMMDDnn
1440 ; refresh
3600 ; retry
604800 ; expire
300 ) ; minimum TTL
@ NS ns1.example.com.
@ NS ns2.example.com.
ns1 A 46.23.88.178
ns2 A 140.82.28.210
@ MX 10 smtp.example.com.
@ MX 20 smtp.example.com.
@ A 46.23.88.178
www A 46.23.88.178
EOF
#
# rcctl enable nsd
# rcctl start nsd
nsd (ok)
# dig +short example.com NS @127.0.0.1
ns1.example.com.
ns2.example.com.
#
Update nameservers ns1.example.com and their IP addreses (for
glue records) at your domain registrar. Your mail server should
accept mail for hostmaster@example.com.
Verify your setup with zonemaster.net.
Edit the zone file and increment the serial on ns1,
copy the zone file to ns2, reload nsd(8) on ns1 and ns2.
# rcctl reload nsd nsd(ok) #© roman zolotarev