1*00b67f09SDavid van Moolenbroek#!/bin/sh 2*00b67f09SDavid van Moolenbroek# 3*00b67f09SDavid van Moolenbroek# Copyright (C) 2011-2014 Internet Systems Consortium, Inc. ("ISC") 4*00b67f09SDavid van Moolenbroek# 5*00b67f09SDavid van Moolenbroek# Permission to use, copy, modify, and/or distribute this software for any 6*00b67f09SDavid van Moolenbroek# purpose with or without fee is hereby granted, provided that the above 7*00b67f09SDavid van Moolenbroek# copyright notice and this permission notice appear in all copies. 8*00b67f09SDavid van Moolenbroek# 9*00b67f09SDavid van Moolenbroek# THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH 10*00b67f09SDavid van Moolenbroek# REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY 11*00b67f09SDavid van Moolenbroek# AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT, 12*00b67f09SDavid van Moolenbroek# INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM 13*00b67f09SDavid van Moolenbroek# LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE 14*00b67f09SDavid van Moolenbroek# OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR 15*00b67f09SDavid van Moolenbroek# PERFORMANCE OF THIS SOFTWARE. 16*00b67f09SDavid van Moolenbroek 17*00b67f09SDavid van Moolenbroek# Id: tests.sh,v 1.18 2012/02/23 06:53:15 marka Exp 18*00b67f09SDavid van Moolenbroek 19*00b67f09SDavid van MoolenbroekSYSTEMTESTTOP=.. 20*00b67f09SDavid van Moolenbroek. $SYSTEMTESTTOP/conf.sh 21*00b67f09SDavid van Moolenbroek 22*00b67f09SDavid van MoolenbroekDIGOPTS="+tcp +dnssec" 23*00b67f09SDavid van Moolenbroek 24*00b67f09SDavid van Moolenbroekstatus=0 25*00b67f09SDavid van Moolenbroekn=0 26*00b67f09SDavid van Moolenbroek 27*00b67f09SDavid van Moolenbroek$RNDC -c ../common/rndc.conf -s 10.53.0.3 -p 9953 signing -nsec3param 1 0 0 - nsec3 > /dev/null 2>&1 28*00b67f09SDavid van Moolenbroek 29*00b67f09SDavid van Moolenbroekfor i in 1 2 3 4 5 6 7 8 9 0 30*00b67f09SDavid van Moolenbroekdo 31*00b67f09SDavid van Moolenbroek nsec3param=`$DIG +short @10.53.0.3 -p 5300 nsec3param nsec3.` 32*00b67f09SDavid van Moolenbroek test "$nsec3param" = "1 0 0 -" && break 33*00b67f09SDavid van Moolenbroek sleep 1 34*00b67f09SDavid van Moolenbroekdone 35*00b67f09SDavid van Moolenbroek 36*00b67f09SDavid van Moolenbroek# Loop until retransfer3 has been transferred. 37*00b67f09SDavid van Moolenbroekfor i in 1 2 3 4 5 6 7 8 9 0 38*00b67f09SDavid van Moolenbroekdo 39*00b67f09SDavid van Moolenbroek ans=0 40*00b67f09SDavid van Moolenbroek $RNDC -c ../common/rndc.conf -s 10.53.0.3 -p 9953 signing -nsec3param 1 0 0 - retransfer3 > /dev/null 2>&1 || ans=1 41*00b67f09SDavid van Moolenbroek [ $ans = 0 ] && break 42*00b67f09SDavid van Moolenbroekdone 43*00b67f09SDavid van Moolenbroek 44*00b67f09SDavid van Moolenbroekfor i in 1 2 3 4 5 6 7 8 9 0 45*00b67f09SDavid van Moolenbroekdo 46*00b67f09SDavid van Moolenbroek nsec3param=`$DIG +short @10.53.0.3 -p 5300 nsec3param retransfer3.` 47*00b67f09SDavid van Moolenbroek test "$nsec3param" = "1 0 0 -" && break 48*00b67f09SDavid van Moolenbroek sleep 1 49*00b67f09SDavid van Moolenbroekdone 50*00b67f09SDavid van Moolenbroek 51*00b67f09SDavid van Moolenbroekn=`expr $n + 1` 52*00b67f09SDavid van Moolenbroekecho "I:checking that rrsigs are replaced with ksk only" 53*00b67f09SDavid van Moolenbroekret=0 54*00b67f09SDavid van Moolenbroek$DIG @10.53.0.3 -p 5300 axfr nsec3. | 55*00b67f09SDavid van Moolenbroek awk '/RRSIG NSEC3/ {a[$1]++} END { for (i in a) {if (a[i] != 1) exit (1)}}' || ret=1 56*00b67f09SDavid van Moolenbroek#$DIG @10.53.0.3 -p 5300 axfr nsec3. | grep -w NSEC | grep -v "IN.RRSIG.NSEC" 57*00b67f09SDavid van Moolenbroekif [ $ret != 0 ]; then echo "I:failed"; fi 58*00b67f09SDavid van Moolenbroekstatus=`expr $status + $ret` 59*00b67f09SDavid van Moolenbroek 60*00b67f09SDavid van Moolenbroekn=`expr $n + 1` 61*00b67f09SDavid van Moolenbroekecho "I:checking that the zone is signed on initial transfer ($n)" 62*00b67f09SDavid van Moolenbroekret=0 63*00b67f09SDavid van Moolenbroekfor i in 1 2 3 4 5 6 7 8 9 10 64*00b67f09SDavid van Moolenbroekdo 65*00b67f09SDavid van Moolenbroek ret=0 66*00b67f09SDavid van Moolenbroek $RNDC -c ../common/rndc.conf -s 10.53.0.3 -p 9953 signing -list bits > signing.out.test$n 2>&1 67*00b67f09SDavid van Moolenbroek keys=`grep '^Done signing' signing.out.test$n | wc -l` 68*00b67f09SDavid van Moolenbroek [ $keys = 2 ] || ret=1 69*00b67f09SDavid van Moolenbroek if [ $ret = 0 ]; then break; fi 70*00b67f09SDavid van Moolenbroek sleep 1 71*00b67f09SDavid van Moolenbroekdone 72*00b67f09SDavid van Moolenbroekif [ $ret != 0 ]; then echo "I:failed"; fi 73*00b67f09SDavid van Moolenbroekstatus=`expr $status + $ret` 74*00b67f09SDavid van Moolenbroek 75*00b67f09SDavid van Moolenbroekn=`expr $n + 1` 76*00b67f09SDavid van Moolenbroekecho "I:checking expired signatures are updated on load ($n)" 77*00b67f09SDavid van Moolenbroekret=0 78*00b67f09SDavid van Moolenbroek$DIG $DIGOPTS @10.53.0.3 -p 5300 +noall +answer +dnssec expired SOA > dig.out.ns3.test$n 79*00b67f09SDavid van Moolenbroekexpiry=`awk '$4 == "RRSIG" { print $9 }' dig.out.ns3.test$n` 80*00b67f09SDavid van Moolenbroek[ "$expiry" = "20110101000000" ] && ret=1 81*00b67f09SDavid van Moolenbroekif [ $ret != 0 ]; then echo "I:failed"; fi 82*00b67f09SDavid van Moolenbroekstatus=`expr $status + $ret` 83*00b67f09SDavid van Moolenbroek 84*00b67f09SDavid van Moolenbroekn=`expr $n + 1` 85*00b67f09SDavid van Moolenbroekecho "I:checking removal of private type record via 'rndc signing -clear' ($n)" 86*00b67f09SDavid van Moolenbroekret=0 87*00b67f09SDavid van Moolenbroek$RNDC -c ../common/rndc.conf -s 10.53.0.3 -p 9953 signing -list bits > signing.out.test$n 2>&1 88*00b67f09SDavid van Moolenbroekkeys=`sed -n -e 's/Done signing with key \(.*\)$/\1/p' signing.out.test$n` 89*00b67f09SDavid van Moolenbroekfor key in $keys; do 90*00b67f09SDavid van Moolenbroek $RNDC -c ../common/rndc.conf -s 10.53.0.3 -p 9953 signing -clear ${key} bits > /dev/null || ret=1 91*00b67f09SDavid van Moolenbroek break; # We only want to remove 1 record for now. 92*00b67f09SDavid van Moolenbroekdone 2>&1 |sed 's/^/I:ns3 /' 93*00b67f09SDavid van Moolenbroek 94*00b67f09SDavid van Moolenbroekfor i in 1 2 3 4 5 6 7 8 9 10 95*00b67f09SDavid van Moolenbroekdo 96*00b67f09SDavid van Moolenbroek ans=0 97*00b67f09SDavid van Moolenbroek $RNDC -c ../common/rndc.conf -s 10.53.0.3 -p 9953 signing -list bits > signing.out.test$n 2>&1 98*00b67f09SDavid van Moolenbroek num=`grep "Done signing with" signing.out.test$n | wc -l` 99*00b67f09SDavid van Moolenbroek [ $num = 1 ] && break 100*00b67f09SDavid van Moolenbroek sleep 1 101*00b67f09SDavid van Moolenbroekdone 102*00b67f09SDavid van Moolenbroek[ $ans = 0 ] || ret=1 103*00b67f09SDavid van Moolenbroek 104*00b67f09SDavid van Moolenbroekif [ $ret != 0 ]; then echo "I:failed"; fi 105*00b67f09SDavid van Moolenbroekstatus=`expr $status + $ret` 106*00b67f09SDavid van Moolenbroek 107*00b67f09SDavid van Moolenbroekn=`expr $n + 1` 108*00b67f09SDavid van Moolenbroekecho "I:checking private type was properly signed ($n)" 109*00b67f09SDavid van Moolenbroekret=0 110*00b67f09SDavid van Moolenbroek$DIG $DIGOPTS @10.53.0.6 -p 5300 bits TYPE65534 > dig.out.ns6.test$n 111*00b67f09SDavid van Moolenbroekgrep "ANSWER: 2," dig.out.ns6.test$n > /dev/null || ret=1 112*00b67f09SDavid van Moolenbroekgrep "flags:.* ad[ ;]" dig.out.ns6.test$n > /dev/null || ret=1 113*00b67f09SDavid van Moolenbroek 114*00b67f09SDavid van Moolenbroekif [ $ret != 0 ]; then echo "I:failed"; fi 115*00b67f09SDavid van Moolenbroekstatus=`expr $status + $ret` 116*00b67f09SDavid van Moolenbroek 117*00b67f09SDavid van Moolenbroekn=`expr $n + 1` 118*00b67f09SDavid van Moolenbroekecho "I:checking removal of remaining private type record via 'rndc signing -clear all' ($n)" 119*00b67f09SDavid van Moolenbroekret=0 120*00b67f09SDavid van Moolenbroek$RNDC -c ../common/rndc.conf -s 10.53.0.3 -p 9953 signing -clear all bits > /dev/null || ret=1 121*00b67f09SDavid van Moolenbroek 122*00b67f09SDavid van Moolenbroekfor i in 1 2 3 4 5 6 7 8 9 10 123*00b67f09SDavid van Moolenbroekdo 124*00b67f09SDavid van Moolenbroek ans=0 125*00b67f09SDavid van Moolenbroek $RNDC -c ../common/rndc.conf -s 10.53.0.3 -p 9953 signing -list bits > signing.out.test$n 2>&1 126*00b67f09SDavid van Moolenbroek grep "No signing records found" signing.out.test$n > /dev/null || ans=1 127*00b67f09SDavid van Moolenbroek [ $ans = 1 ] || break 128*00b67f09SDavid van Moolenbroek sleep 1 129*00b67f09SDavid van Moolenbroekdone 130*00b67f09SDavid van Moolenbroek[ $ans = 0 ] || ret=1 131*00b67f09SDavid van Moolenbroek 132*00b67f09SDavid van Moolenbroekif [ $ret != 0 ]; then echo "I:failed"; fi 133*00b67f09SDavid van Moolenbroekstatus=`expr $status + $ret` 134*00b67f09SDavid van Moolenbroek 135*00b67f09SDavid van Moolenbroekn=`expr $n + 1` 136*00b67f09SDavid van Moolenbroekecho "I:checking negative private type response was properly signed ($n)" 137*00b67f09SDavid van Moolenbroekret=0 138*00b67f09SDavid van Moolenbroeksleep 1 139*00b67f09SDavid van Moolenbroek$DIG $DIGOPTS @10.53.0.6 -p 5300 bits TYPE65534 > dig.out.ns6.test$n 140*00b67f09SDavid van Moolenbroekgrep "status: NOERROR" dig.out.ns6.test$n > /dev/null || ret=1 141*00b67f09SDavid van Moolenbroekgrep "ANSWER: 0," dig.out.ns6.test$n > /dev/null || ret=1 142*00b67f09SDavid van Moolenbroekgrep "flags:.* ad[ ;]" dig.out.ns6.test$n > /dev/null || ret=1 143*00b67f09SDavid van Moolenbroek 144*00b67f09SDavid van Moolenbroekif [ $ret != 0 ]; then echo "I:failed"; fi 145*00b67f09SDavid van Moolenbroekstatus=`expr $status + $ret` 146*00b67f09SDavid van Moolenbroek 147*00b67f09SDavid van Moolenbroek$NSUPDATE << EOF 148*00b67f09SDavid van Moolenbroekzone bits 149*00b67f09SDavid van Moolenbroekserver 10.53.0.2 5300 150*00b67f09SDavid van Moolenbroekupdate add added.bits 0 A 1.2.3.4 151*00b67f09SDavid van Moolenbroeksend 152*00b67f09SDavid van MoolenbroekEOF 153*00b67f09SDavid van Moolenbroek 154*00b67f09SDavid van Moolenbroekn=`expr $n + 1` 155*00b67f09SDavid van Moolenbroekecho "I:checking that the record is added on the hidden master ($n)" 156*00b67f09SDavid van Moolenbroekret=0 157*00b67f09SDavid van Moolenbroek$DIG $DIGOPTS @10.53.0.2 -p 5300 added.bits A > dig.out.ns2.test$n 158*00b67f09SDavid van Moolenbroekgrep "status: NOERROR" dig.out.ns2.test$n > /dev/null || ret=1 159*00b67f09SDavid van Moolenbroekgrep "ANSWER: 1," dig.out.ns2.test$n > /dev/null || ret=1 160*00b67f09SDavid van Moolenbroekif [ $ret != 0 ]; then echo "I:failed"; fi 161*00b67f09SDavid van Moolenbroekstatus=`expr $status + $ret` 162*00b67f09SDavid van Moolenbroek 163*00b67f09SDavid van Moolenbroekn=`expr $n + 1` 164*00b67f09SDavid van Moolenbroekecho "I:checking that update has been transfered and has been signed ($n)" 165*00b67f09SDavid van Moolenbroekret=0 166*00b67f09SDavid van Moolenbroekfor i in 1 2 3 4 5 6 7 8 9 10 167*00b67f09SDavid van Moolenbroekdo 168*00b67f09SDavid van Moolenbroek ret=0 169*00b67f09SDavid van Moolenbroek $DIG $DIGOPTS @10.53.0.3 -p 5300 added.bits A > dig.out.ns3.test$n 170*00b67f09SDavid van Moolenbroek grep "status: NOERROR" dig.out.ns3.test$n > /dev/null || ret=1 171*00b67f09SDavid van Moolenbroek grep "ANSWER: 2," dig.out.ns3.test$n > /dev/null || ret=1 172*00b67f09SDavid van Moolenbroek if [ $ret = 0 ]; then break; fi 173*00b67f09SDavid van Moolenbroek sleep 1 174*00b67f09SDavid van Moolenbroekdone 175*00b67f09SDavid van Moolenbroekif [ $ret != 0 ]; then echo "I:failed"; fi 176*00b67f09SDavid van Moolenbroekstatus=`expr $status + $ret` 177*00b67f09SDavid van Moolenbroek 178*00b67f09SDavid van Moolenbroek$NSUPDATE << EOF 179*00b67f09SDavid van Moolenbroekzone bits 180*00b67f09SDavid van Moolenbroekserver 10.53.0.2 5300 181*00b67f09SDavid van Moolenbroekupdate add bits 0 SOA ns2.bits. . 2011072400 20 20 1814400 3600 182*00b67f09SDavid van Moolenbroeksend 183*00b67f09SDavid van MoolenbroekEOF 184*00b67f09SDavid van Moolenbroek 185*00b67f09SDavid van Moolenbroekn=`expr $n + 1` 186*00b67f09SDavid van Moolenbroekecho "I:checking YYYYMMDDVV (2011072400) serial on hidden master ($n)" 187*00b67f09SDavid van Moolenbroekret=0 188*00b67f09SDavid van Moolenbroek$DIG $DIGOPTS @10.53.0.2 -p 5300 bits SOA > dig.out.ns2.test$n 189*00b67f09SDavid van Moolenbroekgrep "status: NOERROR" dig.out.ns2.test$n > /dev/null || ret=1 190*00b67f09SDavid van Moolenbroekgrep "ANSWER: 1," dig.out.ns2.test$n > /dev/null || ret=1 191*00b67f09SDavid van Moolenbroekgrep "2011072400" dig.out.ns2.test$n > /dev/null || ret=1 192*00b67f09SDavid van Moolenbroekif [ $ret != 0 ]; then echo "I:failed"; fi 193*00b67f09SDavid van Moolenbroekstatus=`expr $status + $ret` 194*00b67f09SDavid van Moolenbroek 195*00b67f09SDavid van Moolenbroekn=`expr $n + 1` 196*00b67f09SDavid van Moolenbroekecho "I:checking YYYYMMDDVV (2011072400) serial in signed zone ($n)" 197*00b67f09SDavid van Moolenbroekfor i in 1 2 3 4 5 6 7 8 9 10 198*00b67f09SDavid van Moolenbroekdo 199*00b67f09SDavid van Moolenbroek ret=0 200*00b67f09SDavid van Moolenbroek $DIG $DIGOPTS @10.53.0.3 -p 5300 bits SOA > dig.out.ns3.test$n 201*00b67f09SDavid van Moolenbroek grep "status: NOERROR" dig.out.ns3.test$n > /dev/null || ret=1 202*00b67f09SDavid van Moolenbroek grep "ANSWER: 2," dig.out.ns3.test$n > /dev/null || ret=1 203*00b67f09SDavid van Moolenbroek grep "2011072400" dig.out.ns3.test$n > /dev/null || ret=1 204*00b67f09SDavid van Moolenbroek if [ $ret = 0 ]; then break; fi 205*00b67f09SDavid van Moolenbroek sleep 1 206*00b67f09SDavid van Moolenbroekdone 207*00b67f09SDavid van Moolenbroekif [ $ret != 0 ]; then echo "I:failed"; fi 208*00b67f09SDavid van Moolenbroekstatus=`expr $status + $ret` 209*00b67f09SDavid van Moolenbroekn=`expr $n + 1` 210*00b67f09SDavid van Moolenbroek 211*00b67f09SDavid van Moolenbroekecho "I:checking that the zone is signed on initial transfer, noixfr ($n)" 212*00b67f09SDavid van Moolenbroekret=0 213*00b67f09SDavid van Moolenbroekfor i in 1 2 3 4 5 6 7 8 9 10 1 2 3 4 5 6 7 8 9 10 1 2 3 4 5 6 7 8 9 10 214*00b67f09SDavid van Moolenbroekdo 215*00b67f09SDavid van Moolenbroek ret=0 216*00b67f09SDavid van Moolenbroek $RNDC -c ../common/rndc.conf -s 10.53.0.3 -p 9953 signing -list noixfr > signing.out.test$n 2>&1 217*00b67f09SDavid van Moolenbroek keys=`grep '^Done signing' signing.out.test$n | wc -l` 218*00b67f09SDavid van Moolenbroek [ $keys = 2 ] || ret=1 219*00b67f09SDavid van Moolenbroek if [ $ret = 0 ]; then break; fi 220*00b67f09SDavid van Moolenbroek sleep 1 221*00b67f09SDavid van Moolenbroekdone 222*00b67f09SDavid van Moolenbroekif [ $ret != 0 ]; then echo "I:failed"; fi 223*00b67f09SDavid van Moolenbroekstatus=`expr $status + $ret` 224*00b67f09SDavid van Moolenbroek 225*00b67f09SDavid van Moolenbroek$NSUPDATE << EOF 226*00b67f09SDavid van Moolenbroekzone noixfr 227*00b67f09SDavid van Moolenbroekserver 10.53.0.4 5300 228*00b67f09SDavid van Moolenbroekupdate add added.noixfr 0 A 1.2.3.4 229*00b67f09SDavid van Moolenbroeksend 230*00b67f09SDavid van MoolenbroekEOF 231*00b67f09SDavid van Moolenbroek 232*00b67f09SDavid van Moolenbroekn=`expr $n + 1` 233*00b67f09SDavid van Moolenbroekecho "I:checking that the record is added on the hidden master, noixfr ($n)" 234*00b67f09SDavid van Moolenbroekret=0 235*00b67f09SDavid van Moolenbroek$DIG $DIGOPTS @10.53.0.4 -p 5300 added.noixfr A > dig.out.ns4.test$n 236*00b67f09SDavid van Moolenbroekgrep "status: NOERROR" dig.out.ns4.test$n > /dev/null || ret=1 237*00b67f09SDavid van Moolenbroekgrep "ANSWER: 1," dig.out.ns4.test$n > /dev/null || ret=1 238*00b67f09SDavid van Moolenbroekif [ $ret != 0 ]; then echo "I:failed"; fi 239*00b67f09SDavid van Moolenbroekstatus=`expr $status + $ret` 240*00b67f09SDavid van Moolenbroek 241*00b67f09SDavid van Moolenbroekn=`expr $n + 1` 242*00b67f09SDavid van Moolenbroekecho "I:checking that update has been transfered and has been signed, noixfr ($n)" 243*00b67f09SDavid van Moolenbroekret=0 244*00b67f09SDavid van Moolenbroekfor i in 1 2 3 4 5 6 7 8 9 10 1 2 3 4 5 6 7 8 9 10 1 2 3 4 5 6 7 8 9 10 245*00b67f09SDavid van Moolenbroekdo 246*00b67f09SDavid van Moolenbroek ret=0 247*00b67f09SDavid van Moolenbroek $DIG $DIGOPTS @10.53.0.3 -p 5300 added.noixfr A > dig.out.ns3.test$n 248*00b67f09SDavid van Moolenbroek grep "status: NOERROR" dig.out.ns3.test$n > /dev/null || ret=1 249*00b67f09SDavid van Moolenbroek grep "ANSWER: 2," dig.out.ns3.test$n > /dev/null || ret=1 250*00b67f09SDavid van Moolenbroek if [ $ret = 0 ]; then break; fi 251*00b67f09SDavid van Moolenbroek sleep 1 252*00b67f09SDavid van Moolenbroekdone 253*00b67f09SDavid van Moolenbroekif [ $ret != 0 ]; then echo "I:failed"; fi 254*00b67f09SDavid van Moolenbroekstatus=`expr $status + $ret` 255*00b67f09SDavid van Moolenbroek 256*00b67f09SDavid van Moolenbroek$NSUPDATE << EOF 257*00b67f09SDavid van Moolenbroekzone noixfr 258*00b67f09SDavid van Moolenbroekserver 10.53.0.4 5300 259*00b67f09SDavid van Moolenbroekupdate add noixfr 0 SOA ns4.noixfr. . 2011072400 20 20 1814400 3600 260*00b67f09SDavid van Moolenbroeksend 261*00b67f09SDavid van MoolenbroekEOF 262*00b67f09SDavid van Moolenbroek 263*00b67f09SDavid van Moolenbroekn=`expr $n + 1` 264*00b67f09SDavid van Moolenbroekecho "I:checking YYYYMMDDVV (2011072400) serial on hidden master, noixfr ($n)" 265*00b67f09SDavid van Moolenbroekret=0 266*00b67f09SDavid van Moolenbroek$DIG $DIGOPTS @10.53.0.4 -p 5300 noixfr SOA > dig.out.ns4.test$n 267*00b67f09SDavid van Moolenbroekgrep "status: NOERROR" dig.out.ns4.test$n > /dev/null || ret=1 268*00b67f09SDavid van Moolenbroekgrep "ANSWER: 1," dig.out.ns4.test$n > /dev/null || ret=1 269*00b67f09SDavid van Moolenbroekgrep "2011072400" dig.out.ns4.test$n > /dev/null || ret=1 270*00b67f09SDavid van Moolenbroekif [ $ret != 0 ]; then echo "I:failed"; fi 271*00b67f09SDavid van Moolenbroekstatus=`expr $status + $ret` 272*00b67f09SDavid van Moolenbroek 273*00b67f09SDavid van Moolenbroekn=`expr $n + 1` 274*00b67f09SDavid van Moolenbroekecho "I:checking YYYYMMDDVV (2011072400) serial in signed zone, noixfr ($n)" 275*00b67f09SDavid van Moolenbroekfor i in 1 2 3 4 5 6 7 8 9 10 276*00b67f09SDavid van Moolenbroekdo 277*00b67f09SDavid van Moolenbroek ret=0 278*00b67f09SDavid van Moolenbroek $DIG $DIGOPTS @10.53.0.3 -p 5300 noixfr SOA > dig.out.ns3.test$n 279*00b67f09SDavid van Moolenbroek grep "status: NOERROR" dig.out.ns3.test$n > /dev/null || ret=1 280*00b67f09SDavid van Moolenbroek grep "ANSWER: 2," dig.out.ns3.test$n > /dev/null || ret=1 281*00b67f09SDavid van Moolenbroek grep "2011072400" dig.out.ns3.test$n > /dev/null || ret=1 282*00b67f09SDavid van Moolenbroek if [ $ret = 0 ]; then break; fi 283*00b67f09SDavid van Moolenbroek sleep 1 284*00b67f09SDavid van Moolenbroekdone 285*00b67f09SDavid van Moolenbroekif [ $ret != 0 ]; then echo "I:failed"; fi 286*00b67f09SDavid van Moolenbroekstatus=`expr $status + $ret` 287*00b67f09SDavid van Moolenbroek 288*00b67f09SDavid van Moolenbroekn=`expr $n + 1` 289*00b67f09SDavid van Moolenbroekecho "I:checking that the master zone signed on initial load ($n)" 290*00b67f09SDavid van Moolenbroekret=0 291*00b67f09SDavid van Moolenbroekfor i in 1 2 3 4 5 6 7 8 9 10 292*00b67f09SDavid van Moolenbroekdo 293*00b67f09SDavid van Moolenbroek ret=0 294*00b67f09SDavid van Moolenbroek $RNDC -c ../common/rndc.conf -s 10.53.0.3 -p 9953 signing -list master > signing.out.test$n 2>&1 295*00b67f09SDavid van Moolenbroek keys=`grep '^Done signing' signing.out.test$n | wc -l` 296*00b67f09SDavid van Moolenbroek [ $keys = 2 ] || ret=1 297*00b67f09SDavid van Moolenbroek if [ $ret = 0 ]; then break; fi 298*00b67f09SDavid van Moolenbroek sleep 1 299*00b67f09SDavid van Moolenbroekdone 300*00b67f09SDavid van Moolenbroekif [ $ret != 0 ]; then echo "I:failed"; fi 301*00b67f09SDavid van Moolenbroek 302*00b67f09SDavid van Moolenbroekn=`expr $n + 1` 303*00b67f09SDavid van Moolenbroekecho "I:checking removal of private type record via 'rndc signing -clear' (master) ($n)" 304*00b67f09SDavid van Moolenbroekret=0 305*00b67f09SDavid van Moolenbroek$RNDC -c ../common/rndc.conf -s 10.53.0.3 -p 9953 signing -list master > signing.out.test$n 2>&1 306*00b67f09SDavid van Moolenbroekkeys=`sed -n -e 's/Done signing with key \(.*\)$/\1/p' signing.out.test$n` 307*00b67f09SDavid van Moolenbroekfor key in $keys; do 308*00b67f09SDavid van Moolenbroek $RNDC -c ../common/rndc.conf -s 10.53.0.3 -p 9953 signing -clear ${key} master > /dev/null || ret=1 309*00b67f09SDavid van Moolenbroek break; # We only want to remove 1 record for now. 310*00b67f09SDavid van Moolenbroekdone 2>&1 |sed 's/^/I:ns3 /' 311*00b67f09SDavid van Moolenbroek 312*00b67f09SDavid van Moolenbroekfor i in 1 2 3 4 5 6 7 8 9 313*00b67f09SDavid van Moolenbroekdo 314*00b67f09SDavid van Moolenbroek ans=0 315*00b67f09SDavid van Moolenbroek $RNDC -c ../common/rndc.conf -s 10.53.0.3 -p 9953 signing -list master > signing.out.test$n 2>&1 316*00b67f09SDavid van Moolenbroek num=`grep "Done signing with" signing.out.test$n | wc -l` 317*00b67f09SDavid van Moolenbroek [ $num = 1 ] && break 318*00b67f09SDavid van Moolenbroek sleep 1 319*00b67f09SDavid van Moolenbroekdone 320*00b67f09SDavid van Moolenbroek[ $ans = 0 ] || ret=1 321*00b67f09SDavid van Moolenbroek 322*00b67f09SDavid van Moolenbroekif [ $ret != 0 ]; then echo "I:failed"; fi 323*00b67f09SDavid van Moolenbroekstatus=`expr $status + $ret` 324*00b67f09SDavid van Moolenbroek 325*00b67f09SDavid van Moolenbroekn=`expr $n + 1` 326*00b67f09SDavid van Moolenbroekecho "I:checking private type was properly signed (master) ($n)" 327*00b67f09SDavid van Moolenbroekret=0 328*00b67f09SDavid van Moolenbroek$DIG $DIGOPTS @10.53.0.6 -p 5300 master TYPE65534 > dig.out.ns6.test$n 329*00b67f09SDavid van Moolenbroekgrep "ANSWER: 2," dig.out.ns6.test$n > /dev/null || ret=1 330*00b67f09SDavid van Moolenbroekgrep "flags:.* ad[ ;]" dig.out.ns6.test$n > /dev/null || ret=1 331*00b67f09SDavid van Moolenbroek 332*00b67f09SDavid van Moolenbroekif [ $ret != 0 ]; then echo "I:failed"; fi 333*00b67f09SDavid van Moolenbroekstatus=`expr $status + $ret` 334*00b67f09SDavid van Moolenbroek 335*00b67f09SDavid van Moolenbroekn=`expr $n + 1` 336*00b67f09SDavid van Moolenbroekecho "I:checking removal of remaining private type record via 'rndc signing -clear' (master) ($n)" 337*00b67f09SDavid van Moolenbroekret=0 338*00b67f09SDavid van Moolenbroek$RNDC -c ../common/rndc.conf -s 10.53.0.3 -p 9953 signing -clear all master > /dev/null || ret=1 339*00b67f09SDavid van Moolenbroekfor i in 1 2 3 4 5 6 7 8 9 10 340*00b67f09SDavid van Moolenbroekdo 341*00b67f09SDavid van Moolenbroek ans=0 342*00b67f09SDavid van Moolenbroek $RNDC -c ../common/rndc.conf -s 10.53.0.3 -p 9953 signing -list master > signing.out.test$n 2>&1 343*00b67f09SDavid van Moolenbroek grep "No signing records found" signing.out.test$n > /dev/null || ans=1 344*00b67f09SDavid van Moolenbroek [ $ans = 1 ] || break 345*00b67f09SDavid van Moolenbroek sleep 1 346*00b67f09SDavid van Moolenbroekdone 347*00b67f09SDavid van Moolenbroek[ $ans = 0 ] || ret=1 348*00b67f09SDavid van Moolenbroek 349*00b67f09SDavid van Moolenbroekif [ $ret != 0 ]; then echo "I:failed"; fi 350*00b67f09SDavid van Moolenbroekstatus=`expr $status + $ret` 351*00b67f09SDavid van Moolenbroek 352*00b67f09SDavid van Moolenbroekn=`expr $n + 1` 353*00b67f09SDavid van Moolenbroekecho "I:check adding of record to unsigned master ($n)" 354*00b67f09SDavid van Moolenbroekret=0 355*00b67f09SDavid van Moolenbroekcp ns3/master2.db.in ns3/master.db 356*00b67f09SDavid van Moolenbroek$RNDC -c ../common/rndc.conf -s 10.53.0.3 -p 9953 reload master || ret=1 357*00b67f09SDavid van Moolenbroekfor i in 1 2 3 4 5 6 7 8 9 358*00b67f09SDavid van Moolenbroekdo 359*00b67f09SDavid van Moolenbroek ans=0 360*00b67f09SDavid van Moolenbroek $DIG $DIGOPTS @10.53.0.3 -p 5300 e.master A > dig.out.ns3.test$n 361*00b67f09SDavid van Moolenbroek grep "10.0.0.5" dig.out.ns3.test$n > /dev/null || ans=1 362*00b67f09SDavid van Moolenbroek grep "ANSWER: 2," dig.out.ns3.test$n > /dev/null || ans=1 363*00b67f09SDavid van Moolenbroek [ $ans = 1 ] || break 364*00b67f09SDavid van Moolenbroek sleep 1 365*00b67f09SDavid van Moolenbroekdone 366*00b67f09SDavid van Moolenbroek[ $ans = 0 ] || ret=1 367*00b67f09SDavid van Moolenbroekif [ $ret != 0 ]; then echo "I:failed"; fi 368*00b67f09SDavid van Moolenbroekstatus=`expr $status + $ret` 369*00b67f09SDavid van Moolenbroek 370*00b67f09SDavid van Moolenbroekn=`expr $n + 1` 371*00b67f09SDavid van Moolenbroekecho "I:check adding record fails when SOA serial not changed ($n)" 372*00b67f09SDavid van Moolenbroekret=0 373*00b67f09SDavid van Moolenbroekecho "c A 10.0.0.3" >> ns3/master.db 374*00b67f09SDavid van Moolenbroek$RNDC -c ../common/rndc.conf -s 10.53.0.3 -p 9953 reload || ret=1 375*00b67f09SDavid van Moolenbroeksleep 1 376*00b67f09SDavid van Moolenbroek$DIG $DIGOPTS @10.53.0.3 -p 5300 c.master A > dig.out.ns3.test$n 377*00b67f09SDavid van Moolenbroekgrep "NXDOMAIN" dig.out.ns3.test$n > /dev/null || ret=1 378*00b67f09SDavid van Moolenbroekif [ $ret != 0 ]; then echo "I:failed"; fi 379*00b67f09SDavid van Moolenbroekstatus=`expr $status + $ret` 380*00b67f09SDavid van Moolenbroek 381*00b67f09SDavid van Moolenbroekn=`expr $n + 1` 382*00b67f09SDavid van Moolenbroekecho "I:check adding record works after updating SOA serial ($n)" 383*00b67f09SDavid van Moolenbroekret=0 384*00b67f09SDavid van Moolenbroekcp ns3/master3.db.in ns3/master.db 385*00b67f09SDavid van Moolenbroek$RNDC -c ../common/rndc.conf -s 10.53.0.3 -p 9953 reload master || ret=1 386*00b67f09SDavid van Moolenbroekfor i in 1 2 3 4 5 6 7 8 9 387*00b67f09SDavid van Moolenbroekdo 388*00b67f09SDavid van Moolenbroek ans=0 389*00b67f09SDavid van Moolenbroek $DIG $DIGOPTS @10.53.0.3 -p 5300 c.master A > dig.out.ns3.test$n 390*00b67f09SDavid van Moolenbroek grep "10.0.0.3" dig.out.ns3.test$n > /dev/null || ans=1 391*00b67f09SDavid van Moolenbroek grep "ANSWER: 2," dig.out.ns3.test$n > /dev/null || ans=1 392*00b67f09SDavid van Moolenbroek [ $ans = 1 ] || break 393*00b67f09SDavid van Moolenbroek sleep 1 394*00b67f09SDavid van Moolenbroekdone 395*00b67f09SDavid van Moolenbroek[ $ans = 0 ] || ret=1 396*00b67f09SDavid van Moolenbroekif [ $ret != 0 ]; then echo "I:failed"; fi 397*00b67f09SDavid van Moolenbroekstatus=`expr $status + $ret` 398*00b67f09SDavid van Moolenbroek 399*00b67f09SDavid van Moolenbroekn=`expr $n + 1` 400*00b67f09SDavid van Moolenbroekecho "I:check the added record was properly signed ($n)" 401*00b67f09SDavid van Moolenbroekret=0 402*00b67f09SDavid van Moolenbroek$DIG $DIGOPTS @10.53.0.3 -p 5300 e.master A > dig.out.ns6.test$n 403*00b67f09SDavid van Moolenbroekgrep "10.0.0.5" dig.out.ns6.test$n > /dev/null || ans=1 404*00b67f09SDavid van Moolenbroekgrep "ANSWER: 2," dig.out.ns6.test$n > /dev/null || ans=1 405*00b67f09SDavid van Moolenbroekgrep "flags:.* ad[ ;]" dig.out.ns6.test$n > /dev/null || ans=1 406*00b67f09SDavid van Moolenbroek 407*00b67f09SDavid van Moolenbroekif [ $ret != 0 ]; then echo "I:failed"; fi 408*00b67f09SDavid van Moolenbroekstatus=`expr $status + $ret` 409*00b67f09SDavid van Moolenbroek 410*00b67f09SDavid van Moolenbroekn=`expr $n + 1` 411*00b67f09SDavid van Moolenbroekecho "I:checking that the dynamic master zone signed on initial load ($n)" 412*00b67f09SDavid van Moolenbroekret=0 413*00b67f09SDavid van Moolenbroekfor i in 1 2 3 4 5 6 7 8 9 10 414*00b67f09SDavid van Moolenbroekdo 415*00b67f09SDavid van Moolenbroek ret=0 416*00b67f09SDavid van Moolenbroek $RNDC -c ../common/rndc.conf -s 10.53.0.3 -p 9953 signing -list dynamic > signing.out.test$n 2>&1 417*00b67f09SDavid van Moolenbroek keys=`grep '^Done signing' signing.out.test$n | wc -l` 418*00b67f09SDavid van Moolenbroek [ $keys = 2 ] || ret=1 419*00b67f09SDavid van Moolenbroek if [ $ret = 0 ]; then break; fi 420*00b67f09SDavid van Moolenbroek sleep 1 421*00b67f09SDavid van Moolenbroekdone 422*00b67f09SDavid van Moolenbroekif [ $ret != 0 ]; then echo "I:failed"; fi 423*00b67f09SDavid van Moolenbroek 424*00b67f09SDavid van Moolenbroekn=`expr $n + 1` 425*00b67f09SDavid van Moolenbroekecho "I:checking master zone that was updated while offline is correct ($n)" 426*00b67f09SDavid van Moolenbroekret=0 427*00b67f09SDavid van Moolenbroekserial=`$DIG $DIGOPTS +short @10.53.0.3 -p 5300 updated SOA | awk '{print $3}'` 428*00b67f09SDavid van Moolenbroek# serial should have changed 429*00b67f09SDavid van Moolenbroek[ "$serial" = "2000042407" ] && ret=1 430*00b67f09SDavid van Moolenbroek# e.updated should exist and should be signed 431*00b67f09SDavid van Moolenbroek$DIG $DIGOPTS @10.53.0.3 -p 5300 e.updated A > dig.out.ns3.test$n 432*00b67f09SDavid van Moolenbroekgrep "status: NOERROR" dig.out.ns3.test$n > /dev/null || ret=1 433*00b67f09SDavid van Moolenbroekgrep "ANSWER: 2," dig.out.ns3.test$n > /dev/null || ret=1 434*00b67f09SDavid van Moolenbroek# updated.db.signed.jnl should exist, should have the source serial 435*00b67f09SDavid van Moolenbroek# of master2.db, and should show a minimal diff: no more than 8 added 436*00b67f09SDavid van Moolenbroek# records (SOA/RRSIG, 2 x NSEC/RRSIG, A/RRSIG), and 4 removed records 437*00b67f09SDavid van Moolenbroek# (SOA/RRSIG, NSEC/RRSIG). 438*00b67f09SDavid van Moolenbroekserial=`$JOURNALPRINT ns3/updated.db.signed.jnl | head -1 | awk '{print $4}'` 439*00b67f09SDavid van Moolenbroek[ "$serial" = "2000042408" ] || ret=1 440*00b67f09SDavid van Moolenbroekdiffsize=`$JOURNALPRINT ns3/updated.db.signed.jnl | wc -l` 441*00b67f09SDavid van Moolenbroek[ "$diffsize" -le 13 ] || ret=1 442*00b67f09SDavid van Moolenbroekif [ $ret != 0 ]; then echo "I:failed"; fi 443*00b67f09SDavid van Moolenbroekstatus=`expr $status + $ret` 444*00b67f09SDavid van Moolenbroek 445*00b67f09SDavid van Moolenbroekn=`expr $n + 1` 446*00b67f09SDavid van Moolenbroekecho "I:checking adding of record to unsigned master using UPDATE ($n)" 447*00b67f09SDavid van Moolenbroekret=0 448*00b67f09SDavid van Moolenbroek 449*00b67f09SDavid van Moolenbroek[ -f ns3/dynamic.db.jnl ] && { ret=1 ; echo "I:journal exists (pretest)" ; } 450*00b67f09SDavid van Moolenbroek 451*00b67f09SDavid van Moolenbroek$NSUPDATE << EOF 452*00b67f09SDavid van Moolenbroekzone dynamic 453*00b67f09SDavid van Moolenbroekserver 10.53.0.3 5300 454*00b67f09SDavid van Moolenbroekupdate add e.dynamic 0 A 1.2.3.4 455*00b67f09SDavid van Moolenbroeksend 456*00b67f09SDavid van MoolenbroekEOF 457*00b67f09SDavid van Moolenbroek 458*00b67f09SDavid van Moolenbroek[ -f ns3/dynamic.db.jnl ] || { ret=1 ; echo "I:journal does not exist (posttest)" ; } 459*00b67f09SDavid van Moolenbroek 460*00b67f09SDavid van Moolenbroekfor i in 1 2 3 4 5 6 7 8 9 10 461*00b67f09SDavid van Moolenbroekdo 462*00b67f09SDavid van Moolenbroek ans=0 463*00b67f09SDavid van Moolenbroek $DIG $DIGOPTS @10.53.0.3 -p 5300 e.dynamic > dig.out.ns3.test$n 464*00b67f09SDavid van Moolenbroek grep "status: NOERROR" dig.out.ns3.test$n > /dev/null || ans=1 465*00b67f09SDavid van Moolenbroek grep "ANSWER: 2," dig.out.ns3.test$n > /dev/null || ans=1 466*00b67f09SDavid van Moolenbroek grep "1.2.3.4" dig.out.ns3.test$n > /dev/null || ans=1 467*00b67f09SDavid van Moolenbroek [ $ans = 0 ] && break 468*00b67f09SDavid van Moolenbroek sleep 1 469*00b67f09SDavid van Moolenbroekdone 470*00b67f09SDavid van Moolenbroek[ $ans = 0 ] || { ret=1; echo "I:signed record not found"; cat dig.out.ns3.test$n ; } 471*00b67f09SDavid van Moolenbroek 472*00b67f09SDavid van Moolenbroekif [ $ret != 0 ]; then echo "I:failed"; fi 473*00b67f09SDavid van Moolenbroekstatus=`expr $status + $ret` 474*00b67f09SDavid van Moolenbroek 475*00b67f09SDavid van Moolenbroekn=`expr $n + 1` 476*00b67f09SDavid van Moolenbroekecho "I:stop bump in the wire signer server ($n)" 477*00b67f09SDavid van Moolenbroekret=0 478*00b67f09SDavid van Moolenbroek$PERL ../stop.pl . ns3 || ret=1 479*00b67f09SDavid van Moolenbroekif [ $ret != 0 ]; then echo "I:failed"; fi 480*00b67f09SDavid van Moolenbroekstatus=`expr $status + $ret` 481*00b67f09SDavid van Moolenbroek 482*00b67f09SDavid van Moolenbroekn=`expr $n + 1` 483*00b67f09SDavid van Moolenbroekecho "I:restart bump in the wire signer server ($n)" 484*00b67f09SDavid van Moolenbroekret=0 485*00b67f09SDavid van Moolenbroek$PERL ../start.pl --noclean --restart . ns3 || ret=1 486*00b67f09SDavid van Moolenbroekif [ $ret != 0 ]; then echo "I:failed"; fi 487*00b67f09SDavid van Moolenbroekstatus=`expr $status + $ret` 488*00b67f09SDavid van Moolenbroek 489*00b67f09SDavid van Moolenbroek$NSUPDATE << EOF 490*00b67f09SDavid van Moolenbroekzone bits 491*00b67f09SDavid van Moolenbroekserver 10.53.0.2 5300 492*00b67f09SDavid van Moolenbroekupdate add bits 0 SOA ns2.bits. . 2011072450 20 20 1814400 3600 493*00b67f09SDavid van Moolenbroeksend 494*00b67f09SDavid van MoolenbroekEOF 495*00b67f09SDavid van Moolenbroek 496*00b67f09SDavid van Moolenbroekn=`expr $n + 1` 497*00b67f09SDavid van Moolenbroekecho "I:checking YYYYMMDDVV (2011072450) serial on hidden master ($n)" 498*00b67f09SDavid van Moolenbroekret=0 499*00b67f09SDavid van Moolenbroek$DIG $DIGOPTS @10.53.0.2 -p 5300 bits SOA > dig.out.ns2.test$n 500*00b67f09SDavid van Moolenbroekgrep "status: NOERROR" dig.out.ns2.test$n > /dev/null || ret=1 501*00b67f09SDavid van Moolenbroekgrep "ANSWER: 1," dig.out.ns2.test$n > /dev/null || ret=1 502*00b67f09SDavid van Moolenbroekgrep "2011072450" dig.out.ns2.test$n > /dev/null || ret=1 503*00b67f09SDavid van Moolenbroekif [ $ret != 0 ]; then echo "I:failed"; fi 504*00b67f09SDavid van Moolenbroekstatus=`expr $status + $ret` 505*00b67f09SDavid van Moolenbroek 506*00b67f09SDavid van Moolenbroekn=`expr $n + 1` 507*00b67f09SDavid van Moolenbroekecho "I:checking YYYYMMDDVV (2011072450) serial in signed zone ($n)" 508*00b67f09SDavid van Moolenbroekfor i in 1 2 3 4 5 6 7 8 9 10 509*00b67f09SDavid van Moolenbroekdo 510*00b67f09SDavid van Moolenbroek ret=0 511*00b67f09SDavid van Moolenbroek $DIG $DIGOPTS @10.53.0.3 -p 5300 bits SOA > dig.out.ns3.test$n 512*00b67f09SDavid van Moolenbroek grep "status: NOERROR" dig.out.ns3.test$n > /dev/null || ret=1 513*00b67f09SDavid van Moolenbroek grep "ANSWER: 2," dig.out.ns3.test$n > /dev/null || ret=1 514*00b67f09SDavid van Moolenbroek grep "2011072450" dig.out.ns3.test$n > /dev/null || ret=1 515*00b67f09SDavid van Moolenbroek if [ $ret = 0 ]; then break; fi 516*00b67f09SDavid van Moolenbroek sleep 1 517*00b67f09SDavid van Moolenbroekdone 518*00b67f09SDavid van Moolenbroekif [ $ret != 0 ]; then echo "I:failed"; fi 519*00b67f09SDavid van Moolenbroekstatus=`expr $status + $ret` 520*00b67f09SDavid van Moolenbroek 521*00b67f09SDavid van Moolenbroek$NSUPDATE << EOF 522*00b67f09SDavid van Moolenbroekzone noixfr 523*00b67f09SDavid van Moolenbroekserver 10.53.0.4 5300 524*00b67f09SDavid van Moolenbroekupdate add noixfr 0 SOA ns4.noixfr. . 2011072450 20 20 1814400 3600 525*00b67f09SDavid van Moolenbroeksend 526*00b67f09SDavid van MoolenbroekEOF 527*00b67f09SDavid van Moolenbroek 528*00b67f09SDavid van Moolenbroekn=`expr $n + 1` 529*00b67f09SDavid van Moolenbroekecho "I:checking YYYYMMDDVV (2011072450) serial on hidden master, noixfr ($n)" 530*00b67f09SDavid van Moolenbroekret=0 531*00b67f09SDavid van Moolenbroek$DIG $DIGOPTS @10.53.0.4 -p 5300 noixfr SOA > dig.out.ns4.test$n 532*00b67f09SDavid van Moolenbroekgrep "status: NOERROR" dig.out.ns4.test$n > /dev/null || ret=1 533*00b67f09SDavid van Moolenbroekgrep "ANSWER: 1," dig.out.ns4.test$n > /dev/null || ret=1 534*00b67f09SDavid van Moolenbroekgrep "2011072450" dig.out.ns4.test$n > /dev/null || ret=1 535*00b67f09SDavid van Moolenbroekif [ $ret != 0 ]; then echo "I:failed"; fi 536*00b67f09SDavid van Moolenbroekstatus=`expr $status + $ret` 537*00b67f09SDavid van Moolenbroek 538*00b67f09SDavid van Moolenbroekn=`expr $n + 1` 539*00b67f09SDavid van Moolenbroekecho "I:checking YYYYMMDDVV (2011072450) serial in signed zone, noixfr ($n)" 540*00b67f09SDavid van Moolenbroekfor i in 1 2 3 4 5 6 7 8 9 10 541*00b67f09SDavid van Moolenbroekdo 542*00b67f09SDavid van Moolenbroek ret=0 543*00b67f09SDavid van Moolenbroek $DIG $DIGOPTS @10.53.0.3 -p 5300 noixfr SOA > dig.out.ns3.test$n 544*00b67f09SDavid van Moolenbroek grep "status: NOERROR" dig.out.ns3.test$n > /dev/null || ret=1 545*00b67f09SDavid van Moolenbroek grep "ANSWER: 2," dig.out.ns3.test$n > /dev/null || ret=1 546*00b67f09SDavid van Moolenbroek grep "2011072450" dig.out.ns3.test$n > /dev/null || ret=1 547*00b67f09SDavid van Moolenbroek if [ $ret = 0 ]; then break; fi 548*00b67f09SDavid van Moolenbroek sleep 1 549*00b67f09SDavid van Moolenbroekdone 550*00b67f09SDavid van Moolenbroekif [ $ret != 0 ]; then echo "I:failed"; fi 551*00b67f09SDavid van Moolenbroekstatus=`expr $status + $ret` 552*00b67f09SDavid van Moolenbroek 553*00b67f09SDavid van Moolenbroek$NSUPDATE << EOF 554*00b67f09SDavid van Moolenbroekzone bits 555*00b67f09SDavid van Moolenbroekserver 10.53.0.3 5300 556*00b67f09SDavid van Moolenbroekupdate add bits 0 SOA ns2.bits. . 2011072460 20 20 1814400 3600 557*00b67f09SDavid van Moolenbroeksend 558*00b67f09SDavid van MoolenbroekEOF 559*00b67f09SDavid van Moolenbroek 560*00b67f09SDavid van Moolenbroekn=`expr $n + 1` 561*00b67f09SDavid van Moolenbroekecho "I:checking forwarded update on hidden master ($n)" 562*00b67f09SDavid van Moolenbroekret=0 563*00b67f09SDavid van Moolenbroek$DIG $DIGOPTS @10.53.0.2 -p 5300 bits SOA > dig.out.ns2.test$n 564*00b67f09SDavid van Moolenbroekgrep "status: NOERROR" dig.out.ns2.test$n > /dev/null || ret=1 565*00b67f09SDavid van Moolenbroekgrep "ANSWER: 1," dig.out.ns2.test$n > /dev/null || ret=1 566*00b67f09SDavid van Moolenbroekgrep "2011072460" dig.out.ns2.test$n > /dev/null || ret=1 567*00b67f09SDavid van Moolenbroekif [ $ret != 0 ]; then echo "I:failed"; fi 568*00b67f09SDavid van Moolenbroekstatus=`expr $status + $ret` 569*00b67f09SDavid van Moolenbroek 570*00b67f09SDavid van Moolenbroekn=`expr $n + 1` 571*00b67f09SDavid van Moolenbroekecho "I:checking forwarded update on signed zone ($n)" 572*00b67f09SDavid van Moolenbroekfor i in 1 2 3 4 5 6 7 8 9 10 573*00b67f09SDavid van Moolenbroekdo 574*00b67f09SDavid van Moolenbroek ret=0 575*00b67f09SDavid van Moolenbroek $DIG $DIGOPTS @10.53.0.3 -p 5300 bits SOA > dig.out.ns3.test$n 576*00b67f09SDavid van Moolenbroek grep "status: NOERROR" dig.out.ns3.test$n > /dev/null || ret=1 577*00b67f09SDavid van Moolenbroek grep "ANSWER: 2," dig.out.ns3.test$n > /dev/null || ret=1 578*00b67f09SDavid van Moolenbroek grep "2011072460" dig.out.ns3.test$n > /dev/null || ret=1 579*00b67f09SDavid van Moolenbroek if [ $ret = 0 ]; then break; fi 580*00b67f09SDavid van Moolenbroek sleep 1 581*00b67f09SDavid van Moolenbroekdone 582*00b67f09SDavid van Moolenbroekif [ $ret != 0 ]; then echo "I:failed"; fi 583*00b67f09SDavid van Moolenbroekstatus=`expr $status + $ret` 584*00b67f09SDavid van Moolenbroek 585*00b67f09SDavid van Moolenbroek$NSUPDATE << EOF 586*00b67f09SDavid van Moolenbroekzone noixfr 587*00b67f09SDavid van Moolenbroekserver 10.53.0.3 5300 588*00b67f09SDavid van Moolenbroekupdate add noixfr 0 SOA ns4.noixfr. . 2011072460 20 20 1814400 3600 589*00b67f09SDavid van Moolenbroeksend 590*00b67f09SDavid van MoolenbroekEOF 591*00b67f09SDavid van Moolenbroek 592*00b67f09SDavid van Moolenbroekn=`expr $n + 1` 593*00b67f09SDavid van Moolenbroekecho "I:checking forwarded update on hidden master, noixfr ($n)" 594*00b67f09SDavid van Moolenbroekret=0 595*00b67f09SDavid van Moolenbroek$DIG $DIGOPTS @10.53.0.4 -p 5300 noixfr SOA > dig.out.ns4.test$n 596*00b67f09SDavid van Moolenbroekgrep "status: NOERROR" dig.out.ns4.test$n > /dev/null || ret=1 597*00b67f09SDavid van Moolenbroekgrep "ANSWER: 1," dig.out.ns4.test$n > /dev/null || ret=1 598*00b67f09SDavid van Moolenbroekgrep "2011072460" dig.out.ns4.test$n > /dev/null || ret=1 599*00b67f09SDavid van Moolenbroekif [ $ret != 0 ]; then echo "I:failed"; fi 600*00b67f09SDavid van Moolenbroekstatus=`expr $status + $ret` 601*00b67f09SDavid van Moolenbroek 602*00b67f09SDavid van Moolenbroekn=`expr $n + 1` 603*00b67f09SDavid van Moolenbroekecho "I:checking forwarded update on signed zone, noixfr ($n)" 604*00b67f09SDavid van Moolenbroekfor i in 1 2 3 4 5 6 7 8 9 10 605*00b67f09SDavid van Moolenbroekdo 606*00b67f09SDavid van Moolenbroek ret=0 607*00b67f09SDavid van Moolenbroek $DIG $DIGOPTS @10.53.0.3 -p 5300 noixfr SOA > dig.out.ns3.test$n 608*00b67f09SDavid van Moolenbroek grep "status: NOERROR" dig.out.ns3.test$n > /dev/null || ret=1 609*00b67f09SDavid van Moolenbroek grep "ANSWER: 2," dig.out.ns3.test$n > /dev/null || ret=1 610*00b67f09SDavid van Moolenbroek grep "2011072460" dig.out.ns3.test$n > /dev/null || ret=1 611*00b67f09SDavid van Moolenbroek if [ $ret = 0 ]; then break; fi 612*00b67f09SDavid van Moolenbroek sleep 1 613*00b67f09SDavid van Moolenbroekdone 614*00b67f09SDavid van Moolenbroekif [ $ret != 0 ]; then echo "I:failed"; fi 615*00b67f09SDavid van Moolenbroekstatus=`expr $status + $ret` 616*00b67f09SDavid van Moolenbroek 617*00b67f09SDavid van Moolenbroekn=`expr $n + 1` 618*00b67f09SDavid van Moolenbroekecho "I:checking turning on of inline signing in a slave zone via reload ($n)" 619*00b67f09SDavid van Moolenbroek$DIG $DIGOPTS @10.53.0.5 -p 5300 +dnssec bits SOA > dig.out.ns5.test$n 620*00b67f09SDavid van Moolenbroekgrep "status: NOERROR" dig.out.ns5.test$n > /dev/null || ret=1 621*00b67f09SDavid van Moolenbroekgrep "ANSWER: 1," dig.out.ns5.test$n > /dev/null || ret=1 622*00b67f09SDavid van Moolenbroekif [ $ret != 0 ]; then echo "I:setup broken"; fi 623*00b67f09SDavid van Moolenbroekstatus=`expr $status + $ret` 624*00b67f09SDavid van Moolenbroekcp ns5/named.conf.post ns5/named.conf 625*00b67f09SDavid van Moolenbroek(cd ns5; $KEYGEN -q -r $RANDFILE bits) > /dev/null 2>&1 626*00b67f09SDavid van Moolenbroek(cd ns5; $KEYGEN -q -r $RANDFILE -f KSK bits) > /dev/null 2>&1 627*00b67f09SDavid van Moolenbroek$RNDC -c ../common/rndc.conf -s 10.53.0.5 -p 9953 reload 2>&1 | sed 's/^/I:ns5 /' 628*00b67f09SDavid van Moolenbroekfor i in 1 2 3 4 5 6 7 8 9 10 629*00b67f09SDavid van Moolenbroekdo 630*00b67f09SDavid van Moolenbroek ret=0 631*00b67f09SDavid van Moolenbroek $DIG $DIGOPTS @10.53.0.5 -p 5300 bits SOA > dig.out.ns5.test$n 632*00b67f09SDavid van Moolenbroek grep "status: NOERROR" dig.out.ns5.test$n > /dev/null || ret=1 633*00b67f09SDavid van Moolenbroek grep "ANSWER: 2," dig.out.ns5.test$n > /dev/null || ret=1 634*00b67f09SDavid van Moolenbroek if [ $ret = 0 ]; then break; fi 635*00b67f09SDavid van Moolenbroek sleep 1 636*00b67f09SDavid van Moolenbroekdone 637*00b67f09SDavid van Moolenbroekif [ $ret != 0 ]; then echo "I:failed"; fi 638*00b67f09SDavid van Moolenbroekstatus=`expr $status + $ret` 639*00b67f09SDavid van Moolenbroek 640*00b67f09SDavid van Moolenbroekn=`expr $n + 1` 641*00b67f09SDavid van Moolenbroekecho "I:checking rndc freeze/thaw of dynamic inline zone no change ($n)" 642*00b67f09SDavid van Moolenbroekret=0 643*00b67f09SDavid van Moolenbroek$RNDC -c ../common/rndc.conf -s 10.53.0.3 -p 9953 freeze dynamic > freeze.test$n 2>&1 || { echo "I: rndc freeze dynamic failed" ; sed 's/^/I:/' < freeze.test$n ; ret=1; } 644*00b67f09SDavid van Moolenbroeksleep 1 645*00b67f09SDavid van Moolenbroek$RNDC -c ../common/rndc.conf -s 10.53.0.3 -p 9953 thaw dynamic > thaw.test$n 2>&1 || { echo "I: rndc thaw dynamic failed" ; ret=1; } 646*00b67f09SDavid van Moolenbroeksleep 1 647*00b67f09SDavid van Moolenbroekgrep "zone dynamic/IN (unsigned): ixfr-from-differences: unchanged" ns3/named.run > /dev/null || ret=1 648*00b67f09SDavid van Moolenbroekif [ $ret != 0 ]; then echo "I:failed"; fi 649*00b67f09SDavid van Moolenbroekstatus=`expr $status + $ret` 650*00b67f09SDavid van Moolenbroek 651*00b67f09SDavid van Moolenbroek 652*00b67f09SDavid van Moolenbroekn=`expr $n + 1` 653*00b67f09SDavid van Moolenbroekecho "I:checking rndc freeze/thaw of dynamic inline zone ($n)" 654*00b67f09SDavid van Moolenbroekret=0 655*00b67f09SDavid van Moolenbroek$RNDC -c ../common/rndc.conf -s 10.53.0.3 -p 9953 freeze dynamic > freeze.test$n 2>&1 || ret=1 656*00b67f09SDavid van Moolenbroeksleep 1 657*00b67f09SDavid van Moolenbroekawk '$2 == ";" && $3 == "serial" { printf("%d %s %s\n", $1 + 1, $2, $3); next; } 658*00b67f09SDavid van Moolenbroek { print; } 659*00b67f09SDavid van Moolenbroek END { print "freeze1.dynamic. 0 TXT freeze1"; } ' ns3/dynamic.db > ns3/dynamic.db.new 660*00b67f09SDavid van Moolenbroekmv ns3/dynamic.db.new ns3/dynamic.db 661*00b67f09SDavid van Moolenbroek$RNDC -c ../common/rndc.conf -s 10.53.0.3 -p 9953 thaw dynamic > thaw.test$n 2>&1 || ret=1 662*00b67f09SDavid van Moolenbroekif [ $ret != 0 ]; then echo "I:failed"; fi 663*00b67f09SDavid van Moolenbroekstatus=`expr $status + $ret` 664*00b67f09SDavid van Moolenbroek 665*00b67f09SDavid van Moolenbroekn=`expr $n + 1` 666*00b67f09SDavid van Moolenbroekecho "I:check added record freeze1.dynamic ($n)" 667*00b67f09SDavid van Moolenbroekfor i in 1 2 3 4 5 6 7 8 9 668*00b67f09SDavid van Moolenbroekdo 669*00b67f09SDavid van Moolenbroek ret=0 670*00b67f09SDavid van Moolenbroek $DIG $DIGOPTS @10.53.0.3 -p 5300 freeze1.dynamic TXT > dig.out.ns3.test$n 671*00b67f09SDavid van Moolenbroek grep "status: NOERROR" dig.out.ns3.test$n > /dev/null || ret=1 672*00b67f09SDavid van Moolenbroek grep "ANSWER: 2," dig.out.ns3.test$n > /dev/null || ret=1 673*00b67f09SDavid van Moolenbroek test $ret = 0 && break 674*00b67f09SDavid van Moolenbroek sleep 1 675*00b67f09SDavid van Moolenbroekdone 676*00b67f09SDavid van Moolenbroekif [ $ret != 0 ]; then echo "I:failed"; fi 677*00b67f09SDavid van Moolenbroekstatus=`expr $status + $ret` 678*00b67f09SDavid van Moolenbroek 679*00b67f09SDavid van Moolenbroek# allow 1 second so that file time stamps change 680*00b67f09SDavid van Moolenbroeksleep 1 681*00b67f09SDavid van Moolenbroek 682*00b67f09SDavid van Moolenbroekn=`expr $n + 1` 683*00b67f09SDavid van Moolenbroekecho "I:checking rndc freeze/thaw of server ($n)" 684*00b67f09SDavid van Moolenbroekret=0 685*00b67f09SDavid van Moolenbroek$RNDC -c ../common/rndc.conf -s 10.53.0.3 -p 9953 freeze > freeze.test$n 2>&1 || ret=1 686*00b67f09SDavid van Moolenbroeksleep 1 687*00b67f09SDavid van Moolenbroekawk '$2 == ";" && $3 == "serial" { printf("%d %s %s\n", $1 + 1, $2, $3); next; } 688*00b67f09SDavid van Moolenbroek { print; } 689*00b67f09SDavid van Moolenbroek END { print "freeze2.dynamic. 0 TXT freeze2"; } ' ns3/dynamic.db > ns3/dynamic.db.new 690*00b67f09SDavid van Moolenbroekmv ns3/dynamic.db.new ns3/dynamic.db 691*00b67f09SDavid van Moolenbroek$RNDC -c ../common/rndc.conf -s 10.53.0.3 -p 9953 thaw > thaw.test$n 2>&1 || ret=1 692*00b67f09SDavid van Moolenbroekif [ $ret != 0 ]; then echo "I:failed"; fi 693*00b67f09SDavid van Moolenbroekstatus=`expr $status + $ret` 694*00b67f09SDavid van Moolenbroek 695*00b67f09SDavid van Moolenbroekn=`expr $n + 1` 696*00b67f09SDavid van Moolenbroekecho "I:check added record freeze2.dynamic ($n)" 697*00b67f09SDavid van Moolenbroekfor i in 1 2 3 4 5 6 7 8 9 698*00b67f09SDavid van Moolenbroekdo 699*00b67f09SDavid van Moolenbroek ret=0 700*00b67f09SDavid van Moolenbroek $DIG $DIGOPTS @10.53.0.3 -p 5300 freeze2.dynamic TXT > dig.out.ns3.test$n 701*00b67f09SDavid van Moolenbroek grep "status: NOERROR" dig.out.ns3.test$n > /dev/null || ret=1 702*00b67f09SDavid van Moolenbroek grep "ANSWER: 2," dig.out.ns3.test$n > /dev/null || ret=1 703*00b67f09SDavid van Moolenbroek test $ret = 0 && break 704*00b67f09SDavid van Moolenbroek sleep 1 705*00b67f09SDavid van Moolenbroekdone 706*00b67f09SDavid van Moolenbroekif [ $ret != 0 ]; then echo "I:failed"; fi 707*00b67f09SDavid van Moolenbroekstatus=`expr $status + $ret` 708*00b67f09SDavid van Moolenbroek 709*00b67f09SDavid van Moolenbroekn=`expr $n + 1` 710*00b67f09SDavid van Moolenbroekecho "I:check rndc reload allows reuse of inline-signing zones ($n)" 711*00b67f09SDavid van Moolenbroekret=0 712*00b67f09SDavid van Moolenbroek{ $RNDC -c ../common/rndc.conf -s 10.53.0.3 -p 9953 reload 2>&1 || ret=1 ; } | 713*00b67f09SDavid van Moolenbroeksed 's/^/I:ns3 /' 714*00b67f09SDavid van Moolenbroekgrep "not reusable" ns3/named.run > /dev/null 2>&1 && ret=1 715*00b67f09SDavid van Moolenbroekif [ $ret != 0 ]; then echo "I:failed"; fi 716*00b67f09SDavid van Moolenbroekstatus=`expr $status + $ret` 717*00b67f09SDavid van Moolenbroek 718*00b67f09SDavid van Moolenbroekn=`expr $n + 1` 719*00b67f09SDavid van Moolenbroekecho "I:check rndc sync removes both signed and unsigned journals ($n)" 720*00b67f09SDavid van Moolenbroekret=0 721*00b67f09SDavid van Moolenbroek[ -f ns3/dynamic.db.jnl ] || ret=1 722*00b67f09SDavid van Moolenbroek[ -f ns3/dynamic.db.signed.jnl ] || ret=1 723*00b67f09SDavid van Moolenbroek$RNDC -c ../common/rndc.conf -s 10.53.0.3 -p 9953 sync -clean dynamic 2>&1 || ret=1 724*00b67f09SDavid van Moolenbroek[ -f ns3/dynamic.db.jnl ] && ret=1 725*00b67f09SDavid van Moolenbroek[ -f ns3/dynamic.db.signed.jnl ] && ret=1 726*00b67f09SDavid van Moolenbroekif [ $ret != 0 ]; then echo "I:failed"; fi 727*00b67f09SDavid van Moolenbroekstatus=`expr $status + $ret` 728*00b67f09SDavid van Moolenbroek 729*00b67f09SDavid van Moolenbroek$NSUPDATE << EOF 730*00b67f09SDavid van Moolenbroekzone retransfer 731*00b67f09SDavid van Moolenbroekserver 10.53.0.2 5300 732*00b67f09SDavid van Moolenbroekupdate add added.retransfer 0 A 1.2.3.4 733*00b67f09SDavid van Moolenbroeksend 734*00b67f09SDavid van Moolenbroek 735*00b67f09SDavid van MoolenbroekEOF 736*00b67f09SDavid van Moolenbroek 737*00b67f09SDavid van Moolenbroekn=`expr $n + 1` 738*00b67f09SDavid van Moolenbroekecho "I:checking that the retransfer record is added on the hidden master ($n)" 739*00b67f09SDavid van Moolenbroekret=0 740*00b67f09SDavid van Moolenbroek$DIG $DIGOPTS @10.53.0.2 -p 5300 added.retransfer A > dig.out.ns2.test$n 741*00b67f09SDavid van Moolenbroekgrep "status: NOERROR" dig.out.ns2.test$n > /dev/null || ret=1 742*00b67f09SDavid van Moolenbroekgrep "ANSWER: 1," dig.out.ns2.test$n > /dev/null || ret=1 743*00b67f09SDavid van Moolenbroekif [ $ret != 0 ]; then echo "I:failed"; fi 744*00b67f09SDavid van Moolenbroekstatus=`expr $status + $ret` 745*00b67f09SDavid van Moolenbroek 746*00b67f09SDavid van Moolenbroekn=`expr $n + 1` 747*00b67f09SDavid van Moolenbroekecho "I:checking that the change has not been transfered due to notify ($n)" 748*00b67f09SDavid van Moolenbroekret=0 749*00b67f09SDavid van Moolenbroekfor i in 0 1 2 3 4 5 6 7 8 9 750*00b67f09SDavid van Moolenbroekdo 751*00b67f09SDavid van Moolenbroek ans=0 752*00b67f09SDavid van Moolenbroek $DIG $DIGOPTS @10.53.0.3 -p 5300 added.retransfer A > dig.out.ns3.test$n 753*00b67f09SDavid van Moolenbroek grep "status: NOERROR" dig.out.ns3.test$n > /dev/null || ans=1 754*00b67f09SDavid van Moolenbroek [ $ans = 0 ] && break 755*00b67f09SDavid van Moolenbroek sleep 1 756*00b67f09SDavid van Moolenbroekdone 757*00b67f09SDavid van Moolenbroekif [ $ans != 1 ]; then echo "I:failed"; ret=1; fi 758*00b67f09SDavid van Moolenbroekstatus=`expr $status + $ret` 759*00b67f09SDavid van Moolenbroekn=`expr $n + 1` 760*00b67f09SDavid van Moolenbroek 761*00b67f09SDavid van Moolenbroekecho "I:check rndc retransfer of a inline slave zone works ($n)" 762*00b67f09SDavid van Moolenbroekret=0 763*00b67f09SDavid van Moolenbroek$RNDC -c ../common/rndc.conf -s 10.53.0.3 -p 9953 retransfer retransfer 2>&1 || ret=1 764*00b67f09SDavid van Moolenbroekfor i in 0 1 2 3 4 5 6 7 8 9 765*00b67f09SDavid van Moolenbroekdo 766*00b67f09SDavid van Moolenbroek ans=0 767*00b67f09SDavid van Moolenbroek $DIG $DIGOPTS @10.53.0.3 -p 5300 added.retransfer A > dig.out.ns3.test$n 768*00b67f09SDavid van Moolenbroek grep "status: NOERROR" dig.out.ns3.test$n > /dev/null || ans=1 769*00b67f09SDavid van Moolenbroek grep "ANSWER: 2," dig.out.ns3.test$n > /dev/null || ans=1 770*00b67f09SDavid van Moolenbroek [ $ans = 0 ] && break 771*00b67f09SDavid van Moolenbroek sleep 1 772*00b67f09SDavid van Moolenbroekdone 773*00b67f09SDavid van Moolenbroek[ $ans = 1 ] && ret=1 774*00b67f09SDavid van Moolenbroekn=`expr $n + 1` 775*00b67f09SDavid van Moolenbroekif [ $ret != 0 ]; then echo "I:failed"; fi 776*00b67f09SDavid van Moolenbroekstatus=`expr $status + $ret` 777*00b67f09SDavid van Moolenbroek 778*00b67f09SDavid van Moolenbroekecho "I:check rndc retransfer of a inline nsec3 slave retains nsec3 ($n)" 779*00b67f09SDavid van Moolenbroekret=0 780*00b67f09SDavid van Moolenbroekfor i in 0 1 2 3 4 5 6 7 8 9 781*00b67f09SDavid van Moolenbroekdo 782*00b67f09SDavid van Moolenbroek ans=0 783*00b67f09SDavid van Moolenbroek $DIG $DIGOPTS @10.53.0.3 -p 5300 nonexist.retransfer3 A > dig.out.ns3.pre.test$n 784*00b67f09SDavid van Moolenbroek grep "status: NXDOMAIN" dig.out.ns3.pre.test$n > /dev/null || ans=1 785*00b67f09SDavid van Moolenbroek grep "NSEC3" dig.out.ns3.pre.test$n > /dev/null || ans=1 786*00b67f09SDavid van Moolenbroek [ $ans = 0 ] && break 787*00b67f09SDavid van Moolenbroek sleep 1 788*00b67f09SDavid van Moolenbroekdone 789*00b67f09SDavid van Moolenbroek$RNDC -c ../common/rndc.conf -s 10.53.0.3 -p 9953 retransfer retransfer3 2>&1 || ret=1 790*00b67f09SDavid van Moolenbroekfor i in 0 1 2 3 4 5 6 7 8 9 791*00b67f09SDavid van Moolenbroekdo 792*00b67f09SDavid van Moolenbroek ans=0 793*00b67f09SDavid van Moolenbroek $DIG $DIGOPTS @10.53.0.3 -p 5300 nonexist.retransfer3 A > dig.out.ns3.post.test$n 794*00b67f09SDavid van Moolenbroek grep "status: NXDOMAIN" dig.out.ns3.post.test$n > /dev/null || ans=1 795*00b67f09SDavid van Moolenbroek grep "NSEC3" dig.out.ns3.post.test$n > /dev/null || ans=1 796*00b67f09SDavid van Moolenbroek [ $ans = 0 ] && break 797*00b67f09SDavid van Moolenbroek sleep 1 798*00b67f09SDavid van Moolenbroekdone 799*00b67f09SDavid van Moolenbroek[ $ans = 1 ] && ret=1 800*00b67f09SDavid van Moolenbroekn=`expr $n + 1` 801*00b67f09SDavid van Moolenbroekif [ $ret != 0 ]; then echo "I:failed"; fi 802*00b67f09SDavid van Moolenbroekstatus=`expr $status + $ret` 803*00b67f09SDavid van Moolenbroek 804*00b67f09SDavid van Moolenbroekn=`expr $n + 1` 805*00b67f09SDavid van Moolenbroekecho "I:stop bump in the wire signer server ($n)" 806*00b67f09SDavid van Moolenbroekret=0 807*00b67f09SDavid van Moolenbroek$PERL ../stop.pl . ns3 || ret=1 808*00b67f09SDavid van Moolenbroekif [ $ret != 0 ]; then echo "I:failed"; fi 809*00b67f09SDavid van Moolenbroekstatus=`expr $status + $ret` 810*00b67f09SDavid van Moolenbroek 811*00b67f09SDavid van Moolenbroekecho "I:update SOA record while stopped" 812*00b67f09SDavid van Moolenbroekcp ns3/master4.db.in ns3/master.db 813*00b67f09SDavid van Moolenbroekrm ns3/master.db.jnl 814*00b67f09SDavid van Moolenbroek 815*00b67f09SDavid van Moolenbroekn=`expr $n + 1` 816*00b67f09SDavid van Moolenbroekecho "I:restart bump in the wire signer server ($n)" 817*00b67f09SDavid van Moolenbroekret=0 818*00b67f09SDavid van Moolenbroek$PERL ../start.pl --noclean --restart . ns3 || ret=1 819*00b67f09SDavid van Moolenbroekif [ $ret != 0 ]; then echo "I:failed"; fi 820*00b67f09SDavid van Moolenbroekstatus=`expr $status + $ret` 821*00b67f09SDavid van Moolenbroek 822*00b67f09SDavid van Moolenbroekn=`expr $n + 1` 823*00b67f09SDavid van Moolenbroekecho "I:updates to SOA parameters other than serial while stopped are reflected in signed zone ($n)" 824*00b67f09SDavid van Moolenbroekret=0 825*00b67f09SDavid van Moolenbroekfor i in 1 2 3 4 5 6 7 8 9 826*00b67f09SDavid van Moolenbroekdo 827*00b67f09SDavid van Moolenbroek ans=0 828*00b67f09SDavid van Moolenbroek $DIG $DIGOPTS @10.53.0.3 -p 5300 master SOA > dig.out.ns3.test$n 829*00b67f09SDavid van Moolenbroek grep "hostmaster" dig.out.ns3.test$n > /dev/null || ans=1 830*00b67f09SDavid van Moolenbroek grep "ANSWER: 2," dig.out.ns3.test$n > /dev/null || ans=1 831*00b67f09SDavid van Moolenbroek [ $ans = 1 ] || break 832*00b67f09SDavid van Moolenbroek sleep 1 833*00b67f09SDavid van Moolenbroekdone 834*00b67f09SDavid van Moolenbroek[ $ans = 0 ] || ret=1 835*00b67f09SDavid van Moolenbroekif [ $ret != 0 ]; then echo "I:failed"; fi 836*00b67f09SDavid van Moolenbroekstatus=`expr $status + $ret` 837*00b67f09SDavid van Moolenbroek 838*00b67f09SDavid van Moolenbroekn=`expr $n + 1` 839*00b67f09SDavid van Moolenbroekecho "I:test add/del zone combinations ($n)" 840*00b67f09SDavid van Moolenbroekret=0 841*00b67f09SDavid van Moolenbroekfor zone in a b c d e f g h i j k l m n o p q r s t u v w x y z 842*00b67f09SDavid van Moolenbroekdo 843*00b67f09SDavid van Moolenbroek$RNDC -c ../common/rndc.conf -s 10.53.0.2 -p 9953 addzone test-$zone \ 844*00b67f09SDavid van Moolenbroek '{ type master; file "bits.db.in"; allow-transfer { any; }; };' 845*00b67f09SDavid van Moolenbroek$DIG $DIGOPTS @10.53.0.2 -p 5300 test-$zone SOA > dig.out.ns2.$zone.test$n 846*00b67f09SDavid van Moolenbroekgrep "status: NOERROR," dig.out.ns2.$zone.test$n > /dev/null || { ret=1; cat dig.out.ns2.$zone.test$n; } 847*00b67f09SDavid van Moolenbroek$RNDC -c ../common/rndc.conf -s 10.53.0.3 -p 9953 addzone test-$zone \ 848*00b67f09SDavid van Moolenbroek '{ type slave; masters { 10.53.0.2; }; file "'test-$zone.bk'"; inline-signing yes; auto-dnssec maintain; allow-transfer { any; }; };' 849*00b67f09SDavid van Moolenbroek$RNDC -c ../common/rndc.conf -s 10.53.0.3 -p 9953 delzone test-$zone > /dev/null 2>&1 850*00b67f09SDavid van Moolenbroekdone 851*00b67f09SDavid van Moolenbroek 852*00b67f09SDavid van Moolenbroekn=`expr $n + 1` 853*00b67f09SDavid van Moolenbroekecho "I:testing adding external keys to a inline zone ($n)" 854*00b67f09SDavid van Moolenbroekret=0 855*00b67f09SDavid van Moolenbroek$DIG $DIGOPTS @10.53.0.3 -p 5300 dnskey externalkey > dig.out.ns3.test$n 856*00b67f09SDavid van Moolenbroekfor alg in 3 7 12 13 857*00b67f09SDavid van Moolenbroekdo 858*00b67f09SDavid van Moolenbroek [ $alg = 3 -a ! -f checkdsa ] && continue; 859*00b67f09SDavid van Moolenbroek [ $alg = 12 -a ! -f checkgost ] && continue; 860*00b67f09SDavid van Moolenbroek [ $alg = 13 -a ! -f checkecdsa ] && continue; 861*00b67f09SDavid van Moolenbroek 862*00b67f09SDavid van Moolenbroek case $alg in 863*00b67f09SDavid van Moolenbroek 3) echo "I: checking DSA";; 864*00b67f09SDavid van Moolenbroek 7) echo "I: checking NSEC3RSASHA1";; 865*00b67f09SDavid van Moolenbroek 12) echo "I: checking GOST";; 866*00b67f09SDavid van Moolenbroek 13) echo "I: checking ECDSAP256SHA256";; 867*00b67f09SDavid van Moolenbroek *) echo "I: checking $alg";; 868*00b67f09SDavid van Moolenbroek esac 869*00b67f09SDavid van Moolenbroek 870*00b67f09SDavid van Moolenbroek dnskeys=`grep "IN.DNSKEY.25[67] [0-9]* $alg " dig.out.ns3.test$n | wc -l` 871*00b67f09SDavid van Moolenbroek rrsigs=`grep "RRSIG.DNSKEY $alg " dig.out.ns3.test$n | wc -l` 872*00b67f09SDavid van Moolenbroek test ${dnskeys:-0} -eq 3 || { echo "I: failed $alg (dnskeys ${dnskeys:-0})"; ret=1; } 873*00b67f09SDavid van Moolenbroek test ${rrsigs:-0} -eq 2 || { echo "I: failed $alg (rrsigs ${rrsigs:-0})"; ret=1; } 874*00b67f09SDavid van Moolenbroekdone 875*00b67f09SDavid van Moolenbroekstatus=`expr $status + $ret` 876*00b67f09SDavid van Moolenbroek 877*00b67f09SDavid van Moolenbroekn=`expr $n + 1` 878*00b67f09SDavid van Moolenbroekecho "I:testing imported key won't overwrite a private key ($n)" 879*00b67f09SDavid van Moolenbroekret=0 880*00b67f09SDavid van Moolenbroekkey=`$KEYGEN -r $RANDFILE -q import.example` 881*00b67f09SDavid van Moolenbroekcp ${key}.key import.key 882*00b67f09SDavid van Moolenbroek# import should fail 883*00b67f09SDavid van Moolenbroek$IMPORTKEY -f import.key import.example > /dev/null 2>&1 && ret=1 884*00b67f09SDavid van Moolenbroekrm -f ${key}.private 885*00b67f09SDavid van Moolenbroek# private key removed; import should now succeed 886*00b67f09SDavid van Moolenbroek$IMPORTKEY -f import.key import.example > /dev/null 2>&1 || ret=1 887*00b67f09SDavid van Moolenbroek# now that it's an external key, re-import should succeed 888*00b67f09SDavid van Moolenbroek$IMPORTKEY -f import.key import.example > /dev/null 2>&1 || ret=1 889*00b67f09SDavid van Moolenbroekif [ $ret != 0 ]; then echo "I:failed"; fi 890*00b67f09SDavid van Moolenbroekstatus=`expr $status + $ret` 891*00b67f09SDavid van Moolenbroek 892*00b67f09SDavid van Moolenbroekexit $status 893