1*b2efd602SCy Schubert# config 2*b2efd602SCy Schubertserver: 3*b2efd602SCy Schubert send-client-subnet: 1.2.3.4 4*b2efd602SCy Schubert max-client-subnet-ipv4: 17 5*b2efd602SCy Schubert module-config: "subnetcache iterator" 6*b2efd602SCy Schubert qname-minimisation: no 7*b2efd602SCy Schubert minimal-responses: yes 8*b2efd602SCy Schubert target-fetch-policy: "0 0 0 0 0" 9*b2efd602SCy Schubert 10*b2efd602SCy Schubertstub-zone: 11*b2efd602SCy Schubert name: "." 12*b2efd602SCy Schubert stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. 13*b2efd602SCy SchubertCONFIG_END 14*b2efd602SCy Schubert 15*b2efd602SCy SchubertSCENARIO_BEGIN Test subnet with no edns subnet from server multiple times 16*b2efd602SCy Schubert; Multiple queries are sent to a server that does not reply with the 17*b2efd602SCy Schubert; edns-subnet option. 18*b2efd602SCy Schubert 19*b2efd602SCy Schubert; K.ROOT-SERVERS.NET. 20*b2efd602SCy SchubertRANGE_BEGIN 0 100 21*b2efd602SCy Schubert ADDRESS 193.0.14.129 22*b2efd602SCy SchubertENTRY_BEGIN 23*b2efd602SCy SchubertMATCH opcode qtype qname 24*b2efd602SCy SchubertADJUST copy_id 25*b2efd602SCy SchubertREPLY QR NOERROR 26*b2efd602SCy SchubertSECTION QUESTION 27*b2efd602SCy Schubert. IN NS 28*b2efd602SCy SchubertSECTION ANSWER 29*b2efd602SCy Schubert. IN NS K.ROOT-SERVERS.NET. 30*b2efd602SCy SchubertSECTION ADDITIONAL 31*b2efd602SCy SchubertK.ROOT-SERVERS.NET. IN A 193.0.14.129 32*b2efd602SCy SchubertENTRY_END 33*b2efd602SCy Schubert 34*b2efd602SCy SchubertENTRY_BEGIN 35*b2efd602SCy SchubertMATCH opcode subdomain 36*b2efd602SCy SchubertADJUST copy_id copy_query 37*b2efd602SCy SchubertREPLY QR NOERROR 38*b2efd602SCy SchubertSECTION QUESTION 39*b2efd602SCy Schubertcom. IN NS 40*b2efd602SCy SchubertSECTION AUTHORITY 41*b2efd602SCy Schubertcom. IN NS a.gtld-servers.net. 42*b2efd602SCy SchubertSECTION ADDITIONAL 43*b2efd602SCy Schuberta.gtld-servers.net. IN A 192.5.6.30 44*b2efd602SCy SchubertENTRY_END 45*b2efd602SCy SchubertRANGE_END 46*b2efd602SCy Schubert 47*b2efd602SCy Schubert; a.gtld-servers.net. 48*b2efd602SCy SchubertRANGE_BEGIN 0 100 49*b2efd602SCy Schubert ADDRESS 192.5.6.30 50*b2efd602SCy Schubert 51*b2efd602SCy SchubertENTRY_BEGIN 52*b2efd602SCy SchubertMATCH opcode subdomain 53*b2efd602SCy SchubertADJUST copy_id copy_query 54*b2efd602SCy SchubertREPLY QR NOERROR 55*b2efd602SCy SchubertSECTION QUESTION 56*b2efd602SCy Schubertexample.com. IN NS 57*b2efd602SCy SchubertSECTION AUTHORITY 58*b2efd602SCy Schubertexample.com. IN NS ns.example.com. 59*b2efd602SCy SchubertSECTION ADDITIONAL 60*b2efd602SCy Schubertns.example.com. IN A 1.2.3.4 61*b2efd602SCy SchubertENTRY_END 62*b2efd602SCy SchubertRANGE_END 63*b2efd602SCy Schubert 64*b2efd602SCy Schubert; ns.example.com. 65*b2efd602SCy SchubertRANGE_BEGIN 50 52 66*b2efd602SCy Schubert ADDRESS 1.2.3.4 67*b2efd602SCy Schubert 68*b2efd602SCy SchubertENTRY_BEGIN 69*b2efd602SCy SchubertMATCH opcode qtype qname 70*b2efd602SCy SchubertADJUST copy_id 71*b2efd602SCy SchubertREPLY QR AA NOERROR 72*b2efd602SCy SchubertSECTION QUESTION 73*b2efd602SCy Schubertexample.com. IN NS 74*b2efd602SCy SchubertSECTION ANSWER 75*b2efd602SCy Schubertexample.com. IN NS ns.example.com. 76*b2efd602SCy SchubertENTRY_END 77*b2efd602SCy Schubert 78*b2efd602SCy SchubertENTRY_BEGIN 79*b2efd602SCy SchubertMATCH opcode qtype qname 80*b2efd602SCy SchubertADJUST copy_id 81*b2efd602SCy SchubertREPLY QR AA NOERROR 82*b2efd602SCy SchubertSECTION QUESTION 83*b2efd602SCy Schubertns.example.com. IN A 84*b2efd602SCy SchubertSECTION ANSWER 85*b2efd602SCy Schubertns.example.com. IN A 1.2.3.4 86*b2efd602SCy SchubertENTRY_END 87*b2efd602SCy Schubert 88*b2efd602SCy SchubertENTRY_BEGIN 89*b2efd602SCy SchubertMATCH opcode qtype qname 90*b2efd602SCy SchubertADJUST copy_id 91*b2efd602SCy SchubertREPLY QR AA NOERROR 92*b2efd602SCy SchubertSECTION QUESTION 93*b2efd602SCy Schubertns.example.com. IN AAAA 94*b2efd602SCy SchubertSECTION ANSWER 95*b2efd602SCy SchubertSECTION AUTHORITY 96*b2efd602SCy Schubertexample.com. IN SOA ns.example.com. host.example.com. 4 86400 3600 86400 3600 97*b2efd602SCy SchubertENTRY_END 98*b2efd602SCy Schubert 99*b2efd602SCy SchubertENTRY_BEGIN 100*b2efd602SCy SchubertMATCH opcode qtype qname ednsdata 101*b2efd602SCy SchubertADJUST copy_id 102*b2efd602SCy SchubertREPLY QR AA NOERROR 103*b2efd602SCy SchubertSECTION QUESTION 104*b2efd602SCy Schubertwww.example.com. IN A 105*b2efd602SCy SchubertSECTION ANSWER 106*b2efd602SCy SchubertSECTION ADDITIONAL 107*b2efd602SCy Schubert ; Match this subnet option 108*b2efd602SCy Schubert HEX_EDNSDATA_BEGIN 109*b2efd602SCy Schubert ; client is 127.0.0.1 110*b2efd602SCy Schubert 00 08 ; OPC 111*b2efd602SCy Schubert 00 07 ; option length 112*b2efd602SCy Schubert 00 01 ; Family 113*b2efd602SCy Schubert 11 00 ; source mask, scopemask 114*b2efd602SCy Schubert 7f 00 00 ; address 115*b2efd602SCy Schubert HEX_EDNSDATA_END 116*b2efd602SCy Schubert ; This is the response, without the subnet option 117*b2efd602SCy Schubert HEX_ANSWER_BEGIN; 118*b2efd602SCy Schubert 00 00 84 00 00 01 00 01 ; ID 0 QR AA NOERROR 119*b2efd602SCy Schubert 00 00 00 01 03 77 77 77 ; www.example.com A (DO) 120*b2efd602SCy Schubert 07 65 78 61 6d 70 6c 65 121*b2efd602SCy Schubert 03 63 6f 6d 00 00 01 00 122*b2efd602SCy Schubert 01 123*b2efd602SCy Schubert C0 0C 00 01 00 01 00 00 0E 10 ; www.example.com. A IN 3600 124*b2efd602SCy Schubert 00 04 0A 14 1E 2C ; rdata 10.20.30.44 125*b2efd602SCy Schubert 00 00 29 10 00 00 00 126*b2efd602SCy Schubert 80 00 00 00 127*b2efd602SCy Schubert HEX_ANSWER_END 128*b2efd602SCy SchubertENTRY_END 129*b2efd602SCy Schubert 130*b2efd602SCy SchubertENTRY_BEGIN 131*b2efd602SCy SchubertMATCH opcode qtype qname ednsdata 132*b2efd602SCy SchubertADJUST copy_id 133*b2efd602SCy SchubertREPLY QR AA NOERROR 134*b2efd602SCy SchubertSECTION QUESTION 135*b2efd602SCy Schubertwww.example.com. IN A 136*b2efd602SCy SchubertSECTION ANSWER 137*b2efd602SCy SchubertSECTION ADDITIONAL 138*b2efd602SCy Schubert ; Match this subnet option 139*b2efd602SCy Schubert HEX_EDNSDATA_BEGIN 140*b2efd602SCy Schubert ; client is 127.2.0.1 141*b2efd602SCy Schubert 00 08 ; OPC 142*b2efd602SCy Schubert 00 07 ; option length 143*b2efd602SCy Schubert 00 01 ; Family 144*b2efd602SCy Schubert 11 00 ; source mask, scopemask 145*b2efd602SCy Schubert 7f 02 00 ; address 146*b2efd602SCy Schubert HEX_EDNSDATA_END 147*b2efd602SCy Schubert ; This is the response, without the subnet option 148*b2efd602SCy Schubert HEX_ANSWER_BEGIN; 149*b2efd602SCy Schubert 00 00 84 00 00 01 00 01 ; ID 0 QR AA NOERROR 150*b2efd602SCy Schubert 00 00 00 01 03 77 77 77 ; www.example.com A (DO) 151*b2efd602SCy Schubert 07 65 78 61 6d 70 6c 65 152*b2efd602SCy Schubert 03 63 6f 6d 00 00 01 00 153*b2efd602SCy Schubert 01 154*b2efd602SCy Schubert C0 0C 00 01 00 01 00 00 0E 10 ; www.example.com. A IN 3600 155*b2efd602SCy Schubert 00 04 0A 14 1E 2C ; rdata 10.20.30.44 156*b2efd602SCy Schubert 00 00 29 10 00 00 00 157*b2efd602SCy Schubert 80 00 00 00 158*b2efd602SCy Schubert HEX_ANSWER_END 159*b2efd602SCy SchubertENTRY_END 160*b2efd602SCy Schubert 161*b2efd602SCy SchubertENTRY_BEGIN 162*b2efd602SCy SchubertMATCH opcode qtype qname ednsdata 163*b2efd602SCy SchubertADJUST copy_id 164*b2efd602SCy SchubertREPLY QR AA NOERROR 165*b2efd602SCy SchubertSECTION QUESTION 166*b2efd602SCy Schubertwww.example.com. IN A 167*b2efd602SCy SchubertSECTION ANSWER 168*b2efd602SCy SchubertSECTION ADDITIONAL 169*b2efd602SCy Schubert ; Match this subnet option 170*b2efd602SCy Schubert HEX_EDNSDATA_BEGIN 171*b2efd602SCy Schubert ; client is 127.3.0.1 172*b2efd602SCy Schubert 00 08 ; OPC 173*b2efd602SCy Schubert 00 07 ; option length 174*b2efd602SCy Schubert 00 01 ; Family 175*b2efd602SCy Schubert 11 00 ; source mask, scopemask 176*b2efd602SCy Schubert 7f 03 00 ; address 177*b2efd602SCy Schubert HEX_EDNSDATA_END 178*b2efd602SCy Schubert ; This is the response, without the subnet option 179*b2efd602SCy Schubert HEX_ANSWER_BEGIN; 180*b2efd602SCy Schubert 00 00 84 00 00 01 00 01 ; ID 0 QR AA NOERROR 181*b2efd602SCy Schubert 00 00 00 01 03 77 77 77 ; www.example.com A (DO) 182*b2efd602SCy Schubert 07 65 78 61 6d 70 6c 65 183*b2efd602SCy Schubert 03 63 6f 6d 00 00 01 00 184*b2efd602SCy Schubert 01 185*b2efd602SCy Schubert C0 0C 00 01 00 01 00 00 0E 10 ; www.example.com. A IN 3600 186*b2efd602SCy Schubert 00 04 0A 14 1E 2C ; rdata 10.20.30.44 187*b2efd602SCy Schubert 00 00 29 10 00 00 00 188*b2efd602SCy Schubert 80 00 00 00 189*b2efd602SCy Schubert HEX_ANSWER_END 190*b2efd602SCy SchubertENTRY_END 191*b2efd602SCy Schubert 192*b2efd602SCy Schubert; The answer for a query without subnet 193*b2efd602SCy Schubert;ENTRY_BEGIN 194*b2efd602SCy Schubert;MATCH opcode qtype qname 195*b2efd602SCy Schubert;ADJUST copy_id 196*b2efd602SCy Schubert;REPLY QR AA NOERROR 197*b2efd602SCy Schubert;SECTION QUESTION 198*b2efd602SCy Schubert;www.example.com. IN A 199*b2efd602SCy Schubert;SECTION ANSWER 200*b2efd602SCy Schubert;www.example.com. IN A 10.20.30.40 201*b2efd602SCy Schubert;ENTRY_END 202*b2efd602SCy SchubertRANGE_END 203*b2efd602SCy Schubert 204*b2efd602SCy Schubert; ns.example.com. 205*b2efd602SCy SchubertRANGE_BEGIN 53 57 206*b2efd602SCy Schubert ADDRESS 1.2.3.4 207*b2efd602SCy Schubert; The answer for a query without subnet 208*b2efd602SCy SchubertENTRY_BEGIN 209*b2efd602SCy SchubertMATCH opcode qtype qname 210*b2efd602SCy SchubertADJUST copy_id 211*b2efd602SCy SchubertREPLY QR AA NOERROR 212*b2efd602SCy SchubertSECTION QUESTION 213*b2efd602SCy Schubertwww.example.com. IN A 214*b2efd602SCy SchubertSECTION ANSWER 215*b2efd602SCy Schubertwww.example.com. IN A 10.20.30.40 216*b2efd602SCy SchubertENTRY_END 217*b2efd602SCy SchubertRANGE_END 218*b2efd602SCy Schubert 219*b2efd602SCy SchubertSTEP 10 QUERY 220*b2efd602SCy SchubertENTRY_BEGIN 221*b2efd602SCy Schubert HEX_ANSWER_BEGIN; 222*b2efd602SCy Schubert 00 00 01 00 00 01 00 00 ; ID 0 223*b2efd602SCy Schubert 00 00 00 01 03 77 77 77 ; www.example.com A? (DO) 224*b2efd602SCy Schubert 07 65 78 61 6d 70 6c 65 225*b2efd602SCy Schubert 03 63 6f 6d 00 00 01 00 226*b2efd602SCy Schubert 01 00 00 29 10 00 00 00 227*b2efd602SCy Schubert 80 00 00 0b 228*b2efd602SCy Schubert 229*b2efd602SCy Schubert 00 08 00 07 ; OPC, optlen 230*b2efd602SCy Schubert 00 01 11 00 ; ip4, scope 17, source 0 231*b2efd602SCy Schubert 7f 00 00 ; 127.0.0.0/17 232*b2efd602SCy Schubert HEX_ANSWER_END 233*b2efd602SCy SchubertENTRY_END 234*b2efd602SCy Schubert 235*b2efd602SCy SchubertSTEP 20 QUERY 236*b2efd602SCy SchubertENTRY_BEGIN 237*b2efd602SCy Schubert HEX_ANSWER_BEGIN; 238*b2efd602SCy Schubert 00 00 01 00 00 01 00 00 ; ID 0 239*b2efd602SCy Schubert 00 00 00 01 03 77 77 77 ; www.example.com A? (DO) 240*b2efd602SCy Schubert 07 65 78 61 6d 70 6c 65 241*b2efd602SCy Schubert 03 63 6f 6d 00 00 01 00 242*b2efd602SCy Schubert 01 00 00 29 10 00 00 00 243*b2efd602SCy Schubert 80 00 00 0b 244*b2efd602SCy Schubert 245*b2efd602SCy Schubert 00 08 00 07 ; OPC, optlen 246*b2efd602SCy Schubert 00 01 11 00 ; ip4, scope 17, source 0 247*b2efd602SCy Schubert 7f 02 00 ; 127.2.0.0/17 248*b2efd602SCy Schubert HEX_ANSWER_END 249*b2efd602SCy SchubertENTRY_END 250*b2efd602SCy Schubert 251*b2efd602SCy SchubertSTEP 30 QUERY 252*b2efd602SCy SchubertENTRY_BEGIN 253*b2efd602SCy Schubert HEX_ANSWER_BEGIN; 254*b2efd602SCy Schubert 00 00 01 00 00 01 00 00 ; ID 0 255*b2efd602SCy Schubert 00 00 00 01 03 77 77 77 ; www.example.com A? (DO) 256*b2efd602SCy Schubert 07 65 78 61 6d 70 6c 65 257*b2efd602SCy Schubert 03 63 6f 6d 00 00 01 00 258*b2efd602SCy Schubert 01 00 00 29 10 00 00 00 259*b2efd602SCy Schubert 80 00 00 0b 260*b2efd602SCy Schubert 261*b2efd602SCy Schubert 00 08 00 07 ; OPC, optlen 262*b2efd602SCy Schubert 00 01 11 00 ; ip4, scope 17, source 0 263*b2efd602SCy Schubert 7f 03 00 ; 127.3.0.0/17 264*b2efd602SCy Schubert HEX_ANSWER_END 265*b2efd602SCy SchubertENTRY_END 266*b2efd602SCy Schubert 267*b2efd602SCy Schubert; recursion happens here. 268*b2efd602SCy Schubert; The upstream server RANGE starts responding at STEP 50. 269*b2efd602SCy SchubertSTEP 50 TRAFFIC 270*b2efd602SCy Schubert 271*b2efd602SCy Schubert; The upstream server now responds for the nonsubnet response. 272*b2efd602SCy SchubertSTEP 55 TRAFFIC 273*b2efd602SCy Schubert 274*b2efd602SCy SchubertSTEP 60 CHECK_ANSWER 275*b2efd602SCy SchubertENTRY_BEGIN 276*b2efd602SCy SchubertMATCH all ednsdata 277*b2efd602SCy SchubertREPLY QR RD RA DO NOERROR 278*b2efd602SCy SchubertSECTION QUESTION 279*b2efd602SCy Schubertwww.example.com. IN A 280*b2efd602SCy SchubertSECTION ANSWER 281*b2efd602SCy Schubertwww.example.com. IN A 10.20.30.40 282*b2efd602SCy Schubert;www.example.com. IN A 10.20.30.44 283*b2efd602SCy SchubertSECTION ADDITIONAL 284*b2efd602SCy Schubert; HEX_EDNSDATA_BEGIN 285*b2efd602SCy Schubert; ; client is 127.3.0.1 286*b2efd602SCy Schubert; 00 08 ; OPC 287*b2efd602SCy Schubert; 00 07 ; option length 288*b2efd602SCy Schubert; 00 01 ; Family 289*b2efd602SCy Schubert; 11 00 ; source mask, scopemask 290*b2efd602SCy Schubert; 7f 03 00 ; address 291*b2efd602SCy Schubert; HEX_EDNSDATA_END 292*b2efd602SCy SchubertENTRY_END 293*b2efd602SCy Schubert 294*b2efd602SCy SchubertSTEP 70 CHECK_ANSWER 295*b2efd602SCy SchubertENTRY_BEGIN 296*b2efd602SCy SchubertMATCH all ednsdata 297*b2efd602SCy SchubertREPLY QR RD RA DO NOERROR 298*b2efd602SCy SchubertSECTION QUESTION 299*b2efd602SCy Schubertwww.example.com. IN A 300*b2efd602SCy SchubertSECTION ANSWER 301*b2efd602SCy Schubertwww.example.com. IN A 10.20.30.40 302*b2efd602SCy Schubert;www.example.com. IN A 10.20.30.44 303*b2efd602SCy SchubertSECTION ADDITIONAL 304*b2efd602SCy Schubert; HEX_EDNSDATA_BEGIN 305*b2efd602SCy Schubert; ; client is 127.2.0.1 306*b2efd602SCy Schubert; 00 08 ; OPC 307*b2efd602SCy Schubert; 00 07 ; option length 308*b2efd602SCy Schubert; 00 01 ; Family 309*b2efd602SCy Schubert; 11 00 ; source mask, scopemask 310*b2efd602SCy Schubert; 7f 02 00 ; address 311*b2efd602SCy Schubert; HEX_EDNSDATA_END 312*b2efd602SCy SchubertENTRY_END 313*b2efd602SCy Schubert 314*b2efd602SCy SchubertSTEP 80 CHECK_ANSWER 315*b2efd602SCy SchubertENTRY_BEGIN 316*b2efd602SCy SchubertMATCH all ednsdata 317*b2efd602SCy SchubertREPLY QR RD RA DO NOERROR 318*b2efd602SCy SchubertSECTION QUESTION 319*b2efd602SCy Schubertwww.example.com. IN A 320*b2efd602SCy SchubertSECTION ANSWER 321*b2efd602SCy Schubertwww.example.com. IN A 10.20.30.40 322*b2efd602SCy Schubert;www.example.com. IN A 10.20.30.44 323*b2efd602SCy SchubertSECTION ADDITIONAL 324*b2efd602SCy Schubert; HEX_EDNSDATA_BEGIN 325*b2efd602SCy Schubert; ; client is 127.0.0.1 326*b2efd602SCy Schubert; 00 08 ; OPC 327*b2efd602SCy Schubert; 00 07 ; option length 328*b2efd602SCy Schubert; 00 01 ; Family 329*b2efd602SCy Schubert; 11 00 ; source mask, scopemask 330*b2efd602SCy Schubert; 7f 00 00 ; address 331*b2efd602SCy Schubert; HEX_EDNSDATA_END 332*b2efd602SCy SchubertENTRY_END 333*b2efd602SCy Schubert 334*b2efd602SCy SchubertSCENARIO_END 335