fix: broken reverse delegation

This commit is contained in:
Blackyfff 2021-01-14 23:50:36 +01:00
parent e17d68f25d
commit 041c98026d
2 changed files with 11 additions and 13 deletions

View File

@ -21,7 +21,7 @@ ZoneFilesFolder="/etc/bind/fff/"
# #
export DNSSCRIPT_BIND_RELOAD_VER=0 export DNSSCRIPT_BIND_RELOAD_VER=0
# only necessary when rndc is used; sets the internal and external views # only necessary when rndc is used
InternalViews="icvpn-internal-view icvpn-internal-dns64-view" InternalViews="icvpn-internal-view icvpn-internal-dns64-view"
ExternalView="external-view" ExternalView="external-view"

22
update-rdnszone.sh Executable file → Normal file
View File

@ -46,26 +46,24 @@ for ForwardZone in $ForwardZones; do
named-checkzone -f text -i local -o "$TempDir/$ZoneName" -D "$ZoneName" "$ZoneFile" >/dev/null 2>&1 named-checkzone -f text -i local -o "$TempDir/$ZoneName" -D "$ZoneName" "$ZoneFile" >/dev/null 2>&1
Serial="$(GetZoneFileSerial "$TempDir/$ZoneName")" Serial="$(GetZoneFileSerial "$TempDir/$ZoneName")"
NewReverseSerial=$((Serial + NewReverseSerial)) NewReverseSerial=$((Serial + NewReverseSerial))
ZoneRevNS="$(sed -ne 's/^\s*\S\+\s\+\([0-9]*\s\)\?\s*[Ii][Nn]\s\+[Nn][Ss]\s\+\(\S\+\)\s*.*;\s*Reverse:\s*\([^;]*\)$/\2\/\3/p' "$ZoneFile")" ZoneRevNSSubnets="$(sed -ne 's/^\s*\S\+\s\+\([0-9]*\s\)\?\s*[Ii][Nn]\s\+[Nn][Ss]\s\+\(\S\+\)\s*.*;\s*Subnets:\s*\([^;]*\)$/\2@\3/p' "$ZoneFile" |
ZoneRevNS="$(echo "$ZoneRevNS" | sed -e 's/\(.*[^\.]\)\//\1\.'"$ZoneName"'\.\//' )" sed -e 's/\(.*[^\.]\)@/\1\.'"$ZoneName"'\.@/;s/@/ /;s/\s\+/@/g')"
SubNSEntries="$SubNSEntries""$ZoneRevNS"
done done
if [ -f "$ReverseZoneFile" ]; then
OldSerial=$(GetZoneFileSerial "$ReverseZoneFile") OldSerial=$(GetZoneFileSerial "$ReverseZoneFile")
else
OldSerial=0
fi
if [ $NewReverseSerial -gt $OldSerial ]; then if [ $NewReverseSerial -gt $OldSerial ]; then
echo "$ReverseDomain $TTL IN SOA $DNSSCRIPT_SERVER_NAME""."" $DNSSCRIPT_CONTACT_EMAIL $NewReverseSerial $ReReExMi" > "$TempDir/$ReverseZone" echo "$ReverseDomain $TTL IN SOA $DNSSCRIPT_SERVER_NAME""."" $DNSSCRIPT_CONTACT_EMAIL $NewReverseSerial $ReReExMi" > "$TempDir/$ReverseZone"
echo "$ReverseDomain $TTL IN NS $DNSSCRIPT_SERVER_NAME"".""" >> "$TempDir/$ReverseZone" echo "$ReverseDomain $TTL IN NS $DNSSCRIPT_SERVER_NAME"".""" >> "$TempDir/$ReverseZone"
echo "$SubNSEntries" | while read -r SubNSEntry; do for NSSubnets in $ZoneRevNSSubnets; do
for SubReverseDomain in ${SubNSEntry#*/}; do Subnets="$(echo "${NSSubnets#*@}" | sed -e 's/@/ /g')"
if [ -n "$SubReverseDomain" ] && [ -z "${SubReverseDomain##*$ReverseDomain}" ]; then for Subnet in $Subnets; do
echo "$SubReverseDomain $TTL IN NS ${SubNSEntry%/*}" >> "$TempDir/$ReverseZone" for ReverseNS in $(GetReverseDomains "$Subnet"); do
fi if [ -n "$ReverseNS" ] && [ -z "${ReverseNS##*$ReverseDomain}" ]; then
echo "$ReverseNS $TTL IN NS ${NSSubnets%%@*}" >> "$TempDir/$ReverseZone"
fi
done
done done
done done