#2000081501 auto axfr-get
-Zexample.com:ns1.example.com.:ahu.example.com.:2000081501:28800:7200:604800:86400:120
+Zexample.com:ns1.example.com.:ahu.example.com.:2000081501:28800:7200:604800:86400:100000
&example.com::ns1.example.com.:120
&example.com::ns2.example.com.:120
@example.com::smtp-servers.example.com.:10:120
@example.com::smtp-servers.test.com.:15:120
-:example.com:48:\001\000\003\005\003\001\000\001\252\323\210xO\202\360\366\361\140\215\361\100WpG\037\361\377\216\027\347\177lJ\015\3534\356\036\137\350V\266\271\376\247\350\236\026\012\375\030\310\357\204s\035\315\260\226\057S\245s\226\311\304\025\335\204\237\244V\175\317\341\201\375\266\354\274\032\047\325s25\376J\136\343\260E\321\331\134\206a\325\311.\334\007\010\310\332\350\017n\214\076F\305\054v4\373\024H\373\273\273\072\304\072\235\207\017\006\232\203\210\231\301\330\023\041:120
:escapedtext.example.com:16:\005begin\022the\040\042middle\042\040p\134art\007the\040end:120
Cexternal.example.com:somewhere.else.net.:120
@external-mail.example.com::server1.test.com.:25:120
&test.com::ns2.test.com.:3600
@test.com::smtp-servers.example.com.:10:3600
@test.com::smtp-servers.test.com.:15:3600
-+blah.test.com:9.9.9.9:3600
++blah.test.com:192.168.6.1:3600
&blah.test.com::blah.test.com.:3600
+counter.test.com:1.1.1.5:3600
:_double._tcp.dc.test.com:33:\000\000\000d\001\205\007server1\004test\003com\000:3600
bool DNSSECKeeper::getPreRRSIGs(DNSBackend& db, const std::string& signer, const std::string& qname,
const std::string& wildcardname, const QType& qtype,
- DNSPacketWriter::Place signPlace, vector<DNSResourceRecord>& rrsigs)
+ DNSPacketWriter::Place signPlace, vector<DNSResourceRecord>& rrsigs, uint32_t signTTL)
{
// cerr<<"Doing DB lookup for precomputed RRSIGs for '"<<(wildcardname.empty() ? qname : wildcardname)<<"'"<<endl;
db.lookup(QType(QType::RRSIG), wildcardname.empty() ? qname : wildcardname);
DNSResourceRecord rr;
while(db.get(rr)) {
// cerr<<"Considering for '"<<qtype.getName()<<"' RRSIG '"<<rr.content<<"'\n";
- if(boost::starts_with(rr.content, qtype.getName()+" ")) {
+ vector<string> parts;
+ stringtok(parts, rr.content);
+ if(parts[0] == qtype.getName() && pdns_iequals(parts[7], signer+".")) {
// cerr<<"Got it"<<endl;
if (!wildcardname.empty())
rr.qname = qname;
rr.d_place = (DNSResourceRecord::Place)signPlace;
+ rr.ttl = signTTL;
rrsigs.push_back(rr);
}
else ; // cerr<<"Skipping!"<<endl;
class DNSResourceRecord
{
public:
- DNSResourceRecord() : qclass(1), priority(0), last_modified(0), d_place(ANSWER), auth(1), scopeMask(0) {};
+ DNSResourceRecord() : qclass(1), priority(0), signttl(0), last_modified(0), d_place(ANSWER), auth(1), scopeMask(0) {};
~DNSResourceRecord(){};
// data
string content; //!< what this record points to. Example: 10.1.2.3
uint16_t priority; //!< For qtypes that support a priority or preference (MX, SRV)
uint32_t ttl; //!< Time To Live of this record
+ uint32_t signttl; //!< If non-zero, use this TTL as original TTL in the RRSIG
int domain_id; //!< If a backend implements this, the domain_id of the zone this record is in
time_t last_modified; //!< For autocalculating SOA serial numbers - the backend needs to fill this in
enum Place {QUESTION=0, ANSWER=1, AUTHORITY=2, ADDITIONAL=3}; //!< Type describing the positioning of a DNSResourceRecord within, say, a DNSPacket
void fillOutRRSIG(DNSSECPrivateKey& dpk, const std::string& signQName, RRSIGRecordContent& rrc, vector<shared_ptr<DNSRecordContent> >& toSign);
uint32_t getCurrentInception();
void addSignature(DNSSECKeeper& dk, DNSBackend& db, const std::string signQName, const std::string& wildcardname, uint16_t signQType, uint32_t signTTL, DNSPacketWriter::Place signPlace,
- vector<shared_ptr<DNSRecordContent> >& toSign, vector<DNSResourceRecord>& outsigned);
+ vector<shared_ptr<DNSRecordContent> >& toSign, vector<DNSResourceRecord>& outsigned, uint32_t origTTL);
int getRRSIGsForRRSET(DNSSECKeeper& dk, const std::string& signer, const std::string signQName, uint16_t signQType, uint32_t signTTL,
vector<shared_ptr<DNSRecordContent> >& toSign, vector<RRSIGRecordContent> &rrc, bool ksk);
void unsetNSEC3PARAM(const std::string& zname);
void clearAllCaches();
void clearCaches(const std::string& name);
- bool getPreRRSIGs(DNSBackend& db, const std::string& signer, const std::string& qname, const std::string& wildcardname, const QType& qtype, DNSPacketWriter::Place, vector<DNSResourceRecord>& rrsigs);
+ bool getPreRRSIGs(DNSBackend& db, const std::string& signer, const std::string& qname, const std::string& wildcardname, const QType& qtype, DNSPacketWriter::Place, vector<DNSResourceRecord>& rrsigs, uint32_t signTTL);
bool isPresigned(const std::string& zname);
void setPresigned(const std::string& zname);
void unsetPresigned(const std::string& zname);
// this is the entrypoint from DNSPacket
void addSignature(DNSSECKeeper& dk, DNSBackend& db, const std::string& signer, const std::string signQName, const std::string& wildcardname, uint16_t signQType,
uint32_t signTTL, DNSPacketWriter::Place signPlace,
- vector<shared_ptr<DNSRecordContent> >& toSign, vector<DNSResourceRecord>& outsigned)
+ vector<shared_ptr<DNSRecordContent> >& toSign, vector<DNSResourceRecord>& outsigned, uint32_t origTTL)
{
//cerr<<"Asked to sign '"<<signQName<<"'|"<<DNSRecordContent::NumberToType(signQType)<<", "<<toSign.size()<<" records\n";
if(toSign.empty())
vector<RRSIGRecordContent> rrcs;
if(dk.isPresigned(signer)) {
//cerr<<"Doing presignatures"<<endl;
- dk.getPreRRSIGs(db, signer, signQName, wildcardname, QType(signQType), signPlace, outsigned); // does it all
+ dk.getPreRRSIGs(db, signer, signQName, wildcardname, QType(signQType), signPlace, outsigned, origTTL); // does it all
}
else {
if(getRRSIGsForRRSET(dk, signer, wildcardname.empty() ? signQName : wildcardname, signQType, signTTL, toSign, rrcs, signQType == QType::DNSKEY) < 0) {
DNSResourceRecord rr;
rr.qname=signQName;
rr.qtype=QType::RRSIG;
- rr.ttl=signTTL;
+ if(origTTL)
+ rr.ttl=origTTL;
+ else
+ rr.ttl=signTTL;
rr.auth=false;
rr.d_place = (DNSResourceRecord::Place) signPlace;
BOOST_FOREACH(RRSIGRecordContent& rrc, rrcs) {
string signQName, wildcardQName;
uint16_t signQType=0;
uint32_t signTTL=0;
+ uint32_t origTTL=0;
DNSPacketWriter::Place signPlace=DNSPacketWriter::ANSWER;
vector<shared_ptr<DNSRecordContent> > toSign;
for(vector<DNSResourceRecord>::const_iterator pos = rrs.begin(); pos != rrs.end(); ++pos) {
if(pos != rrs.begin() && (signQType != pos->qtype.getCode() || signQName != pos->qname)) {
if(getBestAuthFromSet(authSet, signQName, signer))
- addSignature(dk, db, signer, signQName, wildcardQName, signQType, signTTL, signPlace, toSign, signedRecords);
+ addSignature(dk, db, signer, signQName, wildcardQName, signQType, signTTL, signPlace, toSign, signedRecords, origTTL);
}
signedRecords.push_back(*pos);
signQName= pos->qname;
wildcardQName = pos->wildcardname;
signQType = pos ->qtype.getCode();
- signTTL = pos->ttl;
+ if(pos->signttl)
+ signTTL = pos->signttl;
+ else
+ signTTL = pos->ttl;
+ origTTL = pos->ttl;
signPlace = (DNSPacketWriter::Place) pos->d_place;
if(pos->auth || pos->qtype.getCode() == QType::DS) {
string content = pos->content;
}
}
if(getBestAuthFromSet(authSet, signQName, signer))
- addSignature(dk, db, signer, signQName, wildcardQName, signQType, signTTL, signPlace, toSign, signedRecords);
+ addSignature(dk, db, signer, signQName, wildcardQName, signQType, signTTL, signPlace, toSign, signedRecords, origTTL);
rrs.swap(signedRecords);
}
return 0;
}
-/** This catches DNSKEY requests. Returns 1 if it was handled, 0 if it wasn't */
-int PacketHandler::doDNSKEYRequest(DNSPacket *p, DNSPacket *r, const SOAData& sd)
+/** This adds DNSKEY records. Returns true if one was added */
+bool PacketHandler::addDNSKEY(DNSPacket *p, DNSPacket *r, const SOAData& sd)
{
- if(p->qtype.getCode()!=QType::DNSKEY)
- return false;
-
DNSResourceRecord rr;
bool haveOne=false;
DNSSECPrivateKey dpk;
}
-/** This catches DNSKEY requests. Returns 1 if it was handled, 0 if it wasn't */
-int PacketHandler::doNSEC3PARAMRequest(DNSPacket *p, DNSPacket *r, const SOAData& sd)
+/** This adds NSEC3PARAM records. Returns true if one was added */
+bool PacketHandler::addNSEC3PARAM(DNSPacket *p, DNSPacket *r, const SOAData& sd)
{
- if(p->qtype.getCode()!=QType::NSEC3PARAM)
- return false;
-
DNSResourceRecord rr;
NSEC3PARAMRecordContent ns3prc;
while ( chopOff( subdomain ) && !haveSomething ) {
B.lookup(QType(QType::ANY), "*."+subdomain, p, sd.domain_id);
while(B.get(rr)) {
- if(rr.qtype == p->qtype ||rr.qtype.getCode() == QType::CNAME || p->qtype.getCode() == QType::ANY)
+ if(rr.qtype == p->qtype ||rr.qtype.getCode() == QType::CNAME || (p->qtype.getCode() == QType::ANY && rr.qtype.getCode() != QType::RRSIG))
ret->push_back(rr);
wildcard="*."+subdomain;
haveSomething=true;
// i->d_place=DNSResourceRecord::AUTHORITY; // XXX FIXME
}
+ string content = stripDot(i->content);
+
QType qtypes[2];
qtypes[0]="A"; qtypes[1]="AAAA";
for(int n=0 ; n < d_doIPv6AdditionalProcessing + 1; ++n) {
if (i->qtype.getCode()==QType::SRV) {
vector<string>parts;
- stringtok(parts,i->content);
+ stringtok(parts, content);
if (parts.size() >= 3) {
B.lookup(qtypes[n],parts[2],p);
}
continue;
}
else {
- B.lookup(qtypes[n],i->content,p);
+ B.lookup(qtypes[n], content, p);
}
bool foundOne=false;
while(B.get(rr)) {
nrc.d_set.insert(QType::DNSKEY);
DNSResourceRecord rr;
- rr.ttl = sd.default_ttl;
B.lookup(QType(QType::ANY), begin);
while(B.get(rr)) {
- if(rr.domain_id == sd.domain_id)
+ if(rr.domain_id == sd.domain_id && (rr.qtype.getCode() == QType::NS || rr.auth))
nrc.d_set.insert(rr.qtype.getCode());
}
nrc.d_next=end;
+ rr.ttl = sd.default_ttl;
+
rr.qname=begin;
// we can leave ttl untouched, either it is the default, or it is what we retrieved above
rr.qtype=QType::NSEC;
n3rc.d_iterations = ns3prc.d_iterations;
n3rc.d_algorithm = 1; // SHA1, fixed in PowerDNS for now
- DNSResourceRecord rr;
- rr.ttl = sd.default_ttl;
+ DNSResourceRecord nsec3rr, rr;
B.lookup(QType(QType::ANY), unhashed);
while(B.get(rr)) {
n3rc.d_set.insert(rr.qtype.getCode());
n3rc.d_nexthash=end;
+ rr.ttl = sd.default_ttl;
rr.qname=dotConcat(toLower(toBase32Hex(begin)), sd.qname);
rr.qtype=QType::NSEC3;
return;
}
-bool PacketHandler::doDNSSECProcessing(DNSPacket *p, DNSPacket *r)
-{
- if(!p->d_dnssecOk)
- return false;
-
- vector<DNSResourceRecord *> arrs=r->getAnswerRecords();
- if(arrs.empty())
- return false;
-
- DLOG(L<<"Have arrs "<<arrs.size()<<" records to sign"<<endl);
- vector<DNSResourceRecord> crrs;
-
- for(vector<DNSResourceRecord *>::const_iterator i=arrs.begin();
- i!=arrs.end(); ++i)
- crrs.push_back(**i);
-
- // we now have a copy, push_back on packet might reallocate!
-
- for(vector<DNSResourceRecord>::const_iterator i=crrs.begin();
- i!=crrs.end();
- ++i) {
- if(i->d_place!=DNSResourceRecord::ANSWER)
- continue;
-
- B.lookup(QType(QType::RRSIG),i->qname,p);
- DNSResourceRecord rr;
- while(B.get(rr)) {
- rr.d_place=DNSResourceRecord::ANSWER;
- if(splitField(rr.content, ' ').first==i->qtype.getName())
- r->addRecord(rr);
- }
- }
-
- return false;
-}
-
/* Semantics:
- only one backend owns the SOA of a zone
rr.qname=sd.qname;
rr.qtype=QType::SOA;
rr.content=serializeSOAData(sd);
- rr.ttl=sd.ttl;
+ rr.ttl=min(sd.ttl, sd.default_ttl);
+ rr.signttl=sd.ttl;
rr.domain_id=sd.domain_id;
rr.d_place=DNSResourceRecord::AUTHORITY;
rr.auth = 1;
rr.qtype=QType::SOA;
rr.content=serializeSOAData(sd);
rr.ttl=sd.ttl;
+ rr.ttl=min(sd.ttl, sd.default_ttl);
+ rr.signttl=sd.ttl;
rr.domain_id=sd.domain_id;
rr.d_place=DNSResourceRecord::AUTHORITY;
rr.auth = 1;
addNSECX(p, r, target, target, sd.qname, 5);
if(pdns_iequals(sd.qname, p->qdomain)) {
- DNSSECKeeper::keyset_t zskset = d_dk.getKeys(p->qdomain);
- DNSResourceRecord rr;
- BOOST_FOREACH(DNSSECKeeper::keyset_t::value_type value, zskset) {
- rr.qtype=QType::DNSKEY;
- rr.ttl=sd.default_ttl;
- rr.qname=p->qdomain;
- rr.content=value.first.getDNSKEY().getZoneRepresentation();
- rr.auth = true;
- r->addRecord(rr);
- }
+ addDNSKEY(p, r, sd);
+ addNSEC3PARAM(p, r, sd);
}
}
authSet.insert(sd.qname);
if(pdns_iequals(sd.qname, p->qdomain)) {
- if(doDNSKEYRequest(p,r, sd))
- goto sendit;
-
- if(doNSEC3PARAMRequest(p,r, sd))
- goto sendit;
+ if(p->qtype.getCode() == QType::DNSKEY)
+ {
+ if(addDNSKEY(p, r, sd))
+ goto sendit;
+ }
+ else if(p->qtype.getCode() == QType::NSEC3PARAM)
+ {
+ if(addNSEC3PARAM(p,r, sd))
+ goto sendit;
+ }
}
if(p->qtype.getCode() == QType::SOA && pdns_iequals(sd.qname, p->qdomain)) {
weDone = weRedirected = weHaveUnauth = 0;
while(B.get(rr)) {
+ if (p->qtype.getCode() == QType::ANY && rr.qtype.getCode() == QType::RRSIG) // RRSIGS are added later any way.
+ continue; //TODO: this actually means addRRSig should check if the RRSig is already there.
+
if(rr.qtype.getCode() == QType::DS)
rr.auth = 1;
// cerr<<"Auth: "<<rr.auth<<", "<<(rr.qtype == p->qtype)<<", "<<rr.qtype.getName()<<endl;
return 0;
}
- // doDNSSECProcessing(p, r);
editSOA(d_dk, sd.qname, r);
if(p->d_dnssecOk)
int findUrl(DNSPacket *p, DNSPacket *r, string &target);
int doFancyRecords(DNSPacket *p, DNSPacket *r, string &target);
int doVersionRequest(DNSPacket *p, DNSPacket *r, string &target);
- int doDNSKEYRequest(DNSPacket *p, DNSPacket *r, const SOAData& sd);
- int doNSEC3PARAMRequest(DNSPacket *p, DNSPacket *r, const SOAData& sd);
+ bool addDNSKEY(DNSPacket *p, DNSPacket *r, const SOAData& sd);
+ bool addNSEC3PARAM(DNSPacket *p, DNSPacket *r, const SOAData& sd);
bool getAuth(DNSPacket *p, SOAData *sd, const string &target, int *zoneId);
bool getTLDAuth(DNSPacket *p, SOAData *sd, const string &target, int *zoneId);
int doAdditionalProcessingAndDropAA(DNSPacket *p, DNSPacket *r, const SOAData& sd);
DNSPacketWriter pw(packet, argv[3], DNSRecordContent::TypeToNumber(argv[4]));
- if(dnssec)
+ if(dnssec || getenv("SDIGBUFSIZE"))
{
- pw.addOpt(2800, 0, EDNSOpts::DNSSECOK);
+ char *sbuf=getenv("SDIGBUFSIZE");
+ int bufsize;
+ if(sbuf)
+ bufsize=atoi(sbuf);
+ else
+ bufsize=2800;
+
+ pw.addOpt(2800, 0, dnssec ? EDNSOpts::DNSSECOK : 0);
pw.commit();
}
for(MOADNSParser::answers_t::const_iterator i=mdp.d_answers.begin(); i!=mdp.d_answers.end(); ++i) {
cout<<i->first.d_place-1<<"\t"<<i->first.d_label<<"\tIN\t"<<DNSRecordContent::NumberToType(i->first.d_type);
- cout<<"\t"<<i->first.d_ttl<<"\t"<< i->first.d_content->getZoneRepresentation()<<"\n";
+ if(i->first.d_type == QType::RRSIG)
+ {
+ string zoneRep = i->first.d_content->getZoneRepresentation();
+ vector<string> parts;
+ stringtok(parts, zoneRep);
+ cout<<"\t"<<i->first.d_ttl<<"\t"<< parts[0]<<" "<<parts[1]<<" "<<parts[2]<<" "<<parts[3]<<" [expiry] [inception] [keytag] "<<parts[7]<<" ...\n";
+ }
+ else if(i->first.d_type == QType::DNSKEY)
+ {
+ string zoneRep = i->first.d_content->getZoneRepresentation();
+ vector<string> parts;
+ stringtok(parts, zoneRep);
+ cout<<"\t"<<i->first.d_ttl<<"\t"<< parts[0]<<" "<<parts[1]<<" "<<parts[2]<<" ...\n";
+ }
+ else
+ {
+ cout<<"\t"<<i->first.d_ttl<<"\t"<< i->first.d_content->getZoneRepresentation()<<"\n";
+ }
+
}
EDNSOpts edo;
DNSResourceRecord rr;
+ rr.qname = target;
+ rr.ttl = sd.default_ttl;
+ rr.auth = 1; // please sign!
+
BOOST_FOREACH(const DNSSECKeeper::keyset_t::value_type& value, keys) {
- rr.qname = target;
rr.qtype = QType(QType::DNSKEY);
- rr.ttl = sd.default_ttl;
- rr.auth = 1; // please sign!
rr.content = value.first.getDNSKEY().getZoneRepresentation();
string keyname = NSEC3Zone ? hashQNameWithSalt(ns3pr.d_iterations, ns3pr.d_salt, rr.qname) : labelReverse(rr.qname);
NSECXEntry& ne = nsecxrepo[keyname];
ne.d_set.insert(rr.qtype.getCode());
- ne.d_ttl = rr.ttl;
+ ne.d_ttl = sd.default_ttl;
csp.submit(rr);
}
dt.set();
int records=0;
while(sd.db->get(rr)) {
+ if (rr.qtype.getCode() == QType::RRSIG)
+ continue;
records++;
if(securedZone && (rr.auth || (!NSEC3Zone && rr.qtype.getCode() == QType::NS) || rr.qtype.getCode() == QType::DS)) { // this is probably NSEC specific, NSEC3 is different
keyname = NSEC3Zone ? hashQNameWithSalt(ns3pr.d_iterations, ns3pr.d_salt, rr.qname) : labelReverse(rr.qname);
NSECXEntry& ne = nsecxrepo[keyname];
ne.d_set.insert(rr.qtype.getCode());
- ne.d_ttl = rr.ttl;
+ ne.d_ttl = sd.default_ttl;
}
if(rr.qtype.getCode() == QType::SOA)
continue; // skip SOA - would indicate end of AXFR
rr.qtype = QType::NSEC;
rr.d_place = DNSResourceRecord::ANSWER;
rr.auth=true;
-
if(csp.submit(rr)) {
for(;;) {
outpacket->getRRS() = csp.getChunk();
-9235756d96b6ad0af7936419248c3ed5 ../regression-tests/example.com
-33e43585aeed4eb9af10a83c72a04d14 ../regression-tests/test.com
+b6d1c64a890e3f3ce40970724a12eb0b ../regression-tests/example.com
+6bddbc2cb32ff88988a75f0eba563e7c ../regression-tests/test.com
7d726bc367bf5e6ee5f1689994c6b6d4 ../regression-tests/wtest.com
a0670eef8fba3e16908057af8de2c2f2 ../regression-tests/dnssec-parent.com
42dd3a56c7d268e75836371878819ec4 ../regression-tests/delegated.dnssec-parent.com
24514dc104b22206daeb973ff9303545 ../regression-tests/minimal.com
-c37c1e26294ecf705295aa0f0d866fd6 ../modules/tinydnsbackend/data.cdb
+a27444846fa36a04bf0da82303b80cb4 ../modules/tinydnsbackend/data.cdb
#!/bin/sh
-cleandig example.com ANY
+SDIGBUFSIZE=32768 cleandig example.com ANY
-0 example.com. IN DNSKEY 120 256 3 5 AwEAAarTiHhPgvD28WCN8UBXcEcf8f+OF+d/bEoN6zTuHl/oVra5/qfonhYK/RjI74RzHc2wli9TpXOWycQV3YSfpFZ9z+GB/bbsvBon1XMyNf5KXuOwRdHZXIZh1cku3AcIyNroD26MPkbFLHY0+xRI+7u7OsQ6nYcPBpqDiJnB2BMh
0 example.com. IN MX 120 10 smtp-servers.example.com.
0 example.com. IN MX 120 15 smtp-servers.test.com.
0 example.com. IN NS 120 ns1.example.com.
0 example.com. IN NS 120 ns2.example.com.
-0 example.com. IN SOA 120 ns1.example.com. ahu.example.com. 2000081501 28800 7200 604800 86400
+0 example.com. IN SOA 100000 ns1.example.com. ahu.example.com. 2000081501 28800 7200 604800 86400
+2 . IN OPT 0
2 ns1.example.com. IN A 120 192.168.1.1
2 ns2.example.com. IN A 120 192.168.1.2
2 smtp-servers.example.com. IN A 120 192.168.0.2
-0 example.com. IN DNSKEY 120 256 3 5 AwEAAarTiHhPgvD28WCN8UBXcEcf8f+OF+d/bEoN6zTuHl/oVra5/qfonhYK/RjI74RzHc2wli9TpXOWycQV3YSfpFZ9z+GB/bbsvBon1XMyNf5KXuOwRdHZXIZh1cku3AcIyNroD26MPkbFLHY0+xRI+7u7OsQ6nYcPBpqDiJnB2BMh
+0 example.com. IN DNSKEY 86400 256 3 8 ...
+0 example.com. IN DNSKEY 86400 256 3 8 ...
+0 example.com. IN DNSKEY 86400 257 3 8 ...
0 example.com. IN MX 120 10 smtp-servers.example.com.
0 example.com. IN MX 120 15 smtp-servers.test.com.
0 example.com. IN NS 120 ns1.example.com.
0 example.com. IN NS 120 ns2.example.com.
-0 example.com. IN SOA 120 ns1.example.com. ahu.example.com. 2000081501 28800 7200 604800 86400
-Rcode: 0, RD: 0, QR: 1, TC: 1, AA: 1, opcode: 0
+0 example.com. IN SOA 100000 ns1.example.com. ahu.example.com. 2000081501 28800 7200 604800 86400
+2 . IN OPT 0
+2 ns1.example.com. IN A 120 192.168.1.1
+2 ns2.example.com. IN A 120 192.168.1.2
+2 smtp-servers.example.com. IN A 120 192.168.0.2
+2 smtp-servers.example.com. IN A 120 192.168.0.3
+2 smtp-servers.example.com. IN A 120 192.168.0.4
+Rcode: 0, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
Reply to question for qname='example.com.', qtype=ANY
-0 example.com. IN DNSKEY 120 256 3 5 AwEAAarTiHhPgvD28WCN8UBXcEcf8f+OF+d/bEoN6zTuHl/oVra5/qfonhYK/RjI74RzHc2wli9TpXOWycQV3YSfpFZ9z+GB/bbsvBon1XMyNf5KXuOwRdHZXIZh1cku3AcIyNroD26MPkbFLHY0+xRI+7u7OsQ6nYcPBpqDiJnB2BMh
+0 example.com. IN DNSKEY 86400 256 3 8 ...
+0 example.com. IN DNSKEY 86400 256 3 8 ...
+0 example.com. IN DNSKEY 86400 257 3 8 ...
0 example.com. IN MX 120 10 smtp-servers.example.com.
0 example.com. IN MX 120 15 smtp-servers.test.com.
0 example.com. IN NS 120 ns1.example.com.
0 example.com. IN NS 120 ns2.example.com.
-0 example.com. IN SOA 120 ns1.example.com. ahu.example.com. 2000081501 28800 7200 604800 86400
-0 vtnq6ocn2vkuiv3nju14oqtaen2mt5sk.example.com. IN NSEC3 120 1 1 1 abcd VTNQ6OCN2VKUIV3NJU14OQTAEN2MT5SL NS SOA MX RRSIG DNSKEY NSEC3PARAM
-Rcode: 0, RD: 0, QR: 1, TC: 1, AA: 1, opcode: 0
+0 example.com. IN NSEC3PARAM 86400 1 0 1 abcd
+0 example.com. IN SOA 100000 ns1.example.com. ahu.example.com. 2000081501 28800 7200 604800 86400
+0 vtnq6ocn2vkuiv3nju14oqtaen2mt5sk.example.com. IN NSEC3 86400 1 1 1 abcd VTNQ6OCN2VKUIV3NJU14OQTAEN2MT5SL NS SOA MX RRSIG DNSKEY NSEC3PARAM
+2 . IN OPT 0
+2 ns1.example.com. IN A 120 192.168.1.1
+2 ns2.example.com. IN A 120 192.168.1.2
+2 smtp-servers.example.com. IN A 120 192.168.0.2
+2 smtp-servers.example.com. IN A 120 192.168.0.3
+2 smtp-servers.example.com. IN A 120 192.168.0.4
+Rcode: 0, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
Reply to question for qname='example.com.', qtype=ANY
-0 example.com. IN DNSKEY 120 256 3 5 AwEAAarTiHhPgvD28WCN8UBXcEcf8f+OF+d/bEoN6zTuHl/oVra5/qfonhYK/RjI74RzHc2wli9TpXOWycQV3YSfpFZ9z+GB/bbsvBon1XMyNf5KXuOwRdHZXIZh1cku3AcIyNroD26MPkbFLHY0+xRI+7u7OsQ6nYcPBpqDiJnB2BMh
+0 example.com. IN DNSKEY 86400 256 3 8 ...
+0 example.com. IN DNSKEY 86400 256 3 8 ...
+0 example.com. IN DNSKEY 86400 257 3 8 ...
0 example.com. IN MX 120 10 smtp-servers.example.com.
0 example.com. IN MX 120 15 smtp-servers.test.com.
0 example.com. IN NS 120 ns1.example.com.
0 example.com. IN NS 120 ns2.example.com.
-0 example.com. IN SOA 120 ns1.example.com. ahu.example.com. 2000081501 28800 7200 604800 86400
-0 vtnq6ocn2vkuiv3nju14oqtaen2mt5sk.example.com. IN NSEC3 120 1 1 1 abcd VTP9NUQBEH436S7J0K8TI2A32MMKCUUL NS SOA MX RRSIG DNSKEY NSEC3PARAM
-Rcode: 0, RD: 0, QR: 1, TC: 1, AA: 1, opcode: 0
+0 example.com. IN NSEC3PARAM 86400 1 0 1 abcd
+0 example.com. IN SOA 100000 ns1.example.com. ahu.example.com. 2000081501 28800 7200 604800 86400
+0 vtnq6ocn2vkuiv3nju14oqtaen2mt5sk.example.com. IN NSEC3 86400 1 1 1 abcd VTP9NUQBEH436S7J0K8TI2A32MMKCUUL NS SOA MX RRSIG DNSKEY NSEC3PARAM
+2 . IN OPT 0
+2 ns1.example.com. IN A 120 192.168.1.1
+2 ns2.example.com. IN A 120 192.168.1.2
+2 smtp-servers.example.com. IN A 120 192.168.0.2
+2 smtp-servers.example.com. IN A 120 192.168.0.3
+2 smtp-servers.example.com. IN A 120 192.168.0.4
+Rcode: 0, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
Reply to question for qname='example.com.', qtype=ANY
--- /dev/null
+#!/bin/sh
+
+cleandig www.something.wtest.com ANY dnssec
+
--- /dev/null
+0 www.something.wtest.com. IN A 3600 4.3.2.1
+0 www.something.wtest.com. IN RRSIG 3600 A 8 3 3600 [expiry] [inception] [keytag] wtest.com. ...
+1 a.something.wtest.com. IN NSEC 86400 wtest.com. A RRSIG NSEC
+1 a.something.wtest.com. IN RRSIG 86400 NSEC 8 4 86400 [expiry] [inception] [keytag] wtest.com. ...
+2 . IN OPT 32768
+Rcode: 0, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='www.something.wtest.com.', qtype=ANY
--- /dev/null
+0 www.something.wtest.com. IN A 3600 4.3.2.1
+0 www.something.wtest.com. IN RRSIG 3600 A 8 3 3600 [expiry] [inception] [keytag] wtest.com. ...
+1 7q60llva2bt9ucubvn553q9s2pf8ho38.wtest.com. IN NSEC3 86400 1 1 1 abcd 7Q60LLVA2BT9UCUBVN553Q9S2PF8HO3A RRSIG
+1 7q60llva2bt9ucubvn553q9s2pf8ho38.wtest.com. IN RRSIG 86400 NSEC3 8 3 86400 [expiry] [inception] [keytag] wtest.com. ...
+2 . IN OPT 32768
+Rcode: 0, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='www.something.wtest.com.', qtype=ANY
--- /dev/null
+0 www.something.wtest.com. IN A 3600 4.3.2.1
+0 www.something.wtest.com. IN RRSIG 3600 A 8 3 3600 [expiry] [inception] [keytag] wtest.com. ...
+1 7k2dfhl64f0ndftst8u5rr5euminddvb.wtest.com. IN NSEC3 86400 1 1 1 abcd 95QOQ246KN3VM7HL8KVG8O45JIHMNLNG A RRSIG
+1 7k2dfhl64f0ndftst8u5rr5euminddvb.wtest.com. IN RRSIG 86400 NSEC3 8 3 86400 [expiry] [inception] [keytag] wtest.com. ...
+2 . IN OPT 32768
+Rcode: 0, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='www.something.wtest.com.', qtype=ANY
-0 example.com. IN SOA 120 ns1.example.com. ahu.example.com. 2000081501 28800 7200 604800 86400
+0 example.com. IN SOA 100000 ns1.example.com. ahu.example.com. 2000081501 28800 7200 604800 86400
Rcode: 0, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
Reply to question for qname='example.com.', qtype=SOA
unbound-host -v -C unbound-host.conf -t $2 $1 > $testname/unbound-host.out 2>&1
echo RETVAL: $? >> $testname/unbound-host.out
fi
+grep -i bogus $testname/*.out
0 www.example.com. IN CNAME 120 outpost.example.com.
-1 example.com. IN SOA 120 ns1.example.com. ahu.example.com. 2000081501 28800 7200 604800 86400
+1 example.com. IN SOA 86400 ns1.example.com. ahu.example.com. 2000081501 28800 7200 604800 86400
Rcode: 0, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
Reply to question for qname='www.example.com.', qtype=AAAA
#!/bin/sh
-cleandig usa.example.com DS dnssec | egrep 'IN[[:space:]]+NSEC'
+cleandig usa.example.com DS dnssec
-1 usa.example.com. IN NSEC 120 www.example.com. NS RRSIG NSEC
+1 example.com. IN RRSIG 86400 SOA 8 2 100000 [expiry] [inception] [keytag] example.com. ...
+1 example.com. IN SOA 86400 ns1.example.com. ahu.example.com. 2000081501 28800 7200 604800 86400
+1 usa.example.com. IN NSEC 86400 www.example.com. NS RRSIG NSEC
+1 usa.example.com. IN RRSIG 86400 NSEC 8 3 86400 [expiry] [inception] [keytag] example.com. ...
+2 . IN OPT 32768
+Rcode: 0, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='usa.example.com.', qtype=DS
-1 t67rqvqprigd7rtb5fah6c3o7g9th3iv.example.com. IN NSEC3 120 1 1 1 abcd T67RQVQPRIGD7RTB5FAH6C3O7G9TH3J1 NS RRSIG
-1 vtnq6ocn2vkuiv3nju14oqtaen2mt5sk.example.com. IN NSEC3 120 1 1 1 abcd VTNQ6OCN2VKUIV3NJU14OQTAEN2MT5SL NS SOA MX RRSIG DNSKEY NSEC3PARAM
+1 example.com. IN RRSIG 86400 SOA 8 2 100000 [expiry] [inception] [keytag] example.com. ...
+1 example.com. IN SOA 86400 ns1.example.com. ahu.example.com. 2000081501 28800 7200 604800 86400
+1 t67rqvqprigd7rtb5fah6c3o7g9th3iv.example.com. IN NSEC3 86400 1 1 1 abcd T67RQVQPRIGD7RTB5FAH6C3O7G9TH3J1 NS RRSIG
+1 t67rqvqprigd7rtb5fah6c3o7g9th3iv.example.com. IN RRSIG 86400 NSEC3 8 3 86400 [expiry] [inception] [keytag] example.com. ...
+1 vtnq6ocn2vkuiv3nju14oqtaen2mt5sk.example.com. IN NSEC3 86400 1 1 1 abcd VTNQ6OCN2VKUIV3NJU14OQTAEN2MT5SL NS SOA MX RRSIG DNSKEY NSEC3PARAM
+1 vtnq6ocn2vkuiv3nju14oqtaen2mt5sk.example.com. IN RRSIG 86400 NSEC3 8 3 86400 [expiry] [inception] [keytag] example.com. ...
+2 . IN OPT 32768
+Rcode: 0, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='usa.example.com.', qtype=DS
-1 t66sektb7egvs7s57m1qged4h6809g8s.example.com. IN NSEC3 120 1 1 1 abcd T6A44A7N1B90T5RIS4IBQKT51MMDL0LO A RRSIG
-1 vtnq6ocn2vkuiv3nju14oqtaen2mt5sk.example.com. IN NSEC3 120 1 1 1 abcd VTP9NUQBEH436S7J0K8TI2A32MMKCUUL NS SOA MX RRSIG DNSKEY NSEC3PARAM
+1 example.com. IN RRSIG 86400 SOA 8 2 100000 [expiry] [inception] [keytag] example.com. ...
+1 example.com. IN SOA 86400 ns1.example.com. ahu.example.com. 2000081501 28800 7200 604800 86400
+1 t66sektb7egvs7s57m1qged4h6809g8s.example.com. IN NSEC3 86400 1 1 1 abcd T6A44A7N1B90T5RIS4IBQKT51MMDL0LO A RRSIG
+1 t66sektb7egvs7s57m1qged4h6809g8s.example.com. IN RRSIG 86400 NSEC3 8 3 86400 [expiry] [inception] [keytag] example.com. ...
+1 vtnq6ocn2vkuiv3nju14oqtaen2mt5sk.example.com. IN NSEC3 86400 1 1 1 abcd VTP9NUQBEH436S7J0K8TI2A32MMKCUUL NS SOA MX RRSIG DNSKEY NSEC3PARAM
+1 vtnq6ocn2vkuiv3nju14oqtaen2mt5sk.example.com. IN RRSIG 86400 NSEC3 8 3 86400 [expiry] [inception] [keytag] example.com. ...
+2 . IN OPT 32768
+Rcode: 0, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='usa.example.com.', qtype=DS
#!/bin/sh
-cleandig delegated.dnssec-parent.com DS dnssec | egrep 'IN[[:space:]]+NSEC'
+cleandig delegated.dnssec-parent.com DS dnssec
-1 delegated.dnssec-parent.com. IN NSEC 3600 ns1.dnssec-parent.com. NS RRSIG NSEC
+1 delegated.dnssec-parent.com. IN NSEC 86400 ns1.dnssec-parent.com. NS RRSIG NSEC
+1 delegated.dnssec-parent.com. IN RRSIG 86400 NSEC 8 3 86400 [expiry] [inception] [keytag] dnssec-parent.com. ...
+1 dnssec-parent.com. IN RRSIG 3600 SOA 8 2 3600 [expiry] [inception] [keytag] dnssec-parent.com. ...
+1 dnssec-parent.com. IN SOA 3600 ns1.dnssec-parent.com. ahu.example.com. 2005092501 28800 7200 604800 86400
+2 . IN OPT 32768
+Rcode: 0, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='delegated.dnssec-parent.com.', qtype=DS
-1 be6iqh4fjrtdhacqk7g3iq96qcvf2qoi.dnssec-parent.com. IN NSEC3 3600 1 1 1 abcd BE6IQH4FJRTDHACQK7G3IQ96QCVF2QOK A NS SOA RRSIG
-1 dvkuo8kja65gcsq600e6di9u719lsj8u.dnssec-parent.com. IN NSEC3 3600 1 1 1 abcd DVKUO8KJA65GCSQ600E6DI9U719LSJ8V A NS SOA RRSIG DNSKEY NSEC3PARAM
+1 be6iqh4fjrtdhacqk7g3iq96qcvf2qoi.dnssec-parent.com. IN NSEC3 86400 1 1 1 abcd BE6IQH4FJRTDHACQK7G3IQ96QCVF2QOK A NS SOA RRSIG
+1 be6iqh4fjrtdhacqk7g3iq96qcvf2qoi.dnssec-parent.com. IN RRSIG 86400 NSEC3 8 3 86400 [expiry] [inception] [keytag] dnssec-parent.com. ...
+1 dnssec-parent.com. IN RRSIG 3600 SOA 8 2 3600 [expiry] [inception] [keytag] dnssec-parent.com. ...
+1 dnssec-parent.com. IN SOA 3600 ns1.dnssec-parent.com. ahu.example.com. 2005092501 28800 7200 604800 86400
+1 dvkuo8kja65gcsq600e6di9u719lsj8u.dnssec-parent.com. IN NSEC3 86400 1 1 1 abcd DVKUO8KJA65GCSQ600E6DI9U719LSJ8V A NS SOA RRSIG DNSKEY NSEC3PARAM
+1 dvkuo8kja65gcsq600e6di9u719lsj8u.dnssec-parent.com. IN RRSIG 86400 NSEC3 8 3 86400 [expiry] [inception] [keytag] dnssec-parent.com. ...
+2 . IN OPT 32768
+Rcode: 0, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='delegated.dnssec-parent.com.', qtype=DS
-1 29ceqcf4ekgl2gr9i0vjjtk62h5lqs40.dnssec-parent.com. IN NSEC3 3600 1 1 1 abcd DVKUO8KJA65GCSQ600E6DI9U719LSJ8U A RRSIG
-1 dvkuo8kja65gcsq600e6di9u719lsj8u.dnssec-parent.com. IN NSEC3 3600 1 1 1 abcd 1SCAQA30LQ0DO5EIRNE4KPJFBEBFGR54 A NS SOA RRSIG DNSKEY NSEC3PARAM
+1 29ceqcf4ekgl2gr9i0vjjtk62h5lqs40.dnssec-parent.com. IN NSEC3 86400 1 1 1 abcd DVKUO8KJA65GCSQ600E6DI9U719LSJ8U A RRSIG
+1 29ceqcf4ekgl2gr9i0vjjtk62h5lqs40.dnssec-parent.com. IN RRSIG 86400 NSEC3 8 3 86400 [expiry] [inception] [keytag] dnssec-parent.com. ...
+1 dnssec-parent.com. IN RRSIG 3600 SOA 8 2 3600 [expiry] [inception] [keytag] dnssec-parent.com. ...
+1 dnssec-parent.com. IN SOA 3600 ns1.dnssec-parent.com. ahu.example.com. 2005092501 28800 7200 604800 86400
+1 dvkuo8kja65gcsq600e6di9u719lsj8u.dnssec-parent.com. IN NSEC3 86400 1 1 1 abcd 1SCAQA30LQ0DO5EIRNE4KPJFBEBFGR54 A NS SOA RRSIG DNSKEY NSEC3PARAM
+1 dvkuo8kja65gcsq600e6di9u719lsj8u.dnssec-parent.com. IN RRSIG 86400 NSEC3 8 3 86400 [expiry] [inception] [keytag] dnssec-parent.com. ...
+2 . IN OPT 32768
+Rcode: 0, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='delegated.dnssec-parent.com.', qtype=DS
1 usa.example.com. IN NS 120 usa-ns1.usa.example.com.
1 usa.example.com. IN NS 120 usa-ns2.usa.example.com.
-1 usa.example.com. IN NSEC 120 www.example.com. NS RRSIG NSEC
+1 usa.example.com. IN NSEC 86400 www.example.com. NS RRSIG NSEC
2 . IN OPT 32768
2 usa-ns1.usa.example.com. IN A 120 192.168.4.1
2 usa-ns2.usa.example.com. IN A 120 192.168.4.2
-1 t67rqvqprigd7rtb5fah6c3o7g9th3iv.example.com. IN NSEC3 120 1 1 1 abcd T67RQVQPRIGD7RTB5FAH6C3O7G9TH3J1 NS RRSIG
+1 t67rqvqprigd7rtb5fah6c3o7g9th3iv.example.com. IN NSEC3 86400 1 1 1 abcd T67RQVQPRIGD7RTB5FAH6C3O7G9TH3J1 NS RRSIG
1 usa.example.com. IN NS 120 usa-ns1.usa.example.com.
1 usa.example.com. IN NS 120 usa-ns2.usa.example.com.
-1 vtnq6ocn2vkuiv3nju14oqtaen2mt5sk.example.com. IN NSEC3 120 1 1 1 abcd VTNQ6OCN2VKUIV3NJU14OQTAEN2MT5SL NS SOA MX RRSIG DNSKEY NSEC3PARAM
+1 vtnq6ocn2vkuiv3nju14oqtaen2mt5sk.example.com. IN NSEC3 86400 1 1 1 abcd VTNQ6OCN2VKUIV3NJU14OQTAEN2MT5SL NS SOA MX RRSIG DNSKEY NSEC3PARAM
2 . IN OPT 32768
2 usa-ns1.usa.example.com. IN A 120 192.168.4.1
2 usa-ns2.usa.example.com. IN A 120 192.168.4.2
-1 t66sektb7egvs7s57m1qged4h6809g8s.example.com. IN NSEC3 120 1 1 1 abcd T6A44A7N1B90T5RIS4IBQKT51MMDL0LO A RRSIG
+1 t66sektb7egvs7s57m1qged4h6809g8s.example.com. IN NSEC3 86400 1 1 1 abcd T6A44A7N1B90T5RIS4IBQKT51MMDL0LO A RRSIG
1 usa.example.com. IN NS 120 usa-ns1.usa.example.com.
1 usa.example.com. IN NS 120 usa-ns2.usa.example.com.
-1 vtnq6ocn2vkuiv3nju14oqtaen2mt5sk.example.com. IN NSEC3 120 1 1 1 abcd VTP9NUQBEH436S7J0K8TI2A32MMKCUUL NS SOA MX RRSIG DNSKEY NSEC3PARAM
+1 vtnq6ocn2vkuiv3nju14oqtaen2mt5sk.example.com. IN NSEC3 86400 1 1 1 abcd VTP9NUQBEH436S7J0K8TI2A32MMKCUUL NS SOA MX RRSIG DNSKEY NSEC3PARAM
2 . IN OPT 32768
2 usa-ns1.usa.example.com. IN A 120 192.168.4.1
2 usa-ns2.usa.example.com. IN A 120 192.168.4.2
$TTL 120
$ORIGIN example.com.
-@ IN SOA ns1.example.com. ahu.example.com. (
+@ 100000 IN SOA ns1.example.com. ahu.example.com. (
2000081501
8H ; refresh
2H ; retry
@ IN NS ns2.example.com.
@ IN MX 10 smtp-servers.example.com.
@ IN MX 15 smtp-servers.test.com.
-@ IN DNSKEY 256 3 5 AwEAAarTiHhPgvD28WCN8UBXcEcf8f+OF+d/bEoN6zTuHl/oVra5/qfonhYK/RjI74RzHc2wli9TpXOWycQV3YSfpFZ9z+GB/bbsvBon1XMyNf5KXuOwRdHZXIZh1cku3AcIyNroD26MPkbFLHY0+xRI+7u7OsQ6nYcPBpqDiJnB2BMh
+;@ IN DNSKEY 256 3 5 AwEAAarTiHhPgvD28WCN8UBXcEcf8f+OF+d/bEoN6zTuHl/oVra5/qfonhYK/RjI74RzHc2wli9TpXOWycQV3YSfpFZ9z+GB/bbsvBon1XMyNf5KXuOwRdHZXIZh1cku3AcIyNroD26MPkbFLHY0+xRI+7u7OsQ6nYcPBpqDiJnB2BMh
;
ns1 IN A 192.168.1.1
ns2 IN A 192.168.1.2
#!/bin/sh
-cleandig www.a.b.c.d.e.something.wtest.com A dnssec | egrep 'IN[[:space:]]+NSEC'
+cleandig www.a.b.c.d.e.something.wtest.com A dnssec
-1 a.something.wtest.com. IN NSEC 3600 wtest.com. A RRSIG NSEC
+0 www.a.b.c.d.e.something.wtest.com. IN A 3600 4.3.2.1
+0 www.a.b.c.d.e.something.wtest.com. IN RRSIG 3600 A 8 3 3600 [expiry] [inception] [keytag] wtest.com. ...
+1 a.something.wtest.com. IN NSEC 86400 wtest.com. A RRSIG NSEC
+1 a.something.wtest.com. IN RRSIG 86400 NSEC 8 4 86400 [expiry] [inception] [keytag] wtest.com. ...
+2 . IN OPT 32768
+Rcode: 0, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='www.a.b.c.d.e.something.wtest.com.', qtype=A
+0 www.a.b.c.d.e.something.wtest.com. IN A 3600 4.3.2.1
+0 www.a.b.c.d.e.something.wtest.com. IN RRSIG 3600 A 8 3 3600 [expiry] [inception] [keytag] wtest.com. ...
1 pqgjjrj5si55uc1208gt1hp1k217fhqu.wtest.com. IN NSEC3 86400 1 1 1 abcd PQGJJRJ5SI55UC1208GT1HP1K217FHR0 RRSIG
+1 pqgjjrj5si55uc1208gt1hp1k217fhqu.wtest.com. IN RRSIG 86400 NSEC3 8 3 86400 [expiry] [inception] [keytag] wtest.com. ...
+2 . IN OPT 32768
+Rcode: 0, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='www.a.b.c.d.e.something.wtest.com.', qtype=A
-1 pd15qdsjjbfosu5fg2oqrnlb8r8oifl6.wtest.com. IN NSEC3 3600 1 1 1 abcd SHEGK154N8362AG22AR9VDDRF3127M6I A RRSIG
+0 www.a.b.c.d.e.something.wtest.com. IN A 3600 4.3.2.1
+0 www.a.b.c.d.e.something.wtest.com. IN RRSIG 3600 A 8 3 3600 [expiry] [inception] [keytag] wtest.com. ...
+1 pd15qdsjjbfosu5fg2oqrnlb8r8oifl6.wtest.com. IN NSEC3 86400 1 1 1 abcd SHEGK154N8362AG22AR9VDDRF3127M6I A RRSIG
+1 pd15qdsjjbfosu5fg2oqrnlb8r8oifl6.wtest.com. IN RRSIG 86400 NSEC3 8 3 86400 [expiry] [inception] [keytag] wtest.com. ...
+2 . IN OPT 32768
+Rcode: 0, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='www.a.b.c.d.e.something.wtest.com.', qtype=A
#!/bin/sh
-cleandig www.a.b.c.d.e.wtest.com A dnssec | egrep 'IN[[:space:]]+NSEC'
+cleandig www.a.b.c.d.e.wtest.com A dnssec
-1 *.a.b.c.d.e.wtest.com. IN NSEC 3600 secure.wtest.com. A RRSIG NSEC
+0 www.a.b.c.d.e.wtest.com. IN A 3600 6.7.8.9
+0 www.a.b.c.d.e.wtest.com. IN RRSIG 3600 A 8 7 3600 [expiry] [inception] [keytag] wtest.com. ...
+1 *.a.b.c.d.e.wtest.com. IN NSEC 86400 secure.wtest.com. A RRSIG NSEC
+1 *.a.b.c.d.e.wtest.com. IN RRSIG 86400 NSEC 8 7 86400 [expiry] [inception] [keytag] wtest.com. ...
+2 . IN OPT 32768
+Rcode: 0, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='www.a.b.c.d.e.wtest.com.', qtype=A
+0 www.a.b.c.d.e.wtest.com. IN A 3600 6.7.8.9
+0 www.a.b.c.d.e.wtest.com. IN RRSIG 3600 A 8 7 3600 [expiry] [inception] [keytag] wtest.com. ...
1 pet5iqbgccga60p2n38nmuanrk50papg.wtest.com. IN NSEC3 86400 1 1 1 abcd PET5IQBGCCGA60P2N38NMUANRK50PAPI RRSIG
+1 pet5iqbgccga60p2n38nmuanrk50papg.wtest.com. IN RRSIG 86400 NSEC3 8 3 86400 [expiry] [inception] [keytag] wtest.com. ...
+2 . IN OPT 32768
+Rcode: 0, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='www.a.b.c.d.e.wtest.com.', qtype=A
-1 pd15qdsjjbfosu5fg2oqrnlb8r8oifl6.wtest.com. IN NSEC3 3600 1 1 1 abcd SHEGK154N8362AG22AR9VDDRF3127M6I A RRSIG
+0 www.a.b.c.d.e.wtest.com. IN A 3600 6.7.8.9
+0 www.a.b.c.d.e.wtest.com. IN RRSIG 3600 A 8 7 3600 [expiry] [inception] [keytag] wtest.com. ...
+1 pd15qdsjjbfosu5fg2oqrnlb8r8oifl6.wtest.com. IN NSEC3 86400 1 1 1 abcd SHEGK154N8362AG22AR9VDDRF3127M6I A RRSIG
+1 pd15qdsjjbfosu5fg2oqrnlb8r8oifl6.wtest.com. IN RRSIG 86400 NSEC3 8 3 86400 [expiry] [inception] [keytag] wtest.com. ...
+2 . IN OPT 32768
+Rcode: 0, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='www.a.b.c.d.e.wtest.com.', qtype=A
-1 minimal.com. IN NSEC 120 minimal.com. NS SOA RRSIG NSEC DNSKEY
+1 minimal.com. IN NSEC 86400 minimal.com. NS SOA RRSIG NSEC DNSKEY
-1 09lo11rs63u9b3d538a86ijvqcqt9312.minimal.com. IN NSEC3 120 1 1 1 abcd 09LO11RS63U9B3D538A86IJVQCQT9313 NS SOA RRSIG DNSKEY NSEC3PARAM
+1 09lo11rs63u9b3d538a86ijvqcqt9312.minimal.com. IN NSEC3 86400 1 1 1 abcd 09LO11RS63U9B3D538A86IJVQCQT9313 NS SOA RRSIG DNSKEY NSEC3PARAM
-1 09lo11rs63u9b3d538a86ijvqcqt9312.minimal.com. IN NSEC3 120 1 1 1 abcd 09LO11RS63U9B3D538A86IJVQCQT9312 NS SOA RRSIG DNSKEY NSEC3PARAM
+1 09lo11rs63u9b3d538a86ijvqcqt9312.minimal.com. IN NSEC3 86400 1 1 1 abcd 09LO11RS63U9B3D538A86IJVQCQT9312 NS SOA RRSIG DNSKEY NSEC3PARAM
-1 minimal.com. IN NSEC 120 minimal.com. NS SOA RRSIG NSEC DNSKEY
+1 minimal.com. IN NSEC 86400 minimal.com. NS SOA RRSIG NSEC DNSKEY
-1 09lo11rs63u9b3d538a86ijvqcqt9312.minimal.com. IN NSEC3 120 1 1 1 abcd 09LO11RS63U9B3D538A86IJVQCQT9313 NS SOA RRSIG DNSKEY NSEC3PARAM
+1 09lo11rs63u9b3d538a86ijvqcqt9312.minimal.com. IN NSEC3 86400 1 1 1 abcd 09LO11RS63U9B3D538A86IJVQCQT9313 NS SOA RRSIG DNSKEY NSEC3PARAM
1 8hki26qt36v6qs8cll4e4nvjit38uhap.minimal.com. IN NSEC3 86400 1 1 1 abcd 8HKI26QT36V6QS8CLL4E4NVJIT38UHAR RRSIG
1 9oadfe8c55evko75kb06spdl23p4fmrh.minimal.com. IN NSEC3 86400 1 1 1 abcd 9OADFE8C55EVKO75KB06SPDL23P4FMRJ RRSIG
-1 09lo11rs63u9b3d538a86ijvqcqt9312.minimal.com. IN NSEC3 120 1 1 1 abcd 09LO11RS63U9B3D538A86IJVQCQT9312 NS SOA RRSIG DNSKEY NSEC3PARAM
+1 09lo11rs63u9b3d538a86ijvqcqt9312.minimal.com. IN NSEC3 86400 1 1 1 abcd 09LO11RS63U9B3D538A86IJVQCQT9312 NS SOA RRSIG DNSKEY NSEC3PARAM
-1 example.com. IN SOA 120 ns1.example.com. ahu.example.com. 2000081501 28800 7200 604800 86400
+1 example.com. IN SOA 86400 ns1.example.com. ahu.example.com. 2000081501 28800 7200 604800 86400
Rcode: 0, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
Reply to question for qname='ns1.example.com.', qtype=AAAA
-1 example.com. IN SOA 120 ns1.example.com. ahu.example.com. 2000081501 28800 7200 604800 86400
+1 example.com. IN SOA 86400 ns1.example.com. ahu.example.com. 2000081501 28800 7200 604800 86400
Rcode: 0, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
Reply to question for qname='outpost.example.com.', qtype=AAAA
1 blah.test.com. IN NS 3600 blah.test.com.
-2 blah.test.com. IN A 3600 9.9.9.9
+2 blah.test.com. IN A 3600 192.168.6.1
Rcode: 0, RD: 0, QR: 1, TC: 0, AA: 0, opcode: 0
Reply to question for qname='blah.test.com.', qtype=MX
#!/bin/sh
-cleandig hightype.example.com NSEC dnssec | egrep 'IN[[:space:]]+NSEC'
+cleandig hightype.example.com NSEC dnssec
-0 hightype.example.com. IN NSEC 120 host-0.example.com. A RRSIG NSEC TYPE65534
+0 hightype.example.com. IN NSEC 86400 host-0.example.com. A RRSIG NSEC TYPE65534
+0 hightype.example.com. IN RRSIG 86400 NSEC 8 3 86400 [expiry] [inception] [keytag] example.com. ...
+2 . IN OPT 32768
+Rcode: 0, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='hightype.example.com.', qtype=NSEC
-1 3v4it454kfh142bi7afagnuvigrpfptt.example.com. IN NSEC3 120 1 1 1 abcd 3V4IT454KFH142BI7AFAGNUVIGRPFPTU A RRSIG TYPE65534
+1 3v4it454kfh142bi7afagnuvigrpfptt.example.com. IN NSEC3 86400 1 1 1 abcd 3V4IT454KFH142BI7AFAGNUVIGRPFPTU A RRSIG TYPE65534
+1 3v4it454kfh142bi7afagnuvigrpfptt.example.com. IN RRSIG 86400 NSEC3 8 3 86400 [expiry] [inception] [keytag] example.com. ...
+1 example.com. IN RRSIG 86400 SOA 8 2 100000 [expiry] [inception] [keytag] example.com. ...
+1 example.com. IN SOA 86400 ns1.example.com. ahu.example.com. 2000081501 28800 7200 604800 86400
+2 . IN OPT 32768
+Rcode: 0, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='hightype.example.com.', qtype=NSEC
-1 3v4it454kfh142bi7afagnuvigrpfptt.example.com. IN NSEC3 120 1 1 1 abcd 3V4S43RV1GT28N0F2PPJ8I8482ESMUOB A RRSIG TYPE65534
+1 3v4it454kfh142bi7afagnuvigrpfptt.example.com. IN NSEC3 86400 1 1 1 abcd 3V4S43RV1GT28N0F2PPJ8I8482ESMUOB A RRSIG TYPE65534
+1 3v4it454kfh142bi7afagnuvigrpfptt.example.com. IN RRSIG 86400 NSEC3 8 3 86400 [expiry] [inception] [keytag] example.com. ...
+1 example.com. IN RRSIG 86400 SOA 8 2 100000 [expiry] [inception] [keytag] example.com. ...
+1 example.com. IN SOA 86400 ns1.example.com. ahu.example.com. 2000081501 28800 7200 604800 86400
+2 . IN OPT 32768
+Rcode: 0, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='hightype.example.com.', qtype=NSEC
--- /dev/null
+#!/bin/sh
+cleandig blah.test.com MX dnssec
--- /dev/null
+1 blah.test.com. IN NS 3600 blah.test.com.
+1 blah.test.com. IN NSEC 86400 counter.test.com. NS RRSIG NSEC
+1 blah.test.com. IN RRSIG 86400 NSEC 8 3 86400 [expiry] [inception] [keytag] test.com. ...
+2 . IN OPT 32768
+2 blah.test.com. IN A 3600 192.168.6.1
+Rcode: 0, RD: 0, QR: 1, TC: 0, AA: 0, opcode: 0
+Reply to question for qname='blah.test.com.', qtype=MX
--- /dev/null
+1 2eu2gulbu53h9uvhfalshpbo2a83t6l2.test.com. IN NSEC3 86400 1 1 1 abcd 2EU2GULBU53H9UVHFALSHPBO2A83T6L3 NS SOA MX RRSIG DNSKEY NSEC3PARAM
+1 2eu2gulbu53h9uvhfalshpbo2a83t6l2.test.com. IN RRSIG 86400 NSEC3 8 3 86400 [expiry] [inception] [keytag] test.com. ...
+1 blah.test.com. IN NS 3600 blah.test.com.
+1 s96h2qicbt8d9i5aa43kp8sjjresq4ka.test.com. IN NSEC3 86400 1 1 1 abcd S96H2QICBT8D9I5AA43KP8SJJRESQ4KC A NS RRSIG
+1 s96h2qicbt8d9i5aa43kp8sjjresq4ka.test.com. IN RRSIG 86400 NSEC3 8 3 86400 [expiry] [inception] [keytag] test.com. ...
+2 . IN OPT 32768
+2 blah.test.com. IN A 3600 192.168.6.1
+Rcode: 0, RD: 0, QR: 1, TC: 0, AA: 0, opcode: 0
+Reply to question for qname='blah.test.com.', qtype=MX
--- /dev/null
+1 2eu2gulbu53h9uvhfalshpbo2a83t6l2.test.com. IN NSEC3 86400 1 1 1 abcd 88F1BQRB2ISCVFEL2SQQCKSVFLNEKAP6 NS SOA MX RRSIG DNSKEY NSEC3PARAM
+1 2eu2gulbu53h9uvhfalshpbo2a83t6l2.test.com. IN RRSIG 86400 NSEC3 8 3 86400 [expiry] [inception] [keytag] test.com. ...
+1 blah.test.com. IN NS 3600 blah.test.com.
+1 qd81ag9inqts1ocs7api0pji94k27btr.test.com. IN NSEC3 86400 1 1 1 abcd SA5VVPQN1COEJGJ3HBKFEKDNII8KKSQA CNAME RRSIG
+1 qd81ag9inqts1ocs7api0pji94k27btr.test.com. IN RRSIG 86400 NSEC3 8 3 86400 [expiry] [inception] [keytag] test.com. ...
+2 . IN OPT 32768
+2 blah.test.com. IN A 3600 192.168.6.1
+Rcode: 0, RD: 0, QR: 1, TC: 0, AA: 0, opcode: 0
+Reply to question for qname='blah.test.com.', qtype=MX
#!/bin/sh
-cleandig usazzz.example.com A dnssec | egrep 'IN[[:space:]]+NSEC'
+cleandig usazzz.example.com A dnssec
-1 example.com. IN NSEC 120 escapedtext.example.com. NS SOA MX RRSIG NSEC DNSKEY
-1 usa.example.com. IN NSEC 120 www.example.com. NS RRSIG NSEC
+1 example.com. IN NSEC 86400 escapedtext.example.com. NS SOA MX RRSIG NSEC DNSKEY
+1 example.com. IN RRSIG 86400 NSEC 8 2 86400 [expiry] [inception] [keytag] example.com. ...
+1 example.com. IN RRSIG 86400 SOA 8 2 100000 [expiry] [inception] [keytag] example.com. ...
+1 example.com. IN SOA 86400 ns1.example.com. ahu.example.com. 2000081501 28800 7200 604800 86400
+1 usa.example.com. IN NSEC 86400 www.example.com. NS RRSIG NSEC
+1 usa.example.com. IN RRSIG 86400 NSEC 8 3 86400 [expiry] [inception] [keytag] example.com. ...
+2 . IN OPT 32768
+Rcode: 3, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='usazzz.example.com.', qtype=A
1 9fag9508oqu3m22qac0u5eqgg45v8cf0.example.com. IN NSEC3 86400 1 1 1 abcd 9FAG9508OQU3M22QAC0U5EQGG45V8CF2 RRSIG
+1 9fag9508oqu3m22qac0u5eqgg45v8cf0.example.com. IN RRSIG 86400 NSEC3 8 3 86400 [expiry] [inception] [keytag] example.com. ...
+1 example.com. IN RRSIG 86400 SOA 8 2 100000 [expiry] [inception] [keytag] example.com. ...
+1 example.com. IN SOA 86400 ns1.example.com. ahu.example.com. 2000081501 28800 7200 604800 86400
1 kt3ll2fgp7p2s71mk7frk5igi8pc8gl1.example.com. IN NSEC3 86400 1 1 1 abcd KT3LL2FGP7P2S71MK7FRK5IGI8PC8GL3 RRSIG
-1 vtnq6ocn2vkuiv3nju14oqtaen2mt5sk.example.com. IN NSEC3 120 1 1 1 abcd VTNQ6OCN2VKUIV3NJU14OQTAEN2MT5SL NS SOA MX RRSIG DNSKEY NSEC3PARAM
+1 kt3ll2fgp7p2s71mk7frk5igi8pc8gl1.example.com. IN RRSIG 86400 NSEC3 8 3 86400 [expiry] [inception] [keytag] example.com. ...
+1 vtnq6ocn2vkuiv3nju14oqtaen2mt5sk.example.com. IN NSEC3 86400 1 1 1 abcd VTNQ6OCN2VKUIV3NJU14OQTAEN2MT5SL NS SOA MX RRSIG DNSKEY NSEC3PARAM
+1 vtnq6ocn2vkuiv3nju14oqtaen2mt5sk.example.com. IN RRSIG 86400 NSEC3 8 3 86400 [expiry] [inception] [keytag] example.com. ...
+2 . IN OPT 32768
+Rcode: 3, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='usazzz.example.com.', qtype=A
-1 9f8hti7cc7oqnqjv84klnp89glqrss3r.example.com. IN NSEC3 120 1 1 1 abcd 9FDAOFPLLN0FQFU9DP274GOU59QFHSLD A RRSIG
-1 kt0pu1qu9of4ek09a6amheu1l4c4dq6b.example.com. IN NSEC3 120 1 1 1 abcd KT832M4L92B5MCUCJI8QJF16MM2DU3MK A RRSIG
-1 vtnq6ocn2vkuiv3nju14oqtaen2mt5sk.example.com. IN NSEC3 120 1 1 1 abcd VTP9NUQBEH436S7J0K8TI2A32MMKCUUL NS SOA MX RRSIG DNSKEY NSEC3PARAM
+1 9f8hti7cc7oqnqjv84klnp89glqrss3r.example.com. IN NSEC3 86400 1 1 1 abcd 9FDAOFPLLN0FQFU9DP274GOU59QFHSLD A RRSIG
+1 9f8hti7cc7oqnqjv84klnp89glqrss3r.example.com. IN RRSIG 86400 NSEC3 8 3 86400 [expiry] [inception] [keytag] example.com. ...
+1 example.com. IN RRSIG 86400 SOA 8 2 100000 [expiry] [inception] [keytag] example.com. ...
+1 example.com. IN SOA 86400 ns1.example.com. ahu.example.com. 2000081501 28800 7200 604800 86400
+1 kt0pu1qu9of4ek09a6amheu1l4c4dq6b.example.com. IN NSEC3 86400 1 1 1 abcd KT832M4L92B5MCUCJI8QJF16MM2DU3MK A RRSIG
+1 kt0pu1qu9of4ek09a6amheu1l4c4dq6b.example.com. IN RRSIG 86400 NSEC3 8 3 86400 [expiry] [inception] [keytag] example.com. ...
+1 vtnq6ocn2vkuiv3nju14oqtaen2mt5sk.example.com. IN NSEC3 86400 1 1 1 abcd VTP9NUQBEH436S7J0K8TI2A32MMKCUUL NS SOA MX RRSIG DNSKEY NSEC3PARAM
+1 vtnq6ocn2vkuiv3nju14oqtaen2mt5sk.example.com. IN RRSIG 86400 NSEC3 8 3 86400 [expiry] [inception] [keytag] example.com. ...
+2 . IN OPT 32768
+Rcode: 3, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='usazzz.example.com.', qtype=A
#!/bin/sh
-cleandig outerpost.example.com A dnssec | egrep 'IN[[:space:]]+NSEC'
+cleandig outerpost.example.com A dnssec
-1 example.com. IN NSEC 120 escapedtext.example.com. NS SOA MX RRSIG NSEC DNSKEY
-1 ns2.example.com. IN NSEC 120 outpost.example.com. A RRSIG NSEC
+1 example.com. IN NSEC 86400 escapedtext.example.com. NS SOA MX RRSIG NSEC DNSKEY
+1 example.com. IN RRSIG 86400 NSEC 8 2 86400 [expiry] [inception] [keytag] example.com. ...
+1 example.com. IN RRSIG 86400 SOA 8 2 100000 [expiry] [inception] [keytag] example.com. ...
+1 example.com. IN SOA 86400 ns1.example.com. ahu.example.com. 2000081501 28800 7200 604800 86400
+1 ns2.example.com. IN NSEC 86400 outpost.example.com. A RRSIG NSEC
+1 ns2.example.com. IN RRSIG 86400 NSEC 8 3 86400 [expiry] [inception] [keytag] example.com. ...
+2 . IN OPT 32768
+Rcode: 3, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='outerpost.example.com.', qtype=A
1 9fag9508oqu3m22qac0u5eqgg45v8cf0.example.com. IN NSEC3 86400 1 1 1 abcd 9FAG9508OQU3M22QAC0U5EQGG45V8CF2 RRSIG
+1 9fag9508oqu3m22qac0u5eqgg45v8cf0.example.com. IN RRSIG 86400 NSEC3 8 3 86400 [expiry] [inception] [keytag] example.com. ...
+1 example.com. IN RRSIG 86400 SOA 8 2 100000 [expiry] [inception] [keytag] example.com. ...
+1 example.com. IN SOA 86400 ns1.example.com. ahu.example.com. 2000081501 28800 7200 604800 86400
1 sthvu2kihc96kc1tu8v3curr8og5dghn.example.com. IN NSEC3 86400 1 1 1 abcd STHVU2KIHC96KC1TU8V3CURR8OG5DGHP RRSIG
-1 vtnq6ocn2vkuiv3nju14oqtaen2mt5sk.example.com. IN NSEC3 120 1 1 1 abcd VTNQ6OCN2VKUIV3NJU14OQTAEN2MT5SL NS SOA MX RRSIG DNSKEY NSEC3PARAM
+1 sthvu2kihc96kc1tu8v3curr8og5dghn.example.com. IN RRSIG 86400 NSEC3 8 3 86400 [expiry] [inception] [keytag] example.com. ...
+1 vtnq6ocn2vkuiv3nju14oqtaen2mt5sk.example.com. IN NSEC3 86400 1 1 1 abcd VTNQ6OCN2VKUIV3NJU14OQTAEN2MT5SL NS SOA MX RRSIG DNSKEY NSEC3PARAM
+1 vtnq6ocn2vkuiv3nju14oqtaen2mt5sk.example.com. IN RRSIG 86400 NSEC3 8 3 86400 [expiry] [inception] [keytag] example.com. ...
+2 . IN OPT 32768
+Rcode: 3, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='outerpost.example.com.', qtype=A
-1 9f8hti7cc7oqnqjv84klnp89glqrss3r.example.com. IN NSEC3 120 1 1 1 abcd 9FDAOFPLLN0FQFU9DP274GOU59QFHSLD A RRSIG
-1 sthkgrndv06hbdrfe7a329lup4mctmqr.example.com. IN NSEC3 120 1 1 1 abcd STKPKJBN0URUBBIM832MF33V5OGJR396 A RRSIG
-1 vtnq6ocn2vkuiv3nju14oqtaen2mt5sk.example.com. IN NSEC3 120 1 1 1 abcd VTP9NUQBEH436S7J0K8TI2A32MMKCUUL NS SOA MX RRSIG DNSKEY NSEC3PARAM
+1 9f8hti7cc7oqnqjv84klnp89glqrss3r.example.com. IN NSEC3 86400 1 1 1 abcd 9FDAOFPLLN0FQFU9DP274GOU59QFHSLD A RRSIG
+1 9f8hti7cc7oqnqjv84klnp89glqrss3r.example.com. IN RRSIG 86400 NSEC3 8 3 86400 [expiry] [inception] [keytag] example.com. ...
+1 example.com. IN RRSIG 86400 SOA 8 2 100000 [expiry] [inception] [keytag] example.com. ...
+1 example.com. IN SOA 86400 ns1.example.com. ahu.example.com. 2000081501 28800 7200 604800 86400
+1 sthkgrndv06hbdrfe7a329lup4mctmqr.example.com. IN NSEC3 86400 1 1 1 abcd STKPKJBN0URUBBIM832MF33V5OGJR396 A RRSIG
+1 sthkgrndv06hbdrfe7a329lup4mctmqr.example.com. IN RRSIG 86400 NSEC3 8 3 86400 [expiry] [inception] [keytag] example.com. ...
+1 vtnq6ocn2vkuiv3nju14oqtaen2mt5sk.example.com. IN NSEC3 86400 1 1 1 abcd VTP9NUQBEH436S7J0K8TI2A32MMKCUUL NS SOA MX RRSIG DNSKEY NSEC3PARAM
+1 vtnq6ocn2vkuiv3nju14oqtaen2mt5sk.example.com. IN RRSIG 86400 NSEC3 8 3 86400 [expiry] [inception] [keytag] example.com. ...
+2 . IN OPT 32768
+Rcode: 3, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='outerpost.example.com.', qtype=A
#!/bin/sh
-cleandig t.something.wtest.com TXT dnssec | egrep 'IN[[:space:]]+NSEC'
+cleandig t.something.wtest.com TXT dnssec
-1 *.something.wtest.com. IN NSEC 3600 a.something.wtest.com. A RRSIG NSEC
-1 a.something.wtest.com. IN NSEC 3600 wtest.com. A RRSIG NSEC
+1 *.something.wtest.com. IN NSEC 86400 a.something.wtest.com. A RRSIG NSEC
+1 *.something.wtest.com. IN RRSIG 86400 NSEC 8 3 86400 [expiry] [inception] [keytag] wtest.com. ...
+1 a.something.wtest.com. IN NSEC 86400 wtest.com. A RRSIG NSEC
+1 a.something.wtest.com. IN RRSIG 86400 NSEC 8 4 86400 [expiry] [inception] [keytag] wtest.com. ...
+1 wtest.com. IN RRSIG 3600 SOA 8 2 3600 [expiry] [inception] [keytag] wtest.com. ...
+1 wtest.com. IN SOA 3600 ns1.wtest.com. ahu.example.com. 2005092501 28800 7200 604800 86400
+2 . IN OPT 32768
+Rcode: 0, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='t.something.wtest.com.', qtype=TXT
1 368r0s1q794jmkdrcpf6f85v316hd9ak.wtest.com. IN NSEC3 86400 1 1 1 abcd 368R0S1Q794JMKDRCPF6F85V316HD9AM RRSIG
-1 54njs65s8u96tkffrft6l7j1t1556vik.wtest.com. IN NSEC3 3600 1 1 1 abcd 54NJS65S8U96TKFFRFT6L7J1T1556VIL TXT RRSIG
+1 368r0s1q794jmkdrcpf6f85v316hd9ak.wtest.com. IN RRSIG 86400 NSEC3 8 3 86400 [expiry] [inception] [keytag] wtest.com. ...
+1 54njs65s8u96tkffrft6l7j1t1556vik.wtest.com. IN NSEC3 86400 1 1 1 abcd 54NJS65S8U96TKFFRFT6L7J1T1556VIL TXT RRSIG
+1 54njs65s8u96tkffrft6l7j1t1556vik.wtest.com. IN RRSIG 86400 NSEC3 8 3 86400 [expiry] [inception] [keytag] wtest.com. ...
+1 wtest.com. IN RRSIG 3600 SOA 8 2 3600 [expiry] [inception] [keytag] wtest.com. ...
+1 wtest.com. IN SOA 3600 ns1.wtest.com. ahu.example.com. 2005092501 28800 7200 604800 86400
+2 . IN OPT 32768
+Rcode: 0, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='t.something.wtest.com.', qtype=TXT
-1 54njs65s8u96tkffrft6l7j1t1556vik.wtest.com. IN NSEC3 3600 1 1 1 abcd 67I2ESLUBOJ7DPG4263L3T8DV19G6D0G TXT RRSIG
-1 shegk154n8362ag22ar9vddrf3127m6i.wtest.com. IN NSEC3 3600 1 1 1 abcd 53I5J7TGM8QG2GBV716RVQVARQCIJUE2 A NS SOA MX RRSIG DNSKEY NSEC3PARAM
+1 54njs65s8u96tkffrft6l7j1t1556vik.wtest.com. IN NSEC3 86400 1 1 1 abcd 67I2ESLUBOJ7DPG4263L3T8DV19G6D0G TXT RRSIG
+1 54njs65s8u96tkffrft6l7j1t1556vik.wtest.com. IN RRSIG 86400 NSEC3 8 3 86400 [expiry] [inception] [keytag] wtest.com. ...
+1 shegk154n8362ag22ar9vddrf3127m6i.wtest.com. IN NSEC3 86400 1 1 1 abcd 53I5J7TGM8QG2GBV716RVQVARQCIJUE2 A NS SOA MX RRSIG DNSKEY NSEC3PARAM
+1 shegk154n8362ag22ar9vddrf3127m6i.wtest.com. IN RRSIG 86400 NSEC3 8 3 86400 [expiry] [inception] [keytag] wtest.com. ...
+1 wtest.com. IN RRSIG 3600 SOA 8 2 3600 [expiry] [inception] [keytag] wtest.com. ...
+1 wtest.com. IN SOA 3600 ns1.wtest.com. ahu.example.com. 2005092501 28800 7200 604800 86400
+2 . IN OPT 32768
+Rcode: 0, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='t.something.wtest.com.', qtype=TXT
#!/bin/sh
-cleandig zzz.example.com A dnssec | egrep 'IN[[:space:]]+NSEC'
+cleandig zzz.example.com A dnssec
-1 example.com. IN NSEC 120 escapedtext.example.com. NS SOA MX RRSIG NSEC DNSKEY
-1 www.example.com. IN NSEC 120 example.com. CNAME RRSIG NSEC
+1 example.com. IN NSEC 86400 escapedtext.example.com. NS SOA MX RRSIG NSEC DNSKEY
+1 example.com. IN RRSIG 86400 NSEC 8 2 86400 [expiry] [inception] [keytag] example.com. ...
+1 example.com. IN RRSIG 86400 SOA 8 2 100000 [expiry] [inception] [keytag] example.com. ...
+1 example.com. IN SOA 86400 ns1.example.com. ahu.example.com. 2000081501 28800 7200 604800 86400
+1 www.example.com. IN NSEC 86400 example.com. CNAME RRSIG NSEC
+1 www.example.com. IN RRSIG 86400 NSEC 8 3 86400 [expiry] [inception] [keytag] example.com. ...
+2 . IN OPT 32768
+Rcode: 3, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='zzz.example.com.', qtype=A
-1 9f8hti7cc7oqnqjv84klnp89glqrss3r.example.com. IN NSEC3 120 1 1 1 abcd 9FDAOFPLLN0FQFU9DP274GOU59QFHSLD A RRSIG
-1 gnk5kv3h2h1h8ge405j6093608ukp3i5.example.com. IN NSEC3 120 1 1 1 abcd GNO4LESKG6U7HKEJ9UL71SF1HD7F1P96 A RRSIG
-1 vtnq6ocn2vkuiv3nju14oqtaen2mt5sk.example.com. IN NSEC3 120 1 1 1 abcd VTP9NUQBEH436S7J0K8TI2A32MMKCUUL NS SOA MX RRSIG DNSKEY NSEC3PARAM
+1 9f8hti7cc7oqnqjv84klnp89glqrss3r.example.com. IN NSEC3 86400 1 1 1 abcd 9FDAOFPLLN0FQFU9DP274GOU59QFHSLD A RRSIG
+1 9f8hti7cc7oqnqjv84klnp89glqrss3r.example.com. IN RRSIG 86400 NSEC3 8 3 86400 [expiry] [inception] [keytag] example.com. ...
+1 example.com. IN RRSIG 86400 SOA 8 2 100000 [expiry] [inception] [keytag] example.com. ...
+1 example.com. IN SOA 86400 ns1.example.com. ahu.example.com. 2000081501 28800 7200 604800 86400
+1 gnk5kv3h2h1h8ge405j6093608ukp3i5.example.com. IN NSEC3 86400 1 1 1 abcd GNO4LESKG6U7HKEJ9UL71SF1HD7F1P96 A RRSIG
+1 gnk5kv3h2h1h8ge405j6093608ukp3i5.example.com. IN RRSIG 86400 NSEC3 8 3 86400 [expiry] [inception] [keytag] example.com. ...
+1 vtnq6ocn2vkuiv3nju14oqtaen2mt5sk.example.com. IN NSEC3 86400 1 1 1 abcd VTP9NUQBEH436S7J0K8TI2A32MMKCUUL NS SOA MX RRSIG DNSKEY NSEC3PARAM
+1 vtnq6ocn2vkuiv3nju14oqtaen2mt5sk.example.com. IN RRSIG 86400 NSEC3 8 3 86400 [expiry] [inception] [keytag] example.com. ...
+2 . IN OPT 32768
+Rcode: 3, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='zzz.example.com.', qtype=A
#!/bin/sh
-cleandig example.com TXT dnssec | egrep 'IN[[:space:]]+NSEC'
+cleandig example.com TXT dnssec
-1 example.com. IN NSEC 120 escapedtext.example.com. NS SOA MX RRSIG NSEC DNSKEY
+1 example.com. IN NSEC 86400 escapedtext.example.com. NS SOA MX RRSIG NSEC DNSKEY
+1 example.com. IN RRSIG 86400 NSEC 8 2 86400 [expiry] [inception] [keytag] example.com. ...
+1 example.com. IN RRSIG 86400 SOA 8 2 100000 [expiry] [inception] [keytag] example.com. ...
+1 example.com. IN SOA 86400 ns1.example.com. ahu.example.com. 2000081501 28800 7200 604800 86400
+2 . IN OPT 32768
+Rcode: 0, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='example.com.', qtype=TXT
-1 vtnq6ocn2vkuiv3nju14oqtaen2mt5sk.example.com. IN NSEC3 120 1 1 1 abcd VTNQ6OCN2VKUIV3NJU14OQTAEN2MT5SL NS SOA MX RRSIG DNSKEY NSEC3PARAM
+1 example.com. IN RRSIG 86400 SOA 8 2 100000 [expiry] [inception] [keytag] example.com. ...
+1 example.com. IN SOA 86400 ns1.example.com. ahu.example.com. 2000081501 28800 7200 604800 86400
+1 vtnq6ocn2vkuiv3nju14oqtaen2mt5sk.example.com. IN NSEC3 86400 1 1 1 abcd VTNQ6OCN2VKUIV3NJU14OQTAEN2MT5SL NS SOA MX RRSIG DNSKEY NSEC3PARAM
+1 vtnq6ocn2vkuiv3nju14oqtaen2mt5sk.example.com. IN RRSIG 86400 NSEC3 8 3 86400 [expiry] [inception] [keytag] example.com. ...
+2 . IN OPT 32768
+Rcode: 0, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='example.com.', qtype=TXT
-1 vtnq6ocn2vkuiv3nju14oqtaen2mt5sk.example.com. IN NSEC3 120 1 1 1 abcd VTP9NUQBEH436S7J0K8TI2A32MMKCUUL NS SOA MX RRSIG DNSKEY NSEC3PARAM
+1 example.com. IN RRSIG 86400 SOA 8 2 100000 [expiry] [inception] [keytag] example.com. ...
+1 example.com. IN SOA 86400 ns1.example.com. ahu.example.com. 2000081501 28800 7200 604800 86400
+1 vtnq6ocn2vkuiv3nju14oqtaen2mt5sk.example.com. IN NSEC3 86400 1 1 1 abcd VTP9NUQBEH436S7J0K8TI2A32MMKCUUL NS SOA MX RRSIG DNSKEY NSEC3PARAM
+1 vtnq6ocn2vkuiv3nju14oqtaen2mt5sk.example.com. IN RRSIG 86400 NSEC3 8 3 86400 [expiry] [inception] [keytag] example.com. ...
+2 . IN OPT 32768
+Rcode: 0, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='example.com.', qtype=TXT
#!/bin/sh
-cleandig outpost.example.com TXT dnssec | egrep 'IN[[:space:]]+NSEC'
+cleandig outpost.example.com TXT dnssec
-1 outpost.example.com. IN NSEC 120 semi-external.example.com. A RRSIG NSEC
+1 example.com. IN RRSIG 86400 SOA 8 2 100000 [expiry] [inception] [keytag] example.com. ...
+1 example.com. IN SOA 86400 ns1.example.com. ahu.example.com. 2000081501 28800 7200 604800 86400
+1 outpost.example.com. IN NSEC 86400 semi-external.example.com. A RRSIG NSEC
+1 outpost.example.com. IN RRSIG 86400 NSEC 8 3 86400 [expiry] [inception] [keytag] example.com. ...
+2 . IN OPT 32768
+Rcode: 0, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='outpost.example.com.', qtype=TXT
-1 5uvgfm2vjcje09svs7lfb22i1uuqjf98.example.com. IN NSEC3 120 1 1 1 abcd 5UVGFM2VJCJE09SVS7LFB22I1UUQJF99 A RRSIG
+1 5uvgfm2vjcje09svs7lfb22i1uuqjf98.example.com. IN NSEC3 86400 1 1 1 abcd 5UVGFM2VJCJE09SVS7LFB22I1UUQJF99 A RRSIG
+1 5uvgfm2vjcje09svs7lfb22i1uuqjf98.example.com. IN RRSIG 86400 NSEC3 8 3 86400 [expiry] [inception] [keytag] example.com. ...
+1 example.com. IN RRSIG 86400 SOA 8 2 100000 [expiry] [inception] [keytag] example.com. ...
+1 example.com. IN SOA 86400 ns1.example.com. ahu.example.com. 2000081501 28800 7200 604800 86400
+2 . IN OPT 32768
+Rcode: 0, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='outpost.example.com.', qtype=TXT
-1 5uvgfm2vjcje09svs7lfb22i1uuqjf98.example.com. IN NSEC3 120 1 1 1 abcd 5V0S7HPRC5IAFH3C3RO0HHNH543D3UIU A RRSIG
+1 5uvgfm2vjcje09svs7lfb22i1uuqjf98.example.com. IN NSEC3 86400 1 1 1 abcd 5V0S7HPRC5IAFH3C3RO0HHNH543D3UIU A RRSIG
+1 5uvgfm2vjcje09svs7lfb22i1uuqjf98.example.com. IN RRSIG 86400 NSEC3 8 3 86400 [expiry] [inception] [keytag] example.com. ...
+1 example.com. IN RRSIG 86400 SOA 8 2 100000 [expiry] [inception] [keytag] example.com. ...
+1 example.com. IN SOA 86400 ns1.example.com. ahu.example.com. 2000081501 28800 7200 604800 86400
+2 . IN OPT 32768
+Rcode: 0, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='outpost.example.com.', qtype=TXT
#!/bin/sh
-cleandig nx1.nx2.outpost.example.com A dnssec | egrep 'IN[[:space:]]+NSEC'
+cleandig nx1.nx2.outpost.example.com A dnssec
-1 example.com. IN NSEC 120 escapedtext.example.com. NS SOA MX RRSIG NSEC DNSKEY
-1 outpost.example.com. IN NSEC 120 semi-external.example.com. A RRSIG NSEC
+1 example.com. IN NSEC 86400 escapedtext.example.com. NS SOA MX RRSIG NSEC DNSKEY
+1 example.com. IN RRSIG 86400 NSEC 8 2 86400 [expiry] [inception] [keytag] example.com. ...
+1 example.com. IN RRSIG 86400 SOA 8 2 100000 [expiry] [inception] [keytag] example.com. ...
+1 example.com. IN SOA 86400 ns1.example.com. ahu.example.com. 2000081501 28800 7200 604800 86400
+1 outpost.example.com. IN NSEC 86400 semi-external.example.com. A RRSIG NSEC
+1 outpost.example.com. IN RRSIG 86400 NSEC 8 3 86400 [expiry] [inception] [keytag] example.com. ...
+2 . IN OPT 32768
+Rcode: 3, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='nx1.nx2.outpost.example.com.', qtype=A
-1 5uvgfm2vjcje09svs7lfb22i1uuqjf98.example.com. IN NSEC3 120 1 1 1 abcd 5UVGFM2VJCJE09SVS7LFB22I1UUQJF99 A RRSIG
+1 5uvgfm2vjcje09svs7lfb22i1uuqjf98.example.com. IN NSEC3 86400 1 1 1 abcd 5UVGFM2VJCJE09SVS7LFB22I1UUQJF99 A RRSIG
+1 5uvgfm2vjcje09svs7lfb22i1uuqjf98.example.com. IN RRSIG 86400 NSEC3 8 3 86400 [expiry] [inception] [keytag] example.com. ...
+1 example.com. IN RRSIG 86400 SOA 8 2 100000 [expiry] [inception] [keytag] example.com. ...
+1 example.com. IN SOA 86400 ns1.example.com. ahu.example.com. 2000081501 28800 7200 604800 86400
1 sdgbafmjek5v4t8c89q9u0n03qmcslor.example.com. IN NSEC3 86400 1 1 1 abcd SDGBAFMJEK5V4T8C89Q9U0N03QMCSLOT RRSIG
+1 sdgbafmjek5v4t8c89q9u0n03qmcslor.example.com. IN RRSIG 86400 NSEC3 8 3 86400 [expiry] [inception] [keytag] example.com. ...
1 tsdp8hajlfgr90cv4ib634g1m25nc5up.example.com. IN NSEC3 86400 1 1 1 abcd TSDP8HAJLFGR90CV4IB634G1M25NC5UR RRSIG
+1 tsdp8hajlfgr90cv4ib634g1m25nc5up.example.com. IN RRSIG 86400 NSEC3 8 3 86400 [expiry] [inception] [keytag] example.com. ...
+2 . IN OPT 32768
+Rcode: 3, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='nx1.nx2.outpost.example.com.', qtype=A
-1 5uvgfm2vjcje09svs7lfb22i1uuqjf98.example.com. IN NSEC3 120 1 1 1 abcd 5V0S7HPRC5IAFH3C3RO0HHNH543D3UIU A RRSIG
-1 sdeu4ba3b451gf8ijikm2tphu3bugl4g.example.com. IN NSEC3 120 1 1 1 abcd SDH8FVJ6LQLSVCQCO8QP82I6JTR574H2 A RRSIG
-1 tsbl3ev9tces1kjgto3qtn36ltlu0te1.example.com. IN NSEC3 120 1 1 1 abcd TSIKPRKTT53V9ILUK08SMR9KADQ44TR1 A RRSIG
+1 5uvgfm2vjcje09svs7lfb22i1uuqjf98.example.com. IN NSEC3 86400 1 1 1 abcd 5V0S7HPRC5IAFH3C3RO0HHNH543D3UIU A RRSIG
+1 5uvgfm2vjcje09svs7lfb22i1uuqjf98.example.com. IN RRSIG 86400 NSEC3 8 3 86400 [expiry] [inception] [keytag] example.com. ...
+1 example.com. IN RRSIG 86400 SOA 8 2 100000 [expiry] [inception] [keytag] example.com. ...
+1 example.com. IN SOA 86400 ns1.example.com. ahu.example.com. 2000081501 28800 7200 604800 86400
+1 sdeu4ba3b451gf8ijikm2tphu3bugl4g.example.com. IN NSEC3 86400 1 1 1 abcd SDH8FVJ6LQLSVCQCO8QP82I6JTR574H2 A RRSIG
+1 sdeu4ba3b451gf8ijikm2tphu3bugl4g.example.com. IN RRSIG 86400 NSEC3 8 3 86400 [expiry] [inception] [keytag] example.com. ...
+1 tsbl3ev9tces1kjgto3qtn36ltlu0te1.example.com. IN NSEC3 86400 1 1 1 abcd TSIKPRKTT53V9ILUK08SMR9KADQ44TR1 A RRSIG
+1 tsbl3ev9tces1kjgto3qtn36ltlu0te1.example.com. IN RRSIG 86400 NSEC3 8 3 86400 [expiry] [inception] [keytag] example.com. ...
+2 . IN OPT 32768
+Rcode: 3, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='nx1.nx2.outpost.example.com.', qtype=A
-1 example.com. IN SOA 120 ns1.example.com. ahu.example.com. 2000081501 28800 7200 604800 86400
+1 example.com. IN SOA 86400 ns1.example.com. ahu.example.com. 2000081501 28800 7200 604800 86400
Rcode: 3, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
Reply to question for qname='no-such-host.example.com.', qtype=A
#!/bin/sh
-cleandig nx.outpost.example.com A dnssec | egrep 'IN[[:space:]]+NSEC'
+cleandig nx.outpost.example.com A dnssec
-1 example.com. IN NSEC 120 escapedtext.example.com. NS SOA MX RRSIG NSEC DNSKEY
-1 outpost.example.com. IN NSEC 120 semi-external.example.com. A RRSIG NSEC
+1 example.com. IN NSEC 86400 escapedtext.example.com. NS SOA MX RRSIG NSEC DNSKEY
+1 example.com. IN RRSIG 86400 NSEC 8 2 86400 [expiry] [inception] [keytag] example.com. ...
+1 example.com. IN RRSIG 86400 SOA 8 2 100000 [expiry] [inception] [keytag] example.com. ...
+1 example.com. IN SOA 86400 ns1.example.com. ahu.example.com. 2000081501 28800 7200 604800 86400
+1 outpost.example.com. IN NSEC 86400 semi-external.example.com. A RRSIG NSEC
+1 outpost.example.com. IN RRSIG 86400 NSEC 8 3 86400 [expiry] [inception] [keytag] example.com. ...
+2 . IN OPT 32768
+Rcode: 3, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='nx.outpost.example.com.', qtype=A
-1 5uvgfm2vjcje09svs7lfb22i1uuqjf98.example.com. IN NSEC3 120 1 1 1 abcd 5UVGFM2VJCJE09SVS7LFB22I1UUQJF99 A RRSIG
+1 5uvgfm2vjcje09svs7lfb22i1uuqjf98.example.com. IN NSEC3 86400 1 1 1 abcd 5UVGFM2VJCJE09SVS7LFB22I1UUQJF99 A RRSIG
+1 5uvgfm2vjcje09svs7lfb22i1uuqjf98.example.com. IN RRSIG 86400 NSEC3 8 3 86400 [expiry] [inception] [keytag] example.com. ...
+1 example.com. IN RRSIG 86400 SOA 8 2 100000 [expiry] [inception] [keytag] example.com. ...
+1 example.com. IN SOA 86400 ns1.example.com. ahu.example.com. 2000081501 28800 7200 604800 86400
1 k6ta8mhi455hk3jskn0b2st81j6fa1l0.example.com. IN NSEC3 86400 1 1 1 abcd K6TA8MHI455HK3JSKN0B2ST81J6FA1L2 RRSIG
+1 k6ta8mhi455hk3jskn0b2st81j6fa1l0.example.com. IN RRSIG 86400 NSEC3 8 3 86400 [expiry] [inception] [keytag] example.com. ...
1 tsdp8hajlfgr90cv4ib634g1m25nc5up.example.com. IN NSEC3 86400 1 1 1 abcd TSDP8HAJLFGR90CV4IB634G1M25NC5UR RRSIG
+1 tsdp8hajlfgr90cv4ib634g1m25nc5up.example.com. IN RRSIG 86400 NSEC3 8 3 86400 [expiry] [inception] [keytag] example.com. ...
+2 . IN OPT 32768
+Rcode: 3, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='nx.outpost.example.com.', qtype=A
-1 5uvgfm2vjcje09svs7lfb22i1uuqjf98.example.com. IN NSEC3 120 1 1 1 abcd 5V0S7HPRC5IAFH3C3RO0HHNH543D3UIU A RRSIG
-1 k6r6482mfo4upme9n407c2grb6opp1ip.example.com. IN NSEC3 120 1 1 1 abcd K6TDMVV7BP54FEFUIVR0BVABIBUN0AV9 A RRSIG
-1 tsbl3ev9tces1kjgto3qtn36ltlu0te1.example.com. IN NSEC3 120 1 1 1 abcd TSIKPRKTT53V9ILUK08SMR9KADQ44TR1 A RRSIG
+1 5uvgfm2vjcje09svs7lfb22i1uuqjf98.example.com. IN NSEC3 86400 1 1 1 abcd 5V0S7HPRC5IAFH3C3RO0HHNH543D3UIU A RRSIG
+1 5uvgfm2vjcje09svs7lfb22i1uuqjf98.example.com. IN RRSIG 86400 NSEC3 8 3 86400 [expiry] [inception] [keytag] example.com. ...
+1 example.com. IN RRSIG 86400 SOA 8 2 100000 [expiry] [inception] [keytag] example.com. ...
+1 example.com. IN SOA 86400 ns1.example.com. ahu.example.com. 2000081501 28800 7200 604800 86400
+1 k6r6482mfo4upme9n407c2grb6opp1ip.example.com. IN NSEC3 86400 1 1 1 abcd K6TDMVV7BP54FEFUIVR0BVABIBUN0AV9 A RRSIG
+1 k6r6482mfo4upme9n407c2grb6opp1ip.example.com. IN RRSIG 86400 NSEC3 8 3 86400 [expiry] [inception] [keytag] example.com. ...
+1 tsbl3ev9tces1kjgto3qtn36ltlu0te1.example.com. IN NSEC3 86400 1 1 1 abcd TSIKPRKTT53V9ILUK08SMR9KADQ44TR1 A RRSIG
+1 tsbl3ev9tces1kjgto3qtn36ltlu0te1.example.com. IN RRSIG 86400 NSEC3 8 3 86400 [expiry] [inception] [keytag] example.com. ...
+2 . IN OPT 32768
+Rcode: 3, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='nx.outpost.example.com.', qtype=A
-#!/bin/sh -ex
+#!/bin/bash -ex
tosql ()
{
opendbx-sqlite3
tinydns
+add -presigned to any gmysql test (except narrow) to test
+presigned operation
+
add 'wait' (literally) after the context to not kill
pdns_server immediately after testing
__EOF__
exit 1
fi
+rm -f pdns*.pid
+
+presigned=no
+
+if [ ${context: -10} = "-presigned" ]
+then
+ presigned=yes
+ port=$((port-100))
+ context=${context%-presigned}
+fi
+
case $context in
bind)
$RUNWRAPPER ../pdns/pdns_server --daemon=no --local-port=$port --socket-dir=./ \
--no-shuffle --launch=bind --bind-config=./named.conf \
- --fancy-records --query-logging --send-root-referral --loglevel=9 \
+ --fancy-records --send-root-referral \
--cache-ttl=0 --no-config &
skipreasons=nodnssec
;;
$RUNWRAPPER ../pdns/pdns_server --daemon=no --local-port=$port --socket-dir=./ \
--no-shuffle --launch=bind --bind-config=./named.conf \
--bind-dnssec-db=./dnssec.sqlite3 \
- --query-logging --send-root-referral --loglevel=9 \
+ --send-root-referral \
--cache-ttl=0 --no-config &
;;
gmysql-nodnssec)
$RUNWRAPPER ../pdns/pdns_server --daemon=no --local-port=$port --socket-dir=./ \
--no-shuffle --launch=gmysql \
- --fancy-records --query-logging --send-root-referral --loglevel=9 \
+ --fancy-records --send-root-referral \
--cache-ttl=0 --no-config \
--gmysql-dbname="$GMYSQLDB" \
--gmysql-user="$GMYSQLUSER" \
$RUNWRAPPER ../pdns/pdns_server --daemon=no --local-port=$port --socket-dir=./ \
--no-shuffle --launch=gmysql --gmysql-dnssec \
- --fancy-records --query-logging --send-root-referral --loglevel=9 \
+ --fancy-records --send-root-referral \
--cache-ttl=0 --no-config \
--gmysql-dbname="$GMYSQLDB" \
--gmysql-user="$GMYSQLUSER" \
$RUNWRAPPER ../pdns/pdns_server --daemon=no --local-port=$port --socket-dir=./ \
--no-shuffle --launch=gpgsql --gpgsql-dnssec \
- --fancy-records --query-logging --send-root-referral --loglevel=9 \
+ --fancy-records --send-root-referral \
--cache-ttl=0 --no-config \
--gpgsql-dbname="$GPGSQLDB" \
--gpgsql-user="$GPGSQLUSER" &
__EOF__
$RUNWRAPPER ../pdns/pdns_server --daemon=no --local-port=$port --socket-dir=./ \
--no-shuffle --launch=gpgsql \
- --fancy-records --query-logging --send-root-referral --loglevel=9 \
+ --fancy-records --send-root-referral \
--cache-ttl=0 --no-config \
--gpgsql-dbname="$GPGSQLDB" \
--gpgsql-user="$GPGSQLUSER" &
$RUNWRAPPER ../pdns/pdns_server --daemon=no --local-port=$port --socket-dir=./ \
--no-shuffle --launch=gsqlite3 \
- --fancy-records --query-logging --send-root-referral --loglevel=9 \
+ --fancy-records --send-root-referral \
--cache-ttl=0 --no-config \
--gsqlite3-database=pdns.sqlite3 &
skipreasons=nodnssec
$RUNWRAPPER ../pdns/pdns_server --daemon=no --local-port=$port --socket-dir=./ \
--no-shuffle --launch=opendbx \
- --fancy-records --query-logging --send-root-referral --loglevel=9 \
+ --fancy-records --send-root-referral \
--cache-ttl=0 --no-config \
--opendbx-backend=sqlite3 --opendbx-host-read=./ --opendbx-host-write=./ \
--opendbx-database=pdns-opendbx.sqlite3 &
$RUNWRAPPER ../pdns/pdns_server --daemon=no --local-port=$port --socket-dir=./ \
--no-shuffle --launch=gsqlite3 --gsqlite3-dnssec \
- --fancy-records --query-logging --send-root-referral --loglevel=9 \
+ --fancy-records --send-root-referral \
--cache-ttl=0 --no-config \
--gsqlite3-database=pdns.sqlite3 &
if [ $context = gsqlite3-nsec3 ]
tinydns)
$RUNWRAPPER ../pdns/pdns_server --daemon=no --local-port=$port --socket-dir=./ \
--no-shuffle --launch=tinydns \
- --query-logging --loglevel=9 --cache-ttl=0 --no-config \
+ --cache-ttl=0 --no-config \
--send-root-referral \
--tinydns-dbfile=../modules/tinydnsbackend/data.cdb &
skipreasons=nodnssec
export extracontexts
export skipreasons
+if [ $presigned = yes ] && [ ${context:0:6} = gmysql ]
+then
+ context=${context}-presigned
+ [ -z "$GMYSQL2DB" ] && GMYSQL2DB=pdnstest2
+ [ -z "$GMYSQL2USER" ] && GMYSQL2USER=root
+ [ -z "$GMYSQL2HOST" ] && GMYSQL2HOST=localhost
+ [ -z "$GMYSQL2PASSWD" ] && GMYSQL2PASSWD=''
+
+ mysqladmin --user="$GMYSQL2USER" --password="$GMYSQL2PASSWD" --host="$GMYSQL2HOST" --force drop "$GMYSQL2DB" \
+ || echo ignoring mysqladmin drop failure
+ mysqladmin --user="$GMYSQL2USER" --password="$GMYSQL2PASSWD" --host="$GMYSQL2HOST" create "$GMYSQL2DB"
+ mysql --user="$GMYSQL2USER" --password="$GMYSQL2PASSWD" --host="$GMYSQL2HOST" \
+ "$GMYSQL2DB" < ../pdns/no-dnssec.schema.mysql.sql
+ mysql --user="$GMYSQL2USER" --password="$GMYSQL2PASSWD" --host="$GMYSQL2HOST" \
+ "$GMYSQL2DB" < ../pdns/dnssec.schema.mysql.sql
+
+ for zone in $(grep zone named.conf | cut -f2 -d\")
+ do
+ mysql --user="$GMYSQL2USER" --password="$GMYSQL2PASSWD" --host="$GMYSQL2HOST" \
+ "$GMYSQL2DB" \
+ -e "INSERT INTO domains (name, type, master) VALUES('$zone','SLAVE','127.0.0.1:$port')"
+ done
+
+ port=$((port+100))
+
+ $RUNWRAPPER ../pdns/pdns_server --daemon=no --local-port=$port --socket-dir=./ \
+ --no-shuffle --launch=gmysql --gmysql-dnssec \
+ --fancy-records --send-root-referral \
+ --cache-ttl=0 --query-cache-ttl=0 --no-config --slave --retrieval-threads=1 \
+ --gmysql-dbname="$GMYSQL2DB" \
+ --gmysql-user="$GMYSQL2USER" \
+ --gmysql-host="$GMYSQL2HOST" \
+ --gmysql-password="$GMYSQL2PASSWD" \
+ --config-name=gmysql2 |& egrep -v "update records set ordername|insert into records" &
+ echo 'waiting for zones to be slaved'
+ while sleep 10
+ do
+ todo=$(mysql --user="$GMYSQL2USER" --password="$GMYSQL2PASSWD" --host="$GMYSQl2HOST" \
+ "$GMYSQL2DB" -ss -e 'SELECT COUNT(id) FROM domains WHERE last_check IS NULL')
+ if [ $todo = 0 ]
+ then
+ break
+ fi
+ done
+fi
+
## TODO: give pdns a few seconds to startup or fail, then check if it did not fail
## TODO: give sdig a timeout
nameserver=127.0.0.1 ./runtests
echo tests done! push enter to terminate instance
read l
fi
-kill $(cat pdns.pid)
+kill $(cat pdns*.pid)
+rm pdns*.pid
\ No newline at end of file
_double._tcp.dc IN SRV 0 100 389 server1
_double._tcp.dc IN SRV 1 100 389 server1
blah IN NS blah
-blah IN A 9.9.9.9
+blah IN A 192.168.6.1
;images IN URL "http://www.ds9a.nl"
;bert@auto.test.com. IN MBOXFW "bert@ds9a.nl"
very-long-txt IN TXT "A very long TXT record! boy you won't believe how long. A very long TXT record! boy you won't believe how long. A very long TXT record! boy you won't believe how long. A very long TXT record! boy you won't believe how long. A very long TXT record! boy you won't believe how long!"
-within-server IN CNAME outpost.example.com.
\ No newline at end of file
+within-server IN CNAME outpost.example.com.
#!/bin/sh
-cleandig nx1.nx2.example.com A dnssec | egrep 'IN[[:space:]]+NSEC'
+cleandig nx1.nx2.example.com A dnssec
-1 example.com. IN NSEC 120 escapedtext.example.com. NS SOA MX RRSIG NSEC DNSKEY
-1 ns2.example.com. IN NSEC 120 outpost.example.com. A RRSIG NSEC
+1 example.com. IN NSEC 86400 escapedtext.example.com. NS SOA MX RRSIG NSEC DNSKEY
+1 example.com. IN RRSIG 86400 NSEC 8 2 86400 [expiry] [inception] [keytag] example.com. ...
+1 example.com. IN RRSIG 86400 SOA 8 2 100000 [expiry] [inception] [keytag] example.com. ...
+1 example.com. IN SOA 86400 ns1.example.com. ahu.example.com. 2000081501 28800 7200 604800 86400
+1 ns2.example.com. IN NSEC 86400 outpost.example.com. A RRSIG NSEC
+1 ns2.example.com. IN RRSIG 86400 NSEC 8 3 86400 [expiry] [inception] [keytag] example.com. ...
+2 . IN OPT 32768
+Rcode: 3, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='nx1.nx2.example.com.', qtype=A
1 9fag9508oqu3m22qac0u5eqgg45v8cf0.example.com. IN NSEC3 86400 1 1 1 abcd 9FAG9508OQU3M22QAC0U5EQGG45V8CF2 RRSIG
+1 9fag9508oqu3m22qac0u5eqgg45v8cf0.example.com. IN RRSIG 86400 NSEC3 8 3 86400 [expiry] [inception] [keytag] example.com. ...
1 ectnliqstqsjnnrpuhjj5h0j3c3odkk3.example.com. IN NSEC3 86400 1 1 1 abcd ECTNLIQSTQSJNNRPUHJJ5H0J3C3ODKK5 RRSIG
-1 vtnq6ocn2vkuiv3nju14oqtaen2mt5sk.example.com. IN NSEC3 120 1 1 1 abcd VTNQ6OCN2VKUIV3NJU14OQTAEN2MT5SL NS SOA MX RRSIG DNSKEY NSEC3PARAM
+1 ectnliqstqsjnnrpuhjj5h0j3c3odkk3.example.com. IN RRSIG 86400 NSEC3 8 3 86400 [expiry] [inception] [keytag] example.com. ...
+1 example.com. IN RRSIG 86400 SOA 8 2 100000 [expiry] [inception] [keytag] example.com. ...
+1 example.com. IN SOA 86400 ns1.example.com. ahu.example.com. 2000081501 28800 7200 604800 86400
+1 vtnq6ocn2vkuiv3nju14oqtaen2mt5sk.example.com. IN NSEC3 86400 1 1 1 abcd VTNQ6OCN2VKUIV3NJU14OQTAEN2MT5SL NS SOA MX RRSIG DNSKEY NSEC3PARAM
+1 vtnq6ocn2vkuiv3nju14oqtaen2mt5sk.example.com. IN RRSIG 86400 NSEC3 8 3 86400 [expiry] [inception] [keytag] example.com. ...
+2 . IN OPT 32768
+Rcode: 3, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='nx1.nx2.example.com.', qtype=A
-1 9f8hti7cc7oqnqjv84klnp89glqrss3r.example.com. IN NSEC3 120 1 1 1 abcd 9FDAOFPLLN0FQFU9DP274GOU59QFHSLD A RRSIG
-1 ecskkg9s6f7lap5qjrnns1bf8pjunshj.example.com. IN NSEC3 120 1 1 1 abcd ECTPI4N8UNDE9GNVKHG28NJR512JBD4O A RRSIG
-1 vtnq6ocn2vkuiv3nju14oqtaen2mt5sk.example.com. IN NSEC3 120 1 1 1 abcd VTP9NUQBEH436S7J0K8TI2A32MMKCUUL NS SOA MX RRSIG DNSKEY NSEC3PARAM
+1 9f8hti7cc7oqnqjv84klnp89glqrss3r.example.com. IN NSEC3 86400 1 1 1 abcd 9FDAOFPLLN0FQFU9DP274GOU59QFHSLD A RRSIG
+1 9f8hti7cc7oqnqjv84klnp89glqrss3r.example.com. IN RRSIG 86400 NSEC3 8 3 86400 [expiry] [inception] [keytag] example.com. ...
+1 ecskkg9s6f7lap5qjrnns1bf8pjunshj.example.com. IN NSEC3 86400 1 1 1 abcd ECTPI4N8UNDE9GNVKHG28NJR512JBD4O A RRSIG
+1 ecskkg9s6f7lap5qjrnns1bf8pjunshj.example.com. IN RRSIG 86400 NSEC3 8 3 86400 [expiry] [inception] [keytag] example.com. ...
+1 example.com. IN RRSIG 86400 SOA 8 2 100000 [expiry] [inception] [keytag] example.com. ...
+1 example.com. IN SOA 86400 ns1.example.com. ahu.example.com. 2000081501 28800 7200 604800 86400
+1 vtnq6ocn2vkuiv3nju14oqtaen2mt5sk.example.com. IN NSEC3 86400 1 1 1 abcd VTP9NUQBEH436S7J0K8TI2A32MMKCUUL NS SOA MX RRSIG DNSKEY NSEC3PARAM
+1 vtnq6ocn2vkuiv3nju14oqtaen2mt5sk.example.com. IN RRSIG 86400 NSEC3 8 3 86400 [expiry] [inception] [keytag] example.com. ...
+2 . IN OPT 32768
+Rcode: 3, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='nx1.nx2.example.com.', qtype=A