1; config options 2server: 3 target-fetch-policy: "0 0 0 0 0" 4 qname-minimisation: "no" 5 module-config: "dns64 validator iterator" 6 dns64-prefix: 64:ff9b::0/96 7 dns64-ignore-aaaa: ip6ignore.example.com 8 dns64-ignore-aaaa: ip6only.example.com 9 minimal-responses: no 10 11stub-zone: 12 name: "." 13 stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. 14CONFIG_END 15 16SCENARIO_BEGIN Test dns64 lookup and synthesis. 17; normal A lookup should still succeed 18; AAAA is synthesized if not present. 19; AAAA if present, is passed through unchanged. 20; AAAA if present (but configured to be ignored) but no A, AAAA is passed through unchanged. 21 22; K.ROOT-SERVERS.NET. 23RANGE_BEGIN 0 200 24 ADDRESS 193.0.14.129 25ENTRY_BEGIN 26MATCH opcode qtype qname 27ADJUST copy_id 28REPLY QR NOERROR 29SECTION QUESTION 30. IN NS 31SECTION ANSWER 32. IN NS K.ROOT-SERVERS.NET. 33SECTION ADDITIONAL 34K.ROOT-SERVERS.NET. IN A 193.0.14.129 35ENTRY_END 36 37ENTRY_BEGIN 38MATCH opcode qtype qname 39ADJUST copy_id 40REPLY QR NOERROR 41SECTION QUESTION 42www.example.com. IN A 43SECTION AUTHORITY 44com. IN NS a.gtld-servers.net. 45SECTION ADDITIONAL 46a.gtld-servers.net. IN A 192.5.6.30 47ENTRY_END 48 49ENTRY_BEGIN 50MATCH opcode subdomain 51ADJUST copy_id copy_query 52REPLY QR NOERROR 53SECTION QUESTION 547.6.5.in-addr.arpa. IN A 55SECTION AUTHORITY 567.6.5.in-addr.arpa. IN NS ns.example.com. 57SECTION ADDITIONAL 58ns.example.com. IN A 1.2.3.4 59ENTRY_END 60 61RANGE_END 62 63; a.gtld-servers.net. 64RANGE_BEGIN 0 200 65 ADDRESS 192.5.6.30 66ENTRY_BEGIN 67MATCH opcode qtype qname 68ADJUST copy_id 69REPLY QR NOERROR 70SECTION QUESTION 71com. IN NS 72SECTION ANSWER 73com. IN NS a.gtld-servers.net. 74SECTION ADDITIONAL 75a.gtld-servers.net. IN A 192.5.6.30 76ENTRY_END 77 78ENTRY_BEGIN 79MATCH opcode qtype qname 80ADJUST copy_id 81REPLY QR NOERROR 82SECTION QUESTION 83www.example.com. IN A 84SECTION AUTHORITY 85example.com. IN NS ns.example.com. 86SECTION ADDITIONAL 87ns.example.com. IN A 1.2.3.4 88ENTRY_END 89RANGE_END 90 91; ns.example.com. 92RANGE_BEGIN 0 200 93 ADDRESS 1.2.3.4 94ENTRY_BEGIN 95MATCH opcode qtype qname 96ADJUST copy_id 97REPLY QR NOERROR 98SECTION QUESTION 99example.com. IN NS 100SECTION ANSWER 101example.com. IN NS ns.example.com. 102SECTION ADDITIONAL 103ns.example.com. IN A 1.2.3.4 104ENTRY_END 105 106ENTRY_BEGIN 107MATCH opcode qtype qname 108ADJUST copy_id 109REPLY QR NOERROR 110SECTION QUESTION 111www.example.com. IN A 112SECTION ANSWER 113www.example.com. IN A 10.20.30.40 114SECTION AUTHORITY 115example.com. IN NS ns.example.com. 116SECTION ADDITIONAL 117ns.example.com. IN A 1.2.3.4 118ENTRY_END 119 120ENTRY_BEGIN 121MATCH opcode qtype qname 122ADJUST copy_id 123REPLY QR NOERROR 124SECTION QUESTION 125ip4.example.com. IN AAAA 126SECTION ANSWER 127; NO AAAA present 128SECTION AUTHORITY 129example.com. IN SOA a. b. 1 2 3 4 5 130ENTRY_END 131 132ENTRY_BEGIN 133MATCH opcode qtype qname 134ADJUST copy_id 135REPLY QR NOERROR 136SECTION QUESTION 137ip4.example.com. IN A 138SECTION ANSWER 139ip4.example.com. IN A 5.6.7.8 140SECTION AUTHORITY 141example.com. IN NS ns.example.com. 142SECTION ADDITIONAL 143ns.example.com. IN A 1.2.3.4 144ENTRY_END 145 146ENTRY_BEGIN 147MATCH opcode qtype qname 148ADJUST copy_id 149REPLY QR NOERROR 150SECTION QUESTION 151ip6.example.com. IN AAAA 152SECTION ANSWER 153ip6.example.com. IN AAAA 1:2:3::4 154SECTION AUTHORITY 155example.com. IN NS ns.example.com. 156SECTION ADDITIONAL 157ns.example.com. IN A 1.2.3.4 158ENTRY_END 159 160ENTRY_BEGIN 161MATCH opcode qtype qname 162ADJUST copy_id 163REPLY QR NOERROR 164SECTION QUESTION 165ip6ignore.example.com. IN AAAA 166SECTION ANSWER 167ip6ignore.example.com. IN AAAA 1:2:3::4 168SECTION AUTHORITY 169example.com. IN NS ns.example.com. 170SECTION ADDITIONAL 171ns.example.com. IN A 1.2.3.4 172ENTRY_END 173 174ENTRY_BEGIN 175MATCH opcode qtype qname 176ADJUST copy_id 177REPLY QR NOERROR 178SECTION QUESTION 179ip6ignore.example.com. IN A 180SECTION ANSWER 181ip6ignore.example.com. IN A 5.6.7.8 182SECTION AUTHORITY 183example.com. IN NS ns.example.com. 184SECTION ADDITIONAL 185ns.example.com. IN A 1.2.3.4 186ENTRY_END 187 188ENTRY_BEGIN 189MATCH opcode qtype qname 190ADJUST copy_id 191REPLY QR NOERROR 192SECTION QUESTION 193ip6only.example.com. IN AAAA 194SECTION ANSWER 195ip6only.example.com. IN AAAA 1:2:3::4 196SECTION AUTHORITY 197example.com. IN NS ns.example.com. 198SECTION ADDITIONAL 199ns.example.com. IN A 1.2.3.4 200ENTRY_END 201 202ENTRY_BEGIN 203MATCH opcode qtype qname 204ADJUST copy_id 205REPLY QR NOERROR 206SECTION QUESTION 207ip6only.example.com. IN A 208SECTION ANSWER 209; NO A present 210SECTION AUTHORITY 211example.com. IN SOA a. b. 1 2 3 4 5 212ENTRY_END 213 214 215ENTRY_BEGIN 216MATCH opcode qtype qname 217ADJUST copy_id 218REPLY QR NOERROR 219SECTION QUESTION 2208.7.6.5.in-addr.arpa. IN PTR 221SECTION ANSWER 2228.7.6.5.in-addr.arpa. PTR ip4.example.com. 223SECTION AUTHORITY 2247.6.5.in-addr.arpa. IN NS ns.example.com. 225ENTRY_END 226 227RANGE_END 228 229STEP 1 QUERY 230ENTRY_BEGIN 231REPLY RD 232SECTION QUESTION 233www.example.com. IN A 234ENTRY_END 235 236; recursion happens here. 237STEP 10 CHECK_ANSWER 238ENTRY_BEGIN 239MATCH all 240REPLY QR RD RA NOERROR 241SECTION QUESTION 242www.example.com. IN A 243SECTION ANSWER 244www.example.com. IN A 10.20.30.40 245SECTION AUTHORITY 246example.com. IN NS ns.example.com. 247SECTION ADDITIONAL 248ns.example.com. IN A 1.2.3.4 249ENTRY_END 250 251; synthesize from A record 5.6.7.8 252STEP 20 QUERY 253ENTRY_BEGIN 254REPLY RD 255SECTION QUESTION 256ip4.example.com. IN AAAA 257ENTRY_END 258 259; recursion happens here. 260STEP 30 CHECK_ANSWER 261ENTRY_BEGIN 262MATCH all 263REPLY QR RD RA NOERROR 264SECTION QUESTION 265ip4.example.com. IN AAAA 266SECTION ANSWER 267ip4.example.com. IN AAAA 64:ff9b::506:708 268SECTION AUTHORITY 269example.com. IN NS ns.example.com. 270SECTION ADDITIONAL 271ns.example.com. IN A 1.2.3.4 272ENTRY_END 273 274; this node has its own ipv6 address 275STEP 40 QUERY 276ENTRY_BEGIN 277REPLY RD 278SECTION QUESTION 279ip6.example.com. IN AAAA 280ENTRY_END 281 282; recursion happens here. 283STEP 50 CHECK_ANSWER 284ENTRY_BEGIN 285MATCH all 286REPLY QR RD RA NOERROR 287SECTION QUESTION 288ip6.example.com. IN AAAA 289SECTION ANSWER 290ip6.example.com. IN AAAA 1:2:3::4 291SECTION AUTHORITY 292example.com. IN NS ns.example.com. 293SECTION ADDITIONAL 294ns.example.com. IN A 1.2.3.4 295ENTRY_END 296 297; test ptr lookup 298STEP 60 QUERY 299ENTRY_BEGIN 300REPLY RD 301SECTION QUESTION 3028.0.7.0.6.0.5.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.b.9.f.f.4.6.0.0.ip6.arpa. IN PTR 303ENTRY_END 304 305; recursion happens here. 306STEP 70 CHECK_ANSWER 307ENTRY_BEGIN 308MATCH all 309REPLY QR RD RA NOERROR 310SECTION QUESTION 3118.0.7.0.6.0.5.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.b.9.f.f.4.6.0.0.ip6.arpa. IN PTR 312SECTION ANSWER 3138.0.7.0.6.0.5.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.b.9.f.f.4.6.0.0.ip6.arpa. IN PTR ip4.example.com. 314SECTION AUTHORITY 3157.6.5.in-addr.arpa. IN NS ns.example.com. 316ENTRY_END 317 318; ignore AAAA and synthesize from A record 5.6.7.8 319STEP 80 QUERY 320ENTRY_BEGIN 321REPLY RD 322SECTION QUESTION 323ip6ignore.example.com. IN AAAA 324ENTRY_END 325 326; recursion happens here. 327STEP 90 CHECK_ANSWER 328ENTRY_BEGIN 329MATCH all 330REPLY QR RD RA NOERROR 331SECTION QUESTION 332ip6ignore.example.com. IN AAAA 333SECTION ANSWER 334ip6ignore.example.com. IN AAAA 64:ff9b::506:708 335SECTION AUTHORITY 336example.com. IN NS ns.example.com. 337SECTION ADDITIONAL 338ns.example.com. IN A 1.2.3.4 339ENTRY_END 340 341; try to ignore AAAA but no A record to synthesize, fallback to AAAA 342STEP 100 QUERY 343ENTRY_BEGIN 344REPLY RD 345SECTION QUESTION 346ip6only.example.com. IN AAAA 347ENTRY_END 348 349; recursion happens here. 350STEP 110 CHECK_ANSWER 351ENTRY_BEGIN 352MATCH all 353REPLY QR RD RA NOERROR 354SECTION QUESTION 355ip6only.example.com. IN AAAA 356SECTION ANSWER 357ip6only.example.com. IN AAAA 1:2:3::4 358SECTION AUTHORITY 359example.com. IN NS ns.example.com. 360SECTION ADDITIONAL 361ns.example.com. IN A 1.2.3.4 362ENTRY_END 363 364SCENARIO_END 365