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: 30 8 ; at least one second, so we can time skip past the timer in the 9 ; testbound script steps, but also reply within the time. 10 serve-expired-client-timeout: 1200 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 18 cachedb: 19 backend: "testframe" 20 secret-seed: "testvalue" 21 cachedb-check-when-serve-expired: yes 22 23 stub-zone: 24 name: "." 25 stub-addr: 193.0.14.129 26 CONFIG_END 27 28 SCENARIO_BEGIN Test cachedb, subnet and serve-expired, with a domain change from global to subnet with serve-expired-client-timeout enabled. 29 ; So the CNAME first points to a global record, then points to a subnet record. 30 31 ; K.ROOT-SERVERS.NET. 32 RANGE_BEGIN 0 400 33 ADDRESS 193.0.14.129 34 ENTRY_BEGIN 35 MATCH opcode qtype qname 36 ADJUST copy_id 37 REPLY QR NOERROR 38 SECTION QUESTION 39 . IN NS 40 SECTION ANSWER 41 . IN NS K.ROOT-SERVERS.NET. 42 SECTION ADDITIONAL 43 K.ROOT-SERVERS.NET. IN A 193.0.14.129 44 ENTRY_END 45 46 ENTRY_BEGIN 47 MATCH opcode subdomain 48 ADJUST copy_id copy_query 49 REPLY QR NOERROR 50 SECTION QUESTION 51 com. IN NS 52 SECTION AUTHORITY 53 com. IN NS a.gtld-servers.net. 54 SECTION ADDITIONAL 55 a.gtld-servers.net. IN A 192.5.6.30 56 ENTRY_END 57 RANGE_END 58 59 ; a.gtld-servers.net. 60 RANGE_BEGIN 0 400 61 ADDRESS 192.5.6.30 62 ENTRY_BEGIN 63 MATCH opcode subdomain 64 ADJUST copy_id copy_query 65 REPLY QR NOERROR 66 SECTION QUESTION 67 example.com. IN NS 68 SECTION AUTHORITY 69 example.com. IN NS ns2.example.com. 70 SECTION ADDITIONAL 71 ns2.example.com. IN A 1.2.3.5 72 ENTRY_END 73 74 ENTRY_BEGIN 75 MATCH opcode subdomain 76 ADJUST copy_id copy_query 77 REPLY QR NOERROR 78 SECTION QUESTION 79 foo.com. IN NS 80 SECTION AUTHORITY 81 foo.com. IN NS ns.foo.com. 82 SECTION ADDITIONAL 83 ns.foo.com. IN A 1.2.3.4 84 ENTRY_END 85 86 ENTRY_BEGIN 87 MATCH opcode subdomain 88 ADJUST copy_id copy_query 89 REPLY QR NOERROR 90 SECTION QUESTION 91 initial.com. IN NS 92 SECTION AUTHORITY 93 initial.com. IN NS ns.initial.com. 94 SECTION ADDITIONAL 95 ns.initial.com. IN A 1.2.3.6 96 ENTRY_END 97 RANGE_END 98 99 ; ns2.example.com. 100 RANGE_BEGIN 0 30 101 ADDRESS 1.2.3.5 102 ENTRY_BEGIN 103 MATCH opcode qname qtype 104 REPLY QR AA NOERROR 105 SECTION QUESTION 106 www.example.com. IN A 107 SECTION ANSWER 108 www.example.com. 10 IN CNAME www.initial.com. 109 ENTRY_END 110 RANGE_END 111 112 ; ns2.example.com. - after change 113 RANGE_BEGIN 40 100 114 ADDRESS 1.2.3.5 115 ENTRY_BEGIN 116 MATCH opcode qname qtype 117 REPLY QR AA NOERROR 118 SECTION QUESTION 119 www.example.com. IN A 120 SECTION ANSWER 121 www.example.com. 10 IN CNAME example.foo.com. 122 ENTRY_END 123 RANGE_END 124 125 ; ns.initial.com. 126 RANGE_BEGIN 0 400 127 ADDRESS 1.2.3.6 128 ENTRY_BEGIN 129 MATCH opcode qname qtype 130 REPLY QR AA NOERROR 131 SECTION QUESTION 132 www.initial.com. IN A 133 SECTION ANSWER 134 www.initial.com. 10 IN A 1.2.3.4 135 ENTRY_END 136 RANGE_END 137 138 ; ns.foo.com. 139 RANGE_BEGIN 40 100 140 ADDRESS 1.2.3.4 141 ENTRY_BEGIN 142 MATCH opcode qname qtype ednsdata 143 REPLY QR AA NOERROR 144 SECTION QUESTION 145 example.foo.com. IN A 146 SECTION ANSWER 147 example.foo.com. 10 IN A 1.2.3.5 148 SECTION ADDITIONAL 149 HEX_EDNSDATA_BEGIN 150 ; client is 127.0.0.1 151 00 08 ; OPC 152 00 07 ; option length 153 00 01 ; Family 154 11 00 ; source mask, scopemask 155 7f 00 00 ; address 156 HEX_EDNSDATA_END 157 ENTRY_END 158 RANGE_END 159 160 ; make time not 0 161 STEP 2 TIME_PASSES ELAPSE 212 162 163 ; Get an entry in cache. 164 STEP 4 QUERY 165 ENTRY_BEGIN 166 REPLY RD 167 SECTION QUESTION 168 www.example.com. IN A 169 ENTRY_END 170 171 ; get the answer for it 172 STEP 10 CHECK_ANSWER 173 ENTRY_BEGIN 174 MATCH all ttl 175 REPLY QR RD RA NOERROR 176 SECTION QUESTION 177 www.example.com. IN A 178 SECTION ANSWER 179 www.example.com. 10 IN CNAME www.initial.com. 180 www.initial.com. 10 IN A 1.2.3.4 181 ENTRY_END 182 183 ; now valid in cache and valid in cachedb, without subnet. 184 STEP 30 TIME_PASSES ELAPSE 20 185 186 ; now the cache and cachedb have an expired entry. 187 ; the upstream is updated to CNAME to a subnet zone A record. 188 189 STEP 40 QUERY ADDRESS 127.0.0.1 190 ENTRY_BEGIN 191 REPLY RD 192 SECTION QUESTION 193 www.example.com. IN A 194 ENTRY_END 195 196 ; this answer is returned by the subnet lookup within 197 ; the serve-expired-client-timeout. 198 STEP 50 CHECK_ANSWER 199 ENTRY_BEGIN 200 MATCH all ttl 201 REPLY QR RD RA NOERROR 202 SECTION QUESTION 203 www.example.com. IN A 204 SECTION ANSWER 205 www.example.com. 10 IN CNAME example.foo.com. 206 example.foo.com. 10 IN A 1.2.3.5 207 ENTRY_END 208 209 ; check that subnet has the query in cache. 210 STEP 58 TIME_PASSES ELAPSE 2 211 STEP 60 QUERY ADDRESS 127.0.0.1 212 ENTRY_BEGIN 213 REPLY RD 214 SECTION QUESTION 215 www.example.com. IN A 216 ENTRY_END 217 218 STEP 70 CHECK_ANSWER 219 ENTRY_BEGIN 220 MATCH all 221 REPLY QR RD RA NOERROR 222 SECTION QUESTION 223 www.example.com. IN A 224 SECTION ANSWER 225 www.example.com. 8 IN CNAME example.foo.com. 226 example.foo.com. 8 IN A 1.2.3.5 227 ENTRY_END 228 229 SCENARIO_END 230