mirror of
https://github.com/pi-hole/FTL.git
synced 2024-10-26 16:52:18 +02:00
-28
@@ -1,28 +0,0 @@
|
||||
#!/bin/bash
|
||||
# Test script to quickly test for arbitrary resource records
|
||||
# Originally written by Daxtorim, see
|
||||
# https://discourse.pi-hole.net/t/pi-hole-wont-cache-results-if-answer-doesnt-fit-known-reply-types-and-will-always-display-n-a-0-0ms-as-reply-in-query-log/49171/3
|
||||
|
||||
pihole="127.0.0.1"
|
||||
for i in a aaaa any cname srv soa ptr txt naptr mx ns svcb https
|
||||
do
|
||||
if [ "$i" = "ptr" ]; then
|
||||
# Also test reverse address lookups in addition to PTR
|
||||
# ptr.ftl below
|
||||
ip4="$(dig +short a a.ftl)"
|
||||
ip6="$(dig +short aaaa ftl)"
|
||||
dig +noall +answer +retry=0 +timeout=30 "@${pihole}" -x "${ip4}"
|
||||
dig +noall +answer +retry=0 +timeout=30 "@${pihole}" -x "${ip6}"
|
||||
fi
|
||||
if [ "$i" = "svcb" ]; then
|
||||
j="TYPE64"
|
||||
elif [ "$i" = "https" ]; then
|
||||
j="TYPE65"
|
||||
else
|
||||
j="$i"
|
||||
fi
|
||||
echo "dig ${j} ${i}.ftl"
|
||||
dig +noall +answer +retry=0 +timeout=30 "@${pihole}" ${j} "${i}.ftl"
|
||||
echo ""
|
||||
done
|
||||
echo ""
|
||||
+1
-1
@@ -18,4 +18,4 @@ any-to-tcp=false
|
||||
launch=gsqlite3
|
||||
|
||||
# Database location
|
||||
gsqlite3-database=/var/lib/powerdns/pdns.sqlite3
|
||||
gsqlite3-database=/var/lib/powerdns/pdns.sqlite3
|
||||
|
||||
@@ -11,4 +11,4 @@
|
||||
local-address=127.0.0.1:5555
|
||||
|
||||
# Use authorative server for ftl. and arpa. zones
|
||||
forward-zones=ftl=127.0.0.1:5554,168.192.in-addr.arpa=127.0.0.1:5554,ip6.arpa=127.0.0.1:5554
|
||||
forward-zones=ftl=127.0.0.1:5554,168.192.in-addr.arpa=127.0.0.1:5554,ip6.arpa=127.0.0.1:5554
|
||||
|
||||
+8
-2
@@ -36,6 +36,7 @@ else
|
||||
fi
|
||||
# Create zone ftl
|
||||
pdnsutil create-zone ftl ns1.ftl
|
||||
pdnsutil add-record ftl. . SOA "ns1.ftl. hostmaster.ftl. 1 10800 3600 604800 3600"
|
||||
|
||||
# Create A records
|
||||
pdnsutil add-record ftl. a A 192.168.1.1
|
||||
@@ -52,12 +53,14 @@ pdnsutil add-record ftl. regex-REPLYv6 A 192.168.2.6
|
||||
pdnsutil add-record ftl. regex-REPLYv46 A 192.168.2.7
|
||||
pdnsutil add-record ftl. regex-A A 192.168.2.8
|
||||
pdnsutil add-record ftl. regex-notA A 192.168.2.9
|
||||
pdnsutil add-record ftl. any A 192.168.3.1
|
||||
|
||||
# Create AAAA records
|
||||
pdnsutil add-record ftl. aaaa AAAA fe80::1c01
|
||||
pdnsutil add-record ftl. regex-REPLYv4 AAAA fe80::2c01
|
||||
pdnsutil add-record ftl. regex-REPLYv6 AAAA fe80::2c02
|
||||
pdnsutil add-record ftl. regex-REPLYv46 AAAA fe80::2c03
|
||||
pdnsutil add-record ftl. any AAAA fe80::3c01
|
||||
|
||||
# Create CNAME records
|
||||
pdnsutil add-record ftl. cname-1 CNAME gravity.ftl
|
||||
@@ -67,6 +70,7 @@ pdnsutil add-record ftl. cname-4 CNAME cname-3.ftl
|
||||
pdnsutil add-record ftl. cname-5 CNAME cname-4.ftl
|
||||
pdnsutil add-record ftl. cname-6 CNAME cname-5.ftl
|
||||
pdnsutil add-record ftl. cname-7 CNAME cname-6.ftl
|
||||
pdnsutil add-record ftl. cname-ok CNAME a.ftl
|
||||
|
||||
# Create CNAME for SOA test domain
|
||||
pdnsutil add-record ftl. soa CNAME ftl
|
||||
@@ -87,13 +91,13 @@ pdnsutil add-record ftl. mx MX "50 ns1.ftl."
|
||||
if ! pdnsutil add-record ftl. svcb SVCB '1 port="80"'; then
|
||||
# see RFC3597: Handling of Unknown DNS Resource Record (RR) Types
|
||||
# and https://ypcs.fi/howto/2020/09/30/announce-https-via-dns/
|
||||
pdnsutil add-record ftl. svcb TYPE64 "\# 13 31202e20706f72743d22383022"
|
||||
pdnsutil add-record ftl. svcb TYPE64 "\# 13 000109706F72743D2238302200"
|
||||
fi
|
||||
|
||||
# HTTPS
|
||||
if ! pdnsutil add-record ftl. https HTTPS '1 . alpn="h3,h2"'; then
|
||||
# comment above applies
|
||||
pdnsutil add-record ftl. https TYPE65 "\# 16 31202e20616c706e3d2268332c683222"
|
||||
pdnsutil add-record ftl. https TYPE65 "\# 15 000100000100080322683303683222"
|
||||
fi
|
||||
|
||||
# Create reverse lookup zone
|
||||
@@ -121,8 +125,10 @@ if command -v service; then
|
||||
service pdns-recursor restart
|
||||
else
|
||||
# Alpine
|
||||
killall pdns_server
|
||||
pdns_server --daemon
|
||||
# Have to create the socketdir or the recursor will fails to start
|
||||
mkdir -p /var/run/pdns-recursor
|
||||
killall pdns_recursor
|
||||
pdns_recursor --daemon
|
||||
fi
|
||||
|
||||
+102
-16
@@ -265,9 +265,95 @@
|
||||
[[ ${lines[0]} == "1" ]]
|
||||
}
|
||||
|
||||
@test "Local DNS reply test" {
|
||||
run bash -c "bash test/dig.sh | tee dig.log"
|
||||
@test "Local DNS test: A a.ftl" {
|
||||
run bash -c "dig A a.ftl @127.0.0.1 +short"
|
||||
printf "%s\n" "${lines[@]}"
|
||||
[[ ${lines[0]} == "192.168.1.1" ]]
|
||||
[[ ${lines[1]} == "" ]]
|
||||
}
|
||||
|
||||
@test "Local DNS test: AAAA aaaa.ftl" {
|
||||
run bash -c "dig AAAA aaaa.ftl @127.0.0.1 +short"
|
||||
printf "%s\n" "${lines[@]}"
|
||||
[[ ${lines[0]} == "fe80::1c01" ]]
|
||||
[[ ${lines[1]} == "" ]]
|
||||
}
|
||||
|
||||
@test "Local DNS test: ANY any.ftl" {
|
||||
run bash -c "dig ANY any.ftl @127.0.0.1 +short"
|
||||
printf "%s\n" "${lines[@]}"
|
||||
[[ ${lines[@]} == *"192.168.3.1"* ]]
|
||||
[[ ${lines[@]} == *"fe80::3c01"* ]]
|
||||
}
|
||||
|
||||
@test "Local DNS test: CNAME cname-ok.ftl" {
|
||||
run bash -c "dig CNAME cname-ok.ftl @127.0.0.1 +short"
|
||||
printf "%s\n" "${lines[@]}"
|
||||
[[ ${lines[0]} == "a.ftl." ]]
|
||||
[[ ${lines[1]} == "" ]]
|
||||
}
|
||||
|
||||
@test "Local DNS test: SRV srv.ftl" {
|
||||
run bash -c "dig SRV srv.ftl @127.0.0.1 +short"
|
||||
printf "%s\n" "${lines[@]}"
|
||||
[[ ${lines[0]} == "0 1 80 a.ftl." ]]
|
||||
[[ ${lines[1]} == "" ]]
|
||||
}
|
||||
|
||||
@test "Local DNS test: SOA ftl" {
|
||||
run bash -c "dig SOA ftl @127.0.0.1 +short"
|
||||
printf "%s\n" "${lines[@]}"
|
||||
[[ ${lines[0]} == "ns1.ftl. hostmaster.ftl. 1 10800 3600 604800 3600" ]]
|
||||
[[ ${lines[1]} == "" ]]
|
||||
}
|
||||
|
||||
@test "Local DNS test: PTR ptr.ftl" {
|
||||
run bash -c "dig PTR ptr.ftl @127.0.0.1 +short"
|
||||
printf "%s\n" "${lines[@]}"
|
||||
[[ ${lines[0]} == "ptr.ftl." ]]
|
||||
[[ ${lines[1]} == "" ]]
|
||||
}
|
||||
|
||||
@test "Local DNS test: TXT txt.ftl" {
|
||||
run bash -c "dig TXT txt.ftl @127.0.0.1 +short"
|
||||
printf "%s\n" "${lines[@]}"
|
||||
[[ ${lines[0]} == "\"Some example text\"" ]]
|
||||
[[ ${lines[1]} == "" ]]
|
||||
}
|
||||
|
||||
@test "Local DNS test: NAPTR naptr.ftl" {
|
||||
run bash -c "dig NAPTR naptr.ftl @127.0.0.1 +short"
|
||||
printf "%s\n" "${lines[@]}"
|
||||
[[ ${lines[@]} == *'10 10 "u" "smtp+E2U" "!.*([^.]+[^.]+)$!mailto:postmaster@$1!i" .'* ]]
|
||||
[[ ${lines[@]} == *'20 10 "s" "http+N2L+N2C+N2R" "" ftl.'* ]]
|
||||
}
|
||||
|
||||
@test "Local DNS test: MX mx.ftl" {
|
||||
run bash -c "dig MX mx.ftl @127.0.0.1 +short"
|
||||
printf "%s\n" "${lines[@]}"
|
||||
[[ ${lines[0]} == "50 ns1.ftl." ]]
|
||||
[[ ${lines[1]} == "" ]]
|
||||
}
|
||||
|
||||
@test "Local DNS test: NS ftl" {
|
||||
run bash -c "dig NS ftl @127.0.0.1 +short"
|
||||
printf "%s\n" "${lines[@]}"
|
||||
[[ ${lines[0]} == "ns1.ftl." ]]
|
||||
[[ ${lines[1]} == "" ]]
|
||||
}
|
||||
|
||||
@test "Local DNS test: SVCB svcb.ftl" {
|
||||
run bash -c "dig TYPE64 svcb.ftl @127.0.0.1 +short"
|
||||
printf "%s\n" "${lines[@]}"
|
||||
[[ ${lines[0]} == '\# 13 000109706F72743D2238302200' ]]
|
||||
[[ ${lines[1]} == "" ]]
|
||||
}
|
||||
|
||||
@test "Local DNS test: HTTPS https.ftl" {
|
||||
run bash -c "dig TYPE65 https.ftl @127.0.0.1 +short"
|
||||
printf "%s\n" "${lines[@]}"
|
||||
[[ ${lines[0]} == '\# 15 000100000100080322683303683222' ]]
|
||||
[[ ${lines[1]} == "" ]]
|
||||
}
|
||||
|
||||
@test "CNAME inspection: Shallow CNAME is blocked" {
|
||||
@@ -278,7 +364,7 @@
|
||||
}
|
||||
|
||||
@test "CNAME inspection: Deep CNAME is blocked" {
|
||||
run bash -c "dig A cname-4.ftl @127.0.0.1 +short"
|
||||
run bash -c "dig A cname-7.ftl @127.0.0.1 +short"
|
||||
printf "%s\n" "${lines[@]}"
|
||||
[[ ${lines[0]} == "0.0.0.0" ]]
|
||||
[[ ${lines[1]} == "" ]]
|
||||
@@ -303,7 +389,7 @@
|
||||
[[ ${lines[2]} == "dns_queries_today 47" ]]
|
||||
[[ ${lines[3]} == "ads_blocked_today 8" ]]
|
||||
#[[ ${lines[4]} == "ads_percentage_today 7.792208" ]]
|
||||
[[ ${lines[5]} == "unique_domains 34" ]]
|
||||
[[ ${lines[5]} == "unique_domains 35" ]]
|
||||
[[ ${lines[6]} == "queries_forwarded 26" ]]
|
||||
[[ ${lines[7]} == "queries_cached 13" ]]
|
||||
# Clients ever seen is commented out as CircleCI may have
|
||||
@@ -313,7 +399,7 @@
|
||||
#[[ ${lines[9]} == "unique_clients 8" ]]
|
||||
[[ ${lines[10]} == "dns_queries_all_types 47" ]]
|
||||
[[ ${lines[11]} == "reply_NODATA 0" ]]
|
||||
[[ ${lines[12]} == "reply_NXDOMAIN 4" ]]
|
||||
[[ ${lines[12]} == "reply_NXDOMAIN 1" ]]
|
||||
[[ ${lines[13]} == "reply_CNAME 5" ]]
|
||||
[[ ${lines[14]} == "reply_IP 23" ]]
|
||||
[[ ${lines[15]} == "privacy_level 0" ]]
|
||||
@@ -349,6 +435,7 @@
|
||||
[[ "${lines[@]}" == *" 2 aaaa.ftl"* ]]
|
||||
[[ "${lines[@]}" == *" 2 net"* ]]
|
||||
[[ "${lines[@]}" == *" 2 verteiltesysteme.net"* ]]
|
||||
[[ "${lines[@]}" == *" 2 ftl"* ]]
|
||||
[[ "${lines[@]}" == *" 1 version.ftl"* ]]
|
||||
[[ "${lines[@]}" == *" 1 whitelisted.ftl"* ]]
|
||||
[[ "${lines[@]}" == *" 1 gravity-whitelisted.ftl"* ]]
|
||||
@@ -356,18 +443,17 @@
|
||||
[[ "${lines[@]}" == *" 1 regex2.ftl"* ]]
|
||||
[[ "${lines[@]}" == *" 1 use-application-dns.net"* ]]
|
||||
[[ "${lines[@]}" == *" 1 any.ftl"* ]]
|
||||
[[ "${lines[@]}" == *" 1 cname.ftl"* ]]
|
||||
[[ "${lines[@]}" == *" 1 cname-ok.ftl"* ]]
|
||||
[[ "${lines[@]}" == *" 1 srv.ftl"* ]]
|
||||
[[ "${lines[@]}" == *" 1 soa.ftl"* ]]
|
||||
[[ "${lines[@]}" == *" 1 any.ftl"* ]]
|
||||
[[ "${lines[@]}" == *" 1 ptr.ftl"* ]]
|
||||
[[ "${lines[@]}" == *" 1 txt.ftl"* ]]
|
||||
[[ "${lines[@]}" == *" 1 naptr.ftl"* ]]
|
||||
[[ "${lines[@]}" == *" 1 mx.ftl"* ]]
|
||||
[[ "${lines[@]}" == *" 1 ns.ftl"* ]]
|
||||
[[ "${lines[@]}" == *" 1 svcb.ftl"* ]]
|
||||
[[ "${lines[@]}" == *" 1 https.ftl"* ]]
|
||||
[[ "${lines[@]}" == *" 1 sigok.verteiltesysteme.net"* ]]
|
||||
[[ "${lines[@]}" == *" 1 ."* ]]
|
||||
[[ "${lines[@]}" == *" 1 sigok.verteiltesysteme.net"* ]]
|
||||
[[ "${lines[@]}" == *" 1 sigfail.verteiltesysteme.net"* ]]
|
||||
}
|
||||
|
||||
@@ -380,7 +466,7 @@
|
||||
[[ "${lines[@]}" == *" 1 regex5.ftl"* ]]
|
||||
[[ "${lines[@]}" == *" 1 regex1.ftl"* ]]
|
||||
[[ "${lines[@]}" == *" 1 cname-1.ftl"* ]]
|
||||
[[ "${lines[@]}" == *" 1 cname-4.ftl"* ]]
|
||||
[[ "${lines[@]}" == *" 1 cname-7.ftl"* ]]
|
||||
[[ ${lines[8]} == "" ]]
|
||||
}
|
||||
|
||||
@@ -454,19 +540,19 @@
|
||||
[[ ${lines[25]} == *" A use-application-dns.net 127.0.0.1 3 2 2 "*" N/A -1 N/A#0 \"\" \"24\""* ]]
|
||||
[[ ${lines[26]} == *" A a.ftl 127.0.0.1 3 2 4 "*" N/A -1 N/A#0 \"\" \"25\""* ]]
|
||||
[[ ${lines[27]} == *" AAAA aaaa.ftl 127.0.0.1 3 2 4 "*" N/A -1 N/A#0 \"\" \"26\""* ]]
|
||||
[[ ${lines[28]} == *" ANY any.ftl 127.0.0.1 2 2 2 "*" N/A -1 127.0.0.1#5555 \"\" \"27\""* ]]
|
||||
[[ ${lines[29]} == *" [CNAME] cname.ftl 127.0.0.1 2 2 2 "*" N/A -1 127.0.0.1#5555 \"\" \"28\""* ]]
|
||||
[[ ${lines[28]} == *" ANY any.ftl 127.0.0.1 2 2 13 "*" N/A -1 127.0.0.1#5555 \"\" \"27\""* ]]
|
||||
[[ ${lines[29]} == *" [CNAME] cname-ok.ftl 127.0.0.1 2 2 3 "*" N/A -1 127.0.0.1#5555 \"\" \"28\""* ]]
|
||||
[[ ${lines[30]} == *" SRV srv.ftl 127.0.0.1 2 2 13 "*" N/A -1 127.0.0.1#5555 \"\" \"29\""* ]]
|
||||
[[ ${lines[31]} == *" SOA soa.ftl 127.0.0.1 2 2 3 "*" N/A -1 127.0.0.1#5555 \"\" \"30\""* ]]
|
||||
[[ ${lines[31]} == *" SOA ftl 127.0.0.1 2 2 13 "*" N/A -1 127.0.0.1#5555 \"\" \"30\""* ]]
|
||||
[[ ${lines[32]} == *" PTR ptr.ftl 127.0.0.1 2 2 13 "*" N/A -1 127.0.0.1#5555 \"\" \"31\""* ]]
|
||||
[[ ${lines[33]} == *" TXT txt.ftl 127.0.0.1 2 2 13 "*" N/A -1 127.0.0.1#5555 \"\" \"32\""* ]]
|
||||
[[ ${lines[34]} == *" NAPTR naptr.ftl 127.0.0.1 2 2 13 "*" N/A -1 127.0.0.1#5555 \"\" \"33\""* ]]
|
||||
[[ ${lines[35]} == *" MX mx.ftl 127.0.0.1 2 2 13 "*" N/A -1 127.0.0.1#5555 \"\" \"34\""* ]]
|
||||
[[ ${lines[36]} == *" NS ns.ftl 127.0.0.1 2 2 2 "*" N/A -1 127.0.0.1#5555 \"\" \"35\""* ]]
|
||||
[[ ${lines[36]} == *" NS ftl 127.0.0.1 2 2 13 "*" N/A -1 127.0.0.1#5555 \"\" \"35\""* ]]
|
||||
[[ ${lines[37]} == *" SVCB svcb.ftl 127.0.0.1 2 2 13 "*" N/A -1 127.0.0.1#5554 \"\" \"36\""* ]]
|
||||
[[ ${lines[38]} == *" HTTPS https.ftl 127.0.0.1 2 2 13 "*" N/A -1 127.0.0.1#5554 \"\" \"37\""* ]]
|
||||
[[ ${lines[39]} == *" A cname-1.ftl 127.0.0.1 9 2 3 "*" gravity.ftl -1 127.0.0.1#5555 \"\" \"38\""* ]]
|
||||
[[ ${lines[40]} == *" A cname-4.ftl 127.0.0.1 9 2 3 "*" gravity.ftl -1 127.0.0.1#5555 \"\" \"39\""* ]]
|
||||
[[ ${lines[40]} == *" A cname-7.ftl 127.0.0.1 9 2 3 "*" gravity.ftl -1 127.0.0.1#5555 \"\" \"39\""* ]]
|
||||
[[ ${lines[41]} == *" A sigok.verteiltesysteme.net 127.0.0.1 2 1 4 "*" N/A -1 127.0.0.1#5555 \"\" \"40\""* ]]
|
||||
[[ ${lines[42]} == *" DS net :: 2 1 11 "*" N/A -1 127.0.0.1#5555 \"\" \"41\""* ]]
|
||||
[[ ${lines[43]} == *" DNSKEY . :: 2 1 11 "*" N/A -1 127.0.0.1#5555 \"\" \"42\""* ]]
|
||||
@@ -487,7 +573,7 @@
|
||||
@test "Recent blocked shows expected content" {
|
||||
run bash -c 'echo ">recentBlocked >quit" | nc -v 127.0.0.1 4711'
|
||||
printf "%s\n" "${lines[@]}"
|
||||
[[ ${lines[1]} == "cname-4.ftl" ]]
|
||||
[[ ${lines[1]} == "cname-7.ftl" ]]
|
||||
[[ ${lines[2]} == "" ]]
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user