⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 doc

📁 早期freebsd实现
💻
📖 第 1 页 / 共 3 页
字号:
   endif   @ glue = $stat % 16   @ ttls = $stat / 16######################################################## Here we make a seperate list of info based on whether the## server (for parent domain) happens to also be authoritative## for the domain being tested.####    if ($isaa == 0) then      @ nsdadno++      set nsdad=($nsdad $i)      set what="(non-AUTH)"      foreach j ($nslists)	 diff -i $j $dom.ns.$i >& /dev/null         if ($status == 0) then	    set another=0            break         endif       end       if ($another) set nslists=($nslists $dom.ns.$i)   else      @ nsdadnoaa++      set nsdadaa=($nsdadaa $i)      set what="(AUTH)"      foreach j ($nslistsaa)        diff -i $j $dom.ns.$i >& /dev/null        if ($status == 0) then	   set another=0           break        endif      end      if ($another) set nslistsaa=($nslistsaa $dom.ns.$i)   endif####XX#   set dadno = `wc -l < $dom.ns.$i`  echo Found $dadno NS and $glue glue records for $dom @$i $what >> log.$dom  if ($vflag) echo Found $dadno NS and $glue glue records for $dom @$i $what   if ($ttls > 1) then      @ fferror++      echo "ERROR: multiple TTLs found for $dom NS records @$i" >> log.$dom      if ($eflag) echo "ERROR: multiple TTLs found for $dom NS records @$i"      if ($ddflag) echo "DDBUG: 10"   endif   if ($pflag) then      set domservall = `cat $dom.ns.$i`      if ($isaa) then         set nslistsaa = $dom.ns.$i      else         set nslists = $dom.ns.$i         break      endif   endifend  ## foreachif ($pflag) then   echo "Using NSlist from parent domain server $i" >> log.$dom   if ($vflag) echo "Using NSlist from parent domain server $i"   goto skip3endifecho "DNServers for $dad" >> log.$domecho "   === $nsdadnoaa were also authoritatve for $dom" >> log.$domecho "   === $nsdadno were non-authoritative for $dom" >> log.$domif ($vflag) then  echo "DNServers for $dad"  echo "   === $nsdadnoaa were also authoritatve for $dom"  echo "   === $nsdadno were non-authoritative for $dom"endif####XX# #################################################### Print info about authoritative responses.##set tmpcntone=0if ($#nslistsaa > 1) then   @ fferror++   set tmpcntone=$#nslistsaa   echo "ERROR: Found $#nslistsaa diff sets of NS records" >> log.$dom   echo "   === from servers authoritative for $dom" >> log.$dom   if ($eflag) echo "ERROR: Found $#nslistsaa diff sets of NS records"   if ($eflag) echo "   === from servers authoritative for $dom"   if ($ddflag) echo "DDBUG: 11"else if ($nslistsaa != "") then   set tmpcntone=1   if ($nsdadnoaa > 1) then     echo "Servers for $dad that are also authoritative for $dom" >> log.$dom     echo "   === agree on NS records for $dom" >> log.$dom     if ($vflag) echo "Servers for $dad that are also authoritative for $dom"     if ($vflag) echo "   === agree on NS records for $dom"     if ($ddflag) echo "DDBUG: 12"   endifendif#################################################### Print info about non-authoritative responses.##set tmpcnttwo=0if ($#nslists > 1) then   @ ffwarn++   set tmpcnttwo=$#nslists   echo "WARN: Found $#nslists diff sets of NS records" >> log.$dom   echo "   === from servers not authoritative for $dom" >> log.$dom   if ($wflag) echo "WARN: Found $#nslists diff sets of NS records"   if ($wflag)  echo "   === from servers not authoritative for $dom"   if ($ddflag) echo "DDBUG: 13"else if ($nslists != "") then   set tmpcnttwo=1   if ($nsdadno > 1) then      echo "Servers for $dad (not also authoritative for $dom)" >> log.$dom      echo "   === agree on NS records for $dom" >> log.$dom      if ($vflag) echo "Servers for $dad (not also authoritative for $dom)"      if ($vflag) echo "   === agree on NS records for $dom"      if ($ddflag) echo "DDBUG: 14"   endif####XX# ################################################### If both authoritative && non-authoritative responses and##   if they agree among themselves,##      then check if NS records are consitent among all.##  if ($tmpcntone == 1) then     diff -i $nslists $nslistsaa >& /dev/null     if ($status == 0) thenecho "NS lists for $dom from all $dad servers are identical" >> log.$domecho "   === (both authoritative and non-authoritative for $dom)" >> log.$dom       if ($ddflag) echo "DDBUG: 15"       if ($vflag) then          echo "NS lists for $dom from all $dad servers are identical"          echo "   === (both authoritative and non-authoritative for $dom)"       endif       set agree=1     else       @ fferror++echo "ERROR: NS list for $dom from parent servers differ" >> log.$domecho "   ===  authoritative disagree with those not AUTH for $dom " >> log.$dom       if ($ddflag) echo "DDBUG: 16"       if ($eflag) then         echo "ERROR: NS list for $dom from parent servers differ"         echo "   ===  authoritative disagree with those not AUTH for $dom"         diff -c -i $nslists $nslistsaa       endif     endif  endifendif###########################################################  Take union of lists of nameservers for the domain.################################################# Union of lists from (parent) servers --##  those not also authoritative for domain.foreach i ($nsdad)   cat $dom.ns.$i >> $dom.ns.dadendif (-e $dom.ns.dad) then   sort -u $dom.ns.dad > $dom.tmp   mv $dom.tmp $dom.ns.dad   set domserv=`cat $dom.ns.dad`   if ($dflag) echo "DEBUG: domserv = $domserv"else   set domserv=""endif####XX# ################################################## Union of lists from (parent) servers --##  those also authoritative for domain.foreach i ($nsdadaa)   cat $dom.ns.$i >> $dom.ns.dadaaendif (-e $dom.ns.dadaa) then   sort -u $dom.ns.dadaa > $dom.tmp   mv $dom.tmp $dom.ns.dadaa   set domservaa=`cat $dom.ns.dadaa`   if ($dflag) echo "DEBUG: domservaa = $domservaa"else   set domservaa=""endif#####################################################  Look for nameservers (NS records) known by##  non-authoritative but not by authoritative servers.####  XXX: might want to find the other way also/insteadset domservdiff=""foreach i ($domserv)   set another=1   foreach j ($domservaa)      if ($i == $j) then         set another = 0         break      endif   end   if ($another) then      set domservdiff=($domservdiff $i)   endifend####XX# ########################################################## Look to make certain that parent servers that claim to be## authoritative are listed among the NS records of a server.## (Strangely enough, often they claim to be AUTH, but do## not hold an NS record for themselves!!##set domservall=($domservaa $domservdiff)foreach i ($nsdadaa)   set another=1   foreach j ($domservall)      if ($i == $j) then         set another=0         break      endif   end   if ($another) then      @ ffwarn++      echo "WARNING: $i claims to be authoritative for $dom " >> log.$dom      echo "   == but no NS record at parent zone" >> log.$dom      if ($wflag) echo "WARNING: $i claims authoritative for $dom"      if ($wflag) echo "   == but no NS record at parent zone"      if ($ddflag) echo "DDBUG: 17"   endifendskip3:echo "NS list summary for $dom from parent ($dad) servers" >> log.$domif ($vflag) echo "NS list summary for $dom from parent ($dad) servers"if ($#domservall > 3) then   echo "  == $domservall[1-3]" >> log.$dom   if ($vflag) echo "  == $domservall[1-3]"   if ($#domservall > 6) then      echo "  == $domservall[4-6]" >> log.$dom      echo "  == $domservall[7-]" >> log.$dom      if ($vflag) echo "  == $domservall[4-6]"      if ($vflag) echo "  == $domservall[7-]"   else      echo "  == $domservall[4-]" >> log.$dom      if ($vflag) echo "  == $domservall[4-]"   endifelse   echo "  == $domservall" >> log.$dom   if ($vflag) echo "  == $domservall"endif####XX# ############################################################# Check that SOA's from all NS (for domain) have same serial nos## Keep list of nameservers that are authoritative and have## exactly one SOA record.set sns=""set aafile=""set aaserv=""set noaaserv=""set cnttwo=0foreach i ($domservall)  if ($dflag) echo "digging @$i for soa of $dom"  if ($dflag) echo "digging @$i for soa of $dom" >> log.$dom  dig @$i soa $dom +norec $RET +pfset=0xa224 | $tolower > $dom.soa.$i  set stat = $status  if ($stat != 0) then     set estr = $error[$stat]     echo "DIGERR ($estr): dig @$i for SOA of $dom failed" >> log.$dom     echo "DIGERR ($estr): dig @$i for SOA of $dom failed"     @ ffallone++     rm $dom.soa.$i     if ($ddflag) echo "DDBUG: 20"     continue  endif  echo "## SOA record for $dom domain from nameserver $i" >> logXX.$dom  echo "" >> logXX.$dom  cat  $dom.soa.$i >> logXX.$dom  echo "===================" >> logXX.$dom  echo "" >> logXX.$dom  set serial=`awk -f ${auxd}doc1.awk $dom.soa.$i`  set stat=$status  if ($vflag) echo "soa @$i for $dom serial: $serial"  echo "soa @$i for $dom serial: $serial" >> log.$dom####XX# ######################################################## Check that answer is authoritative and that## SOA record (one) was found.#### fix for shells which return unsigned 8 bit exit codes  if ($stat > 127) then     @ stat = $stat - 256  endif  if ($stat < 0) then     @ fferror++     set noaaserv = ($noaaserv $i)     echo "ERROR: non-authoritative SOA for $dom from $i" >> log.$dom     if ($eflag) echo "ERROR: non-authoritative SOA for $dom from $i"     if ($ddflag) echo "DDBUG: 21"  else if ($stat == 0) then     @ fferror++     echo "ERROR: no SOA record for $dom from $i" >> log.$dom     if ($eflag) echo "ERROR: no SOA record for $dom from $i"     if ($ddflag) echo "DDBUG: 22"  else    if ($stat > 1) then      @ ffwarn++      echo "WARNING: multiple SOA records found for $dom from $i" >> log.$dom      if ($wflag) echo "WARNING: multiple SOA records found for $dom from $i"      if ($ddflag) echo "DDBUG: 23"    endif################################################# Check for multiple SOA serial numbers##    grep -v ";; flag" $dom.soa.$i | $tolower > tmp.$$    mv tmp.$$ $dom.soa.$i    set aafile = ($aafile $dom.soa.$i)    set aaserv = ($aaserv $i)    @ cnttwo++    set another=1    foreach j ($sns)      if ($serial == $j) then	 set another=0         break      endif    end    if ($another) then         set sns=($sns $serial)    endif   endif   ### may need to be removed XXX  endifend	## foreach#####XX# ################################################ Note results about SOA serial numbers.## If only one, check that entire SOA records are identical.##if ($#sns > 1) then   @ ffwarn++

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -