DEPLOY-2026-02-14 BIND DNS HA Cluster
2. Deployment Information
| Field | Value |
|---|---|
Deployment Date |
2026-02-14 (bind-01), 2026-02-17 (bind-02) |
Previous State |
FreeIPA DNS (tightly coupled to identity) |
Target State |
Standalone BIND DNS with HA replication |
Deployment Window |
2 hours per node |
Rollback Plan |
Revert VyOS DNS forwarding to FreeIPA |
Affected Systems |
All DNS resolution (gradual migration) |
3. Infrastructure Deployed
| Component | Primary | Secondary |
|---|---|---|
Hostname |
bind-01.inside.domusdigitalis.dev |
bind-02.inside.domusdigitalis.dev |
IP Address |
10.50.1.90 |
10.50.1.91 |
Hypervisor |
kvm-01 |
kvm-02 |
Zone Role |
Master (authoritative) |
Slave (zone transfer) |
Zone |
inside.domusdigitalis.dev |
|
4. Architecture
| Component | Configuration |
|---|---|
Zone Type |
Authoritative for internal domain |
Replication |
IXFR/AXFR zone transfers (notify) |
Update Method |
nsupdate (dynamic DNS) |
Forwarding |
External queries → upstream resolvers |
Clients |
VyOS DNS forwarding, DHCP clients |
5. Deployment Phases
5.1. bind-01 (Primary)
| Phase | Description | Key Steps |
|---|---|---|
1 |
Download Cloud Image |
Rocky 9 GenericCloud, SHA256 verification |
2 |
cloud-init Configuration |
meta-data, user-data, network-config |
3-4 |
VM Creation |
Disk resize, virt-install, libvirt |
5 |
VM Verification |
SSH connectivity, hostname |
6 |
DNS & DHCP |
Static reservation in VyOS |
7 |
Workstation Prerequisites |
SSH config, known_hosts |
8 |
Configure BIND |
named.conf, zone files, RNDC key |
9 |
Start BIND |
Enable/start named, firewalld rules |
10 |
Test DNS |
dig queries, zone validation |
11 |
VyOS Integration |
DNS forwarding to BIND |
5.2. bind-02 (Secondary)
| Phase | Description |
|---|---|
1-5 |
VM creation (same as bind-01) |
6 |
Slave zone configuration |
7 |
Zone transfer from master |
8 |
Notification testing |
6. Validation Results
| Test | Result | Evidence |
|---|---|---|
Forward DNS lookup |
✅ PASS |
|
Reverse DNS lookup |
✅ PASS |
|
Zone transfer |
✅ PASS |
bind-02 received zone from bind-01 |
nsupdate dynamic update |
✅ PASS |
A record added successfully |
VyOS forwarding |
✅ PASS |
DHCP clients resolve via VyOS → BIND |
Failover test |
✅ PASS |
bind-01 down, bind-02 continues serving |
7. Lessons Learned
| Category | Lesson |
|---|---|
Separation of Concerns |
DNS should be independent of identity. FreeIPA DNS created circular dependency issues. |
Zone Transfer |
Use |
cloud-init |
Network config must match actual interface names (eth0 on Rocky cloud images). |
SELinux |
named_t context required for zone files. Use |
VyOS Integration |
|
8. Post-Deployment Status
| Item | Status |
|---|---|
bind-01 |
Operational, master zone |
bind-02 |
Operational, slave zone |
VyOS |
DNS forwarding configured |
FreeIPA |
DNS disabled (identity-only mode) |
Documentation |
11-phase runbook + infrastructure records guide |