From 041c98026df55f9f871ab6458b0f0e3b7e1f7bae Mon Sep 17 00:00:00 2001 From: Blackyfff Date: Thu, 14 Jan 2021 23:50:36 +0100 Subject: [PATCH] fix: broken reverse delegation --- update-dns.sh | 2 +- update-rdnszone.sh | 22 ++++++++++------------ 2 files changed, 11 insertions(+), 13 deletions(-) mode change 100755 => 100644 update-rdnszone.sh diff --git a/update-dns.sh b/update-dns.sh index 01b2563..7aca584 100755 --- a/update-dns.sh +++ b/update-dns.sh @@ -21,7 +21,7 @@ ZoneFilesFolder="/etc/bind/fff/" # 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" ExternalView="external-view" diff --git a/update-rdnszone.sh b/update-rdnszone.sh old mode 100755 new mode 100644 index 180028f..e86e687 --- a/update-rdnszone.sh +++ b/update-rdnszone.sh @@ -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 Serial="$(GetZoneFileSerial "$TempDir/$ZoneName")" 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")" - ZoneRevNS="$(echo "$ZoneRevNS" | sed -e 's/\(.*[^\.]\)\//\1\.'"$ZoneName"'\.\//' )" - SubNSEntries="$SubNSEntries""$ZoneRevNS" + 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" | + sed -e 's/\(.*[^\.]\)@/\1\.'"$ZoneName"'\.@/;s/@/ /;s/\s\+/@/g')" done -if [ -f "$ReverseZoneFile" ]; then OldSerial=$(GetZoneFileSerial "$ReverseZoneFile") -else - OldSerial=0 -fi if [ $NewReverseSerial -gt $OldSerial ]; then 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 "$SubNSEntries" | while read -r SubNSEntry; do - for SubReverseDomain in ${SubNSEntry#*/}; do - if [ -n "$SubReverseDomain" ] && [ -z "${SubReverseDomain##*$ReverseDomain}" ]; then - echo "$SubReverseDomain $TTL IN NS ${SubNSEntry%/*}" >> "$TempDir/$ReverseZone" - fi + for NSSubnets in $ZoneRevNSSubnets; do + Subnets="$(echo "${NSSubnets#*@}" | sed -e 's/@/ /g')" + for Subnet in $Subnets; do + for ReverseNS in $(GetReverseDomains "$Subnet"); do + if [ -n "$ReverseNS" ] && [ -z "${ReverseNS##*$ReverseDomain}" ]; then + echo "$ReverseNS $TTL IN NS ${NSSubnets%%@*}" >> "$TempDir/$ReverseZone" + fi + done done done