Documentation
¶
Index ¶
- Constants
- func NewHardError(s string) error
- type AuthenticationTrace
- type AuthenticationTraceDelegationSignerCheck
- type AuthenticationTraceLookup
- type AuthenticationTraceSignatureValidation
- type DNSClient
- type FailoverNameserver
- type HardError
- type LookupNameserver
- type NameServer
- type RecursiveNameserver
- type RecursiveQueryTrace
- type RecursiveQueryTraceLookup
- type Resolver
- func (d *Resolver) Authenticate(msg *dns.Msg, ctx context.Context) error
- func (d *Resolver) Query(name string, rrtype uint16) (*dns.Msg, time.Duration, error)
- func (d *Resolver) QueryA(name string) ([]*dns.A, error)
- func (d *Resolver) QueryAAAA(name string) ([]*dns.AAAA, error)
- func (d *Resolver) QueryANY(name string) ([]dns.RR, error)
- func (d *Resolver) QueryCNAME(name string) ([]*dns.CNAME, error)
- func (d *Resolver) QueryDNSKEY(name string) ([]*dns.DNSKEY, error)
- func (d *Resolver) QueryDS(name string) ([]*dns.DS, error)
- func (d *Resolver) QueryMX(name string) ([]*dns.MX, error)
- func (d *Resolver) QueryNS(name string) ([]*dns.NS, error)
- func (d *Resolver) QueryPTR(name string) ([]*dns.PTR, error)
- func (d *Resolver) QuerySOA(name string) ([]*dns.SOA, error)
- func (d *Resolver) QuerySRV(name string) ([]*dns.SRV, error)
- func (d *Resolver) QueryTXT(name string) ([]*dns.TXT, error)
- type SignatureSet
- type SignatureSets
Constants ¶
const ( DNSKEY_ZSK uint16 = 256 // Zone Signing Key DNSKEY_KSK uint16 = 257 // Key Signing Key )
DNSSEC key flags
Variables ¶
This section is empty.
Functions ¶
func NewHardError ¶
Types ¶
type AuthenticationTrace ¶
type AuthenticationTrace struct {
Records []authenticationTraceRecord
}
func (*AuthenticationTrace) Add ¶
func (t *AuthenticationTrace) Add(r authenticationTraceRecord)
type DNSClient ¶
type DNSClient interface {
Exchange(m *dns.Msg, address string) (r *dns.Msg, rtt time.Duration, err error)
}
DNSClient interface abstracts the dns.Client to allow mocking in tests.
type FailoverNameserver ¶ added in v0.3.0
type FailoverNameserver struct {
// contains filtered or unexported fields
}
func (*FailoverNameserver) Query ¶ added in v0.3.0
Query
- First we try the query with UDP. -- If no error *and* not truncated, return. -- Else we...
- Try the query with TCP. -- If not error, return. -- Else we return the original UDP response (which *might* not have bene an error, just truncated).
func (*FailoverNameserver) String ¶ added in v0.3.0
func (r *FailoverNameserver) String() string
type HardError ¶
type HardError struct {
// contains filtered or unexported fields
}
HardError implies that we should stop all attempts to continue. 'Normal' errors may result in more nameservers being tried.
type LookupNameserver ¶
type LookupNameserver struct {
// contains filtered or unexported fields
}
LookupNameserver represents the details of a DNS name server, including protocol, address, port, and client.
func (LookupNameserver) String ¶
func (n LookupNameserver) String() string
String returns a human-readable string representation of the LookupNameserver details.
type NameServer ¶
type NameServer interface { // Query perform the DNS query/lookup. Query(name string, rrtype uint16) (*dns.Msg, time.Duration, error) // String returns a human-readable string representation of the NameServer's details. String() string }
NameServer interface defines the methods for a DNS name server.
func NewFailoverNameserver ¶ added in v0.3.0
func NewFailoverNameserver(address, port string) NameServer
NewFailoverNameserver first tries a Nameserver over UDP. In the event of an error, or if the message is truncated, it retries the request via TCP.
func NewTcpNameserver ¶
func NewTcpNameserver(address, port string) NameServer
NewTcpNameserver creates a LookupNameserver instance using TCP protocol.
func NewTlsNameserver ¶
func NewTlsNameserver(address, port, domain string) NameServer
NewTlsNameserver creates a LookupNameserver instance using TCP over TLS protocol. The domain parameter is required for TLS certificate verification.
func NewUdpNameserver ¶
func NewUdpNameserver(address, port string) NameServer
NewUdpNameserver creates a LookupNameserver instance using UDP protocol.
type RecursiveNameserver ¶
type RecursiveNameserver struct { Trace *RecursiveQueryTrace EnableTrace bool // contains filtered or unexported fields }
func NewRecursiveNameserver ¶
func NewRecursiveNameserver() *RecursiveNameserver
func (*RecursiveNameserver) String ¶
func (n *RecursiveNameserver) String() string
type RecursiveQueryTrace ¶
type RecursiveQueryTrace struct {
Records []recursiveQueryTraceRecord
}
func (*RecursiveQueryTrace) Add ¶
func (t *RecursiveQueryTrace) Add(r recursiveQueryTraceRecord)
type Resolver ¶
type Resolver struct { RootDNSSECRecords []*dns.DS LocallyAuthenticateData bool RemotelyAuthenticateData bool RandomNameserver bool Trace *dnssec.Trace EnableTrace bool // contains filtered or unexported fields }
func NewResolver ¶
func NewResolver(nameservers []NameServer) *Resolver
func (*Resolver) Authenticate ¶
Authenticate verifies the DNSSEC signatures in the DNS response message
func (*Resolver) QueryCNAME ¶
QueryCNAME performs a DNS query for CNAME records
func (*Resolver) QueryDNSKEY ¶
QueryDNSKEY performs a DNS query for DNSKEY records
type SignatureSet ¶
type SignatureSet struct {
// contains filtered or unexported fields
}
SignatureSet represents a set of DNS Records along with their corresponding RRSIG and DNSKEY
type SignatureSets ¶
type SignatureSets []*SignatureSet
SignatureSets represents a collection of SignatureSet pointers