0:00–0:10
Recap
0:10–1:50
Lab 4B
1:50–2:00
Debrief
0:00 – 0:10Recap · 10 min

Verify BIND9 is running with both views loaded

0:10 – 1:50Lab 4B · 100 min

Lab 4B — Verify split responses, test recursion, update zone content per view

Part 1 — Verify internal view response from S2 (20 min)

Part 2 — Verify external view response from Windows host (20 min)

Part 3 — Update zone content to reflect view differences (25 min)

Part 4 — Secondary DNS with views (35 min)

Lab 4B complete when: dig from S2 returns internal IP for s1.yourname.net. nslookup from Windows host returns external IP. Recursive query from Windows host returns REFUSED/SERVFAIL. Internal-only DNS record visible from S2, invisible from Windows host. S2 secondary transfer working with view structure.
1:50 – 2:00Debrief · 10 min

Learning outcomes — by end of Day 2, students can…

Verify split-horizon responsesUse dig and nslookup from both internal and external clients to confirm different IPs are returned based on source IP
Explain recursion no security benefitDescribe why disabling recursion on the external view prevents DNS amplification attacks
Maintain per-view zone contentAdd records to the appropriate zone file and verify they are visible only from the expected client perspective
Configure secondary DNS with viewsStructure secondary zone declarations inside view blocks on S2 to match the primary's view structure

Common issues and fixes

IssueLikely causeFix
Both S2 and Windows host get the same responseBoth views' zone files have the same records, or the ACL doesn't cover S2's IPVerify the internal zone file has 192.168.50.1 for s1 and the external has 172.17.x.x. Check that S2's IP is in the internal-nets ACL
Recursive query from Windows host succeeds (should fail)recursion no not set in external view, or external view is inside a recursion yes blockVerify the external view block contains recursion no; at the view level, not just inside a zone
S2 zone transfer fails after view migrationS2's zone declaration is still outside a view block, which conflicts with the primary now using viewsS2's named.conf.local must also use view blocks with its secondary declarations inside them
← Day 1 Lab 4B Handout Day 3 →