1 ; config options 2 server: 3 target-fetch-policy: "0 0 0 0 0" 4 qname-minimisation: no 5 minimal-responses: no 6 serve-expired: yes 7 serve-expired-reply-ttl: 123 8 9 ; disable the serve expired client timeout. 10 serve-expired-client-timeout: 0 11 send-client-subnet: 1.2.3.4 12 max-client-subnet-ipv4: 17 13 ; subnetcache is to the left of cachedb, because it sets no cache 14 ; store for edns subnet content for modules to the right of it. 15 ; this keeps subnet content out of cachedb as global content. 16 module-config: "subnetcache cachedb iterator" 17 ede: yes 18 ede-serve-expired: yes 19 20 cachedb: 21 backend: "testframe" 22 secret-seed: "testvalue" 23 cachedb-check-when-serve-expired: yes 24 25 stub-zone: 26 name: "." 27 stub-addr: 193.0.14.129 28 CONFIG_END 29 30 SCENARIO_BEGIN Test cachedb, subnet and serve-expired, with a domain change from global to subnet. 31 ; So the CNAME first points to a global record, then points to a subnet record. 32 33 ; K.ROOT-SERVERS.NET. 34 RANGE_BEGIN 0 400 35 ADDRESS 193.0.14.129 36 ENTRY_BEGIN 37 MATCH opcode qtype qname 38 ADJUST copy_id 39 REPLY QR NOERROR 40 SECTION QUESTION 41 . IN NS 42 SECTION ANSWER 43 . IN NS K.ROOT-SERVERS.NET. 44 SECTION ADDITIONAL 45 K.ROOT-SERVERS.NET. IN A 193.0.14.129 46 ENTRY_END 47 48 ENTRY_BEGIN 49 MATCH opcode subdomain 50 ADJUST copy_id copy_query 51 REPLY QR NOERROR 52 SECTION QUESTION 53 com. IN NS 54 SECTION AUTHORITY 55 com. IN NS a.gtld-servers.net. 56 SECTION ADDITIONAL 57 a.gtld-servers.net. IN A 192.5.6.30 58 ENTRY_END 59 RANGE_END 60 61 ; a.gtld-servers.net. 62 RANGE_BEGIN 0 400 63 ADDRESS 192.5.6.30 64 ENTRY_BEGIN 65 MATCH opcode subdomain 66 ADJUST copy_id copy_query 67 REPLY QR NOERROR 68 SECTION QUESTION 69 example.com. IN NS 70 SECTION AUTHORITY 71 example.com. IN NS ns2.example.com. 72 SECTION ADDITIONAL 73 ns2.example.com. IN A 1.2.3.5 74 ENTRY_END 75 76 ENTRY_BEGIN 77 MATCH opcode subdomain 78 ADJUST copy_id copy_query 79 REPLY QR NOERROR 80 SECTION QUESTION 81 foo.com. IN NS 82 SECTION AUTHORITY 83 foo.com. IN NS ns.foo.com. 84 SECTION ADDITIONAL 85 ns.foo.com. IN A 1.2.3.4 86 ENTRY_END 87 88 ENTRY_BEGIN 89 MATCH opcode subdomain 90 ADJUST copy_id copy_query 91 REPLY QR NOERROR 92 SECTION QUESTION 93 initial.com. IN NS 94 SECTION AUTHORITY 95 initial.com. IN NS ns.initial.com. 96 SECTION ADDITIONAL 97 ns.initial.com. IN A 1.2.3.6 98 ENTRY_END 99 RANGE_END 100 101 ; ns2.example.com. 102 RANGE_BEGIN 0 30 103 ADDRESS 1.2.3.5 104 ENTRY_BEGIN 105 MATCH opcode qname qtype 106 REPLY QR AA NOERROR 107 SECTION QUESTION 108 www.example.com. IN A 109 SECTION ANSWER 110 www.example.com. 200 IN CNAME www.initial.com. 111 ENTRY_END 112 RANGE_END 113 114 ; ns2.example.com. - after change 115 RANGE_BEGIN 40 80 116 ADDRESS 1.2.3.5 117 ENTRY_BEGIN 118 MATCH opcode qname qtype 119 REPLY QR AA NOERROR 120 SECTION QUESTION 121 www.example.com. IN A 122 SECTION ANSWER 123 www.example.com. 200 IN CNAME example.foo.com. 124 ENTRY_END 125 RANGE_END 126 127 ; ns.initial.com. 128 RANGE_BEGIN 0 400 129 ADDRESS 1.2.3.6 130 ENTRY_BEGIN 131 MATCH opcode qname qtype 132 REPLY QR AA NOERROR 133 SECTION QUESTION 134 www.initial.com. IN A 135 SECTION ANSWER 136 www.initial.com. 200 IN A 1.2.3.4 137 ENTRY_END 138 RANGE_END 139 140 ; ns.foo.com. 141 RANGE_BEGIN 40 80 142 ADDRESS 1.2.3.4 143 ENTRY_BEGIN 144 MATCH opcode qname qtype ednsdata 145 REPLY QR AA NOERROR 146 SECTION QUESTION 147 example.foo.com. IN A 148 SECTION ANSWER 149 example.foo.com. 200 IN A 1.2.3.5 150 SECTION ADDITIONAL 151 HEX_EDNSDATA_BEGIN 152 ; client is 127.0.0.1 153 00 08 ; OPC 154 00 07 ; option length 155 00 01 ; Family 156 11 00 ; source mask, scopemask 157 7f 00 00 ; address 158 HEX_EDNSDATA_END 159 ENTRY_END 160 RANGE_END 161 162 ; ns2.example.com. - later 163 RANGE_BEGIN 90 200 164 ADDRESS 1.2.3.5 165 ENTRY_BEGIN 166 MATCH opcode qname qtype 167 REPLY QR AA NOERROR 168 SECTION QUESTION 169 www.example.com. IN A 170 SECTION ANSWER 171 www.example.com. 200 IN CNAME example.foo.com. 172 ENTRY_END 173 RANGE_END 174 175 ; ns.foo.com. - later 176 RANGE_BEGIN 90 200 177 ADDRESS 1.2.3.4 178 ENTRY_BEGIN 179 MATCH opcode qname qtype ednsdata 180 REPLY QR AA NOERROR 181 SECTION QUESTION 182 example.foo.com. IN A 183 SECTION ANSWER 184 example.foo.com. 200 IN A 1.2.3.6 185 SECTION ADDITIONAL 186 HEX_EDNSDATA_BEGIN 187 ; client is 127.0.0.1 188 00 08 ; OPC 189 00 07 ; option length 190 00 01 ; Family 191 11 00 ; source mask, scopemask 192 7f 00 00 ; address 193 HEX_EDNSDATA_END 194 ENTRY_END 195 RANGE_END 196 197 ; make time not 0 198 STEP 2 TIME_PASSES ELAPSE 212 199 200 ; Get an entry in cache. 201 STEP 4 QUERY 202 ENTRY_BEGIN 203 REPLY RD 204 SECTION QUESTION 205 www.example.com. IN A 206 ENTRY_END 207 208 ; get the answer for it 209 STEP 10 CHECK_ANSWER 210 ENTRY_BEGIN 211 MATCH all ttl 212 REPLY QR RD RA NOERROR 213 SECTION QUESTION 214 www.example.com. IN A 215 SECTION ANSWER 216 www.example.com. 200 IN CNAME www.initial.com. 217 www.initial.com. 200 IN A 1.2.3.4 218 ENTRY_END 219 220 ; now valid in cache and valid in cachedb, without subnet. 221 STEP 30 TIME_PASSES ELAPSE 200 222 223 ; now the cache and cachedb have an expired entry. 224 ; the upstream is updated to CNAME to a subnet zone A record. 225 226 STEP 40 QUERY ADDRESS 127.0.0.1 227 ENTRY_BEGIN 228 REPLY RD DO 229 SECTION QUESTION 230 www.example.com. IN A 231 ENTRY_END 232 233 ; the expired answer, while the ECS answer is looked up. 234 STEP 50 CHECK_ANSWER 235 ENTRY_BEGIN 236 MATCH all ttl ede=3 237 REPLY QR RD RA DO NOERROR 238 SECTION QUESTION 239 www.example.com. IN A 240 SECTION ANSWER 241 www.example.com. 123 IN CNAME www.initial.com. 242 www.initial.com. 123 IN A 1.2.3.4 243 ENTRY_END 244 245 ; check that subnet has the query in cache. 246 STEP 58 TIME_PASSES ELAPSE 2 247 STEP 60 QUERY ADDRESS 127.0.0.1 248 ENTRY_BEGIN 249 REPLY RD 250 SECTION QUESTION 251 www.example.com. IN A 252 ENTRY_END 253 254 STEP 70 CHECK_ANSWER 255 ENTRY_BEGIN 256 MATCH all 257 REPLY QR RD RA NOERROR 258 SECTION QUESTION 259 www.example.com. IN A 260 SECTION ANSWER 261 www.example.com. 198 IN CNAME example.foo.com. 262 example.foo.com. 198 IN A 1.2.3.5 263 ENTRY_END 264 265 ; everything is expired, cache, subnetcache and cachedb. 266 STEP 80 TIME_PASSES ELAPSE 200 267 268 STEP 90 QUERY ADDRESS 127.0.0.1 269 ENTRY_BEGIN 270 REPLY RD 271 SECTION QUESTION 272 www.example.com. IN A 273 ENTRY_END 274 275 STEP 100 CHECK_ANSWER 276 ENTRY_BEGIN 277 MATCH all 278 REPLY QR RD RA NOERROR 279 SECTION QUESTION 280 www.example.com. IN A 281 SECTION ANSWER 282 www.example.com. 200 IN CNAME example.foo.com. 283 example.foo.com. 200 IN A 1.2.3.6 284 ENTRY_END 285 286 ; see the entry now in cache, from the subnetcache. 287 STEP 142 TIME_PASSES ELAPSE 2 288 STEP 150 QUERY ADDRESS 127.0.0.1 289 ENTRY_BEGIN 290 REPLY RD 291 SECTION QUESTION 292 www.example.com. IN A 293 ENTRY_END 294 295 STEP 160 CHECK_ANSWER 296 ENTRY_BEGIN 297 MATCH all 298 REPLY QR RD RA NOERROR 299 SECTION QUESTION 300 www.example.com. IN A 301 SECTION ANSWER 302 www.example.com. 198 IN CNAME example.foo.com. 303 example.foo.com. 198 IN A 1.2.3.6 304 ENTRY_END 305 306 SCENARIO_END 307