1.7 Addresses, DNS records and reservations
This is the step the previous modules set up. In SpatiumDDI, allocating an address is what creates its DNS records, and giving it the status static_dhcp is what creates its DHCP reservation. Because one record drives all three, the address list, the DNS zone and the DHCP server stay in step, and when they don’t, the subnet shows you where. You’ll name Ridgeline’s library printer, check the whole subnet against DNS with Sync DNS, and reserve an address for a security camera.
What you’ll learn
Section titled “What you’ll learn”- Allocate the next free address or a specific one, and choose its status and role
- Explain which DNS records an allocation creates, and check them with
dig - Read the DNS column and fix drift with Sync DNS
- Reserve an address for a device with
static_dhcpand its MAC address
Video and walkthrough
Section titled “Video and walkthrough”The video allocates print-01, follows its records into the zone, checks the subnet with Sync → DNS (the gateway’s PTR is already there), and reserves 10.20.21.20 for cam-01. The walkthrough replays the same clicks.
Transcript
0:00Module 1.7: addresses, DNS records and reservations. You'll give Ridgeline's library printer a name and an address, watch SpatiumDDI publish its DNS records, check them against DNS in one click, and reserve an address for a security camera.
0:18Open Staff VLAN 21 and choose Allocate IP. Pick Specific IP, enter 10.20.21.10, then the host name print-01. The DNS zone is inherited from the block, so the form already knows the full name it will publish. Add a description, and allocate.
0:36The new row shows its DNS status as in sync. Behind it, SpatiumDDI wrote an A record for print-01 into corp.example.edu, and a PTR record into the reverse zone, and sent both to BIND9 as dynamic updates, with no reload.
0:55Back on the subnet, look at the gateway row. SpatiumDDI published the gateway's reverse record when it created the subnet, and skipped a forward record on purpose, since every subnet would otherwise publish one. To check a whole subnet against DNS at any time, open Sync, then DNS. It previews exactly what it would write, and nothing more. Here there's nothing to do: the subnet is in sync.
1:21Now a device that uses DHCP but must always get the same address: a security camera. Allocate 10.20.21.20 as cam-01, enter its MAC address, and set the status to static_dhcp. There's no scope to pick: the reservation goes on the subnet's scope automatically. One save creates the IPAM record, the DNS records, and the Kea reservation.
1:45The address list marks cam-01 as a reservation. Over in DHCP, it also appears among the group's static assignments, already delivered to Kea, so the camera gets the same address every time it asks.
1:58Ridgeline's printer and camera are now fully managed: addresses, names in both directions, and a DHCP reservation. From a terminal, dig confirms it: print-01 resolves to 10.20.21.10, and the reverse lookup returns the name. Next: everyday IPAM at speed.

