Forward DNS requests that aren't for our 'weave' domain
This commit is contained in:
1 parent
de65dc7996
commit
b5214f65e7
2 files changed
+24
No files matched your search
@@ -27,6 +27,7 @@ func NewMDNSServer(zone *ZoneDb) (*MDNSServer, error) {
|
||||
func makeDNSReply(r *dns.Msg, name string, addr net.IP) *dns.Msg {
|
||||
m := new(dns.Msg)
|
||||
m.SetReply(r)
|
||||
m.RecursionAvailable = true
|
||||
hdr := dns.RR_Header{Name: name, Rrtype: dns.TypeA,
|
||||
Class: dns.ClassINET, Ttl: 3600}
|
||||
a := &dns.A{hdr, addr}
|
||||
|
||||
@@ -39,6 +39,14 @@ func findInterface(ifaceName string) (iface *net.Interface, err error) {
|
||||
return
|
||||
}
|
||||
|
||||
func makeDNSFailResponse(r *dns.Msg) *dns.Msg {
|
||||
m := new(dns.Msg)
|
||||
m.SetReply(r)
|
||||
m.RecursionAvailable = true
|
||||
m.Rcode = dns.RcodeNameError
|
||||
return m
|
||||
}
|
||||
|
||||
func queryHandler(zone Zone, mdnsClient *MDNSClient) dns.HandlerFunc {
|
||||
return func(w dns.ResponseWriter, r *dns.Msg) {
|
||||
q := r.Question[0]
|
||||
@@ -64,6 +72,20 @@ func queryHandler(zone Zone, mdnsClient *MDNSClient) dns.HandlerFunc {
|
||||
}
|
||||
}
|
||||
|
||||
func notUsHandler() dns.HandlerFunc {
|
||||
return func(w dns.ResponseWriter, r *dns.Msg) {
|
||||
q := r.Question[0]
|
||||
addrs, err := net.LookupIP(q.Name)
|
||||
if err == nil {
|
||||
m := makeDNSReply(r, q.Name, addrs[0])
|
||||
w.WriteMsg(m)
|
||||
} else {
|
||||
m := makeDNSFailResponse(r)
|
||||
w.WriteMsg(m)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func StartServer(ifaceName string, dnsPort int, httpPort int, wait int) error {
|
||||
|
||||
var zone = new(ZoneDb)
|
||||
@@ -91,6 +113,7 @@ func StartServer(ifaceName string, dnsPort int, httpPort int, wait int) error {
|
||||
|
||||
LocalServeMux := dns.NewServeMux()
|
||||
LocalServeMux.HandleFunc(LOCAL_DOMAIN, queryHandler(zone, mdnsClient))
|
||||
LocalServeMux.HandleFunc(".", notUsHandler())
|
||||
|
||||
mdnsServer, err := NewMDNSServer(zone)
|
||||
if err != nil {
|
||||
|
||||
Reference in new issue
Block a user