1# #-- acl_interface.test.scenario --# 2# source the master var file when it's there 3[ -f ../.tpkg.var.master ] && source ../.tpkg.var.master 4# use .tpkg.var.test for in test variable passing 5[ -f .tpkg.var.test ] && source .tpkg.var.test 6PRE="../.." 7. ../common.sh 8 9ip addr add $IPV4_ADDR dev lo 10ip addr add $IPV6_ADDR dev lo 11ip link set lo up 12 13ip link add $INTERFACE type dummy 14ip addr add $INTERFACE_ADDR_1 dev $INTERFACE 15ip addr add $INTERFACE_ADDR_2 dev $INTERFACE 16ip addr add $INTERFACE_ADDR_3 dev $INTERFACE 17ip addr add $INTERFACE_ADDR_4 dev $INTERFACE 18ip link set $INTERFACE up 19 20# start the forwarder in the background 21get_ldns_testns 22$LDNS_TESTNS -p $FORWARD_PORT acl_interface.testns >fwd.log 2>&1 & 23FWD_PID=$! 24echo "FWD_PID=$FWD_PID" >> .tpkg.var.test 25 26# start the stub in the background 27$LDNS_TESTNS -p $STUB_PORT acl_interface.testns2 >fwd2.log 2>&1 & 28STUB_PID=$! 29echo "STUB_PID=$STUB_PID" >> .tpkg.var.test 30 31# start unbound in the background 32$PRE/unbound -d -c ub.conf >unbound.log 2>&1 & 33UNBOUND_PID=$! 34echo "UNBOUND_PID=$UNBOUND_PID" >> .tpkg.var.test 35 36cat .tpkg.var.test 37wait_ldns_testns_up fwd.log 38wait_ldns_testns_up fwd2.log 39wait_unbound_up unbound.log 40 41end () { 42 echo "> cat logfiles" 43 cat fwd.log 44 cat fwd2.log 45 cat unbound.log 46 exit $1 47} 48 49# Query for the given domain to the given port 50# $1: address family [4, 6] 51# $2: port 52# $3: dname 53query () { 54 addr=$IPV4_ADDR 55 if test "$1" -eq 6; then 56 addr=$IPV6_ADDR 57 fi 58 echo "> dig -p $2 $3" 59 dig @"$addr" -p $2 $3 | tee outfile 60} 61 62# Query for the given domain to the given port 63# $1: address 64# $2: port 65# $3: dname 66query_addr () { 67 echo "> dig @$1 -p $2 $3" 68 dig @"$1" -p $2 $3 | tee outfile 69} 70 71expect_refused () { 72 echo "> check answer for REFUSED" 73 if grep "REFUSED" outfile; then 74 echo "OK" 75 else 76 echo "Not OK" 77 end 1 78 fi 79} 80 81expect_external_answer () { 82 echo "> check external answer" 83 if grep "1.2.3.4" outfile; then 84 echo "OK" 85 else 86 echo "Not OK" 87 end 1 88 fi 89} 90 91expect_internal_answer () { 92 echo "> check internal answer" 93 if grep "10.20.30.40" outfile; then 94 echo "OK" 95 else 96 echo "Not OK" 97 end 1 98 fi 99} 100 101expect_tag_one_answer () { 102 echo "> check tag 'one' answer" 103 if grep "1.1.1.1" outfile; then 104 echo "OK" 105 else 106 echo "Not OK" 107 end 1 108 fi 109} 110 111expect_tag_two_answer () { 112 echo "> check tag 'two' answer" 113 if grep "2.2.2.2" outfile; then 114 echo "OK" 115 else 116 echo "Not OK" 117 end 1 118 fi 119} 120 121# do the test 122 123for i in 4 6; do 124 query $i $PORT_REFUSE "www.external" 125 expect_refused 126 127 query $i $PORT_REFUSE "www.internal" 128 expect_refused 129 130 query $i $PORT_ALLOW "www.external" 131 expect_external_answer 132 133 query $i $PORT_ALLOW "www.internal" 134 expect_internal_answer 135 136 query $i $PORT_TAG_1 "local" 137 expect_tag_one_answer 138 139 query $i $PORT_TAG_2 "local" 140 expect_tag_two_answer 141 142 query $i $PORT_TAG_3 "local" 143 expect_refused 144 145 query $i $PORT_VIEW_INT "www.internal" 146 expect_internal_answer 147 148 query $i $PORT_VIEW_INT "www.external" 149 expect_refused 150 151 query $i $PORT_VIEW_EXT "www.internal" 152 expect_refused 153 154 query $i $PORT_VIEW_EXT "www.external" 155 expect_external_answer 156 157 query $i $PORT_VIEW_INTEXT "www.internal" 158 expect_internal_answer 159 160 query $i $PORT_VIEW_INTEXT "www.external" 161 expect_external_answer 162done 163 164for addr in $INTERFACE_ADDR_1 $INTERFACE_ADDR_2 $INTERFACE_ADDR_3 $INTERFACE_ADDR_4; do 165 query_addr $addr $PORT_REFUSE "www.external" 166 expect_refused 167 168 query_addr $addr $PORT_REFUSE "www.internal" 169 expect_refused 170 171 query_addr $addr $PORT_ALLOW "www.external" 172 expect_external_answer 173 174 query_addr $addr $PORT_ALLOW "www.internal" 175 expect_internal_answer 176 177 query_addr $addr $PORT_TAG_1 "local" 178 expect_tag_one_answer 179 180 query_addr $addr $PORT_TAG_2 "local" 181 expect_tag_two_answer 182 183 query_addr $addr $PORT_TAG_3 "local" 184 expect_refused 185 186 query_addr $addr $PORT_VIEW_INT "www.internal" 187 expect_internal_answer 188 189 query_addr $addr $PORT_VIEW_INT "www.external" 190 expect_refused 191 192 query_addr $addr $PORT_VIEW_EXT "www.internal" 193 expect_refused 194 195 query_addr $addr $PORT_VIEW_EXT "www.external" 196 expect_external_answer 197 198 query_addr $addr $PORT_VIEW_INTEXT "www.internal" 199 expect_internal_answer 200 201 query_addr $addr $PORT_VIEW_INTEXT "www.external" 202 expect_external_answer 203done 204 205end 0 206