Allocating an address
Section titled “Allocating an address”Allocate IP on the subnet opens Allocate IP Address. So does a click on one of the green free-range rows in the address table: once print-01 and cam-01 exist, “10.20.21.11 – 10.20.21.19 · 9 free · click to allocate” sits between them. First, choose how the address is picked:
- Next available takes the lowest free address and shows it before you save. It skips the placeholder rows, addresses already in use, and every dynamic DHCP pool, and two people allocating at the same moment never get the same address.
- Specific IP takes the address you type. Use it when the address is part of your plan, as
.10is for Ridgeline’s printer.
Then describe the address. Hostname is required, because together with the subnet’s DNS zone it’s what creates the DNS records. Write a description too; search matches descriptions (module 1.8). Type / Status says what the address is doing:
| Status | Use it for |
|---|---|
allocated |
An address you assign by hand |
reserved |
Holding an address for later, optionally until a date when it’s freed again |
static_dhcp |
A DHCP reservation: it needs the device’s MAC address, and the subnet needs a DHCP scope |
deprecated |
A decommissioned address you keep on record |
dhcp |
A dynamic lease. Rows mirrored from a lease are locked: change the lease or reservation at its source |
The quick reference lists every status, including orphan and discovered. Separately from the status, Role says what kind of address it is, for example host, gateway, loopback, secondary, bmc (a baseboard management controller such as iDRAC or iLO), or web, api and lb for addresses that serve TLS. The shared roles anycast, vip and vrrp turn off MAC-collision warnings, because one MAC legitimately answers for several addresses there; the dialog says so when you pick one.
If the name already exists in the zone, or the MAC is already on record, the save stops with a warning and the button becomes Allocate anyway. Read the warning before you override it; the IPAM tips explain when a duplicate is deliberate.
Addresses don’t go to Trash. Deleting one offers Mark as Orphan, which you can undo later, or Delete Permanently, which also removes the address’s DNS records and reservation.
From address to DNS records
Section titled “From address to DNS records”When you save an address with a hostname, SpatiumDDI writes two records:
- an A record (AAAA for IPv6) in the subnet’s forward zone:
print-01.corp.example.edu→10.20.21.10; - a PTR record in the most specific reverse zone that covers the address:
10.20.21.10→print-01.corp.example.edu, in Staff VLAN 21’s own21.20.10.in-addr.arpa(module 1.5).
The form previews the full name it will publish before you save, because the subnet inherits corp.example.edu from the block. Both records reach BIND9 as RFC 2136 dynamic updates, with no reload, and the new row’s DNS column shows it’s in sync.
DNS Aliases on the same form (Add alias) add extra records for the address: a CNAME points at its hostname, and an A record points at the address. They’re withdrawn while the address is an orphan, come back when you restore it, and are deleted with it; the subnet’s Aliases tab lists them. Module 3.1 traces one change through every step in How SpatiumDDI works.
Sync DNS: keep IPAM and DNS in step
Section titled “Sync DNS: keep IPAM and DNS in step”IPAM knows which records every address should have. The address table’s DNS column compares that with SpatiumDDI’s DNS data and shows each row as in sync (green) or out of sync (amber). The gateway row reads forward DNS skipped instead: a host named exactly gateway gets a PTR record but no A record, so the gateways of all your subnets don’t collide on gateway.corp.example.edu. Its PTR record was published when you created the subnet.
When anything in the subnet is out of sync, an amber banner above the tabs counts it and offers Open Sync DNS. The same report is under Sync → DNS in the subnet header, and blocks and spaces have a Sync DNS button that covers every subnet beneath them. The report sorts drift into three kinds:
| Kind | What it means | What applying does |
|---|---|---|
| Missing in DNS | IPAM expects a record that DNS doesn’t have | Creates it |
| Mismatched | The record exists with a different value | Rewrites it to match IPAM |
| Stale records | An auto-generated record that no address in the subnet calls for any more | Deletes it, if you tick it: stale rows start unticked |
It’s a preview: each row has a checkbox, nothing changes until you click Apply, and rows you leave unticked aren’t written. When nothing has drifted, it reads “✓ In sync — no drift detected.” and offers only Re-check and Close. To run the same reconciliation on a schedule, turn on IPAM → DNS Reconciliation in Settings; it’s off by default.
Reservations: a fixed address over DHCP
Section titled “Reservations: a fixed address over DHCP”Some devices use DHCP but must always get the same address: cameras, printers, anything a firewall rule points at. In SpatiumDDI you create the reservation where you create the address. Allocate it with the status static_dhcp and the device’s MAC address, and one save creates:
- the IPAM row, with a Reservation badge in the address table;
- the A and PTR records, as for any named address;
- the Kea reservation, listed under DHCP → the group → Static Assignments and delivered to Kea through its configuration long-poll.
There’s no scope to choose: SpatiumDDI puts the reservation on the subnet’s DHCP scope. If the subnet has none yet, the dialog says so and offers Create a scope. The same sync runs when you edit an address later: changing a row to static_dhcp creates its reservation, changing its MAC or hostname updates the reservation, and changing the status away from static_dhcp removes it.
Know the rules before you depend on a reservation:
- A blank MAC is refused (HTTP 422), and nothing is created.
- With no DHCP scope on the subnet, or more than one, the address is created without a reservation, and SpatiumDDI tells you why. Create exactly one scope first (module 1.6).
- Creating or changing a reservation needs
writeondhcp_static, and removing one needsdelete; the built-in DHCP Editor role has both. Without the grant, the address is saved but the reservation isn’t, and SpatiumDDI says so. Deleting a reserved address withoutdeleteondhcp_staticis refused. - A MAC can be reserved only once per server group, and the reserved address must be inside the scope’s subnet. A reservation inside a dynamic pool is allowed: Kea won’t lease that address to anyone else.
The DHCP tips and the troubleshooting playbook cover what to check when a reservation doesn’t reach Kea.
Hands-on lab
Section titled “Hands-on lab”Name the printer, check DNS, reserve the camera
You will:
- Allocate 10.20.21.10 as print-01 and watch its A and PTR records appear
- Check with Sync DNS that the subnet's records are all published
- Reserve 10.20.21.20 for cam-01 with static_dhcp and its MAC address
- Check all three names with dig
Before you start: Labs 3 and 4 are done: Staff VLAN 21 has its reverse zone 21.20.10.in-addr.arpa and its DHCP scope.
-
In IPAM, open
10.20.21.0/24and click Allocate IP. -
Choose Specific IP and enter
10.20.21.10. Enter the Hostnameprint-01, and check that the form previewsprint-01.corp.example.edu. -
Enter the Description “Library printer” and click Allocate. The new row’s DNS column shows it’s in sync.
-
Go to DNS, open the
defaultgroup and its Zones tab, and opencorp.example.edu. Findprint-01in the record list. -
Back on the subnet, find the gateway row,
10.20.21.1. Its DNS column reads forward DNS skipped: SpatiumDDI published the gateway’s PTR record when you created the subnet, and no A record on purpose. -
Open Sync and choose DNS. The preview reads “✓ In sync — no drift detected.”: the printer’s records and the gateway’s PTR are all published. Click Close.
-
Click Allocate IP again and choose Specific IP. Enter
10.20.21.20, the Hostnamecam-01and the MAC Address52:54:00:12:34:56. -
Set Type / Status to
static_dhcpand click Allocate. There’s no scope to pick: SpatiumDDI puts the reservation on the subnet’s scope, and the new row is marked Reservation. -
Go to DHCP, open the
defaultgroup and its Static Assignments tab, and findcam-01’s MAC address and IP address. -
In a terminal, check the printer’s A and PTR records and the gateway’s PTR record. Expect
10.20.21.10,print-01.corp.example.edu.andgateway.corp.example.edu..Terminal window dig @127.0.0.1 -p 1053 +short print-01.corp.example.edudig @127.0.0.1 -p 1053 +short -x 10.20.21.10dig @127.0.0.1 -p 1053 +short -x 10.20.21.1
./lab/check.sh 5Knowledge check
Section titled “Knowledge check”Go deeper
Section titled “Go deeper”- IPAM features: address statuses (§5), roles (§15.14), collision warnings (§15.11), dynamic pools (§15.12) and allocation rules (§16)
- DHCP features §3: static assignments, the IPAM workflow, the
dhcp_staticpermission and the “nothing happened” traps - DNS features §4 and §14: which reverse zone takes a PTR, what Sync DNS writes, and the scheduled IPAM → DNS and zone ↔ server reconciliation jobs
- Getting Started, step 10: addresses, and troubleshooting the first IP
- GitHub issues #1150 (the gateway PTR at creation), #1628 (reservations synced from every IPAM path) and #2101 (no forward record for
gateway) - GitHub issue #476: the MAC-format report behind the field note