Files
nutdns/main.go

51 lines
919 B
Go

package main
import (
"log"
"strings"
"github.com/miekg/dns"
)
const upstream = "1.1.1.1:53"
var blocklist = map[string]bool{
"x.com.": true,
}
func handleDNS(w dns.ResponseWriter, r *dns.Msg) {
m := new(dns.Msg)
m.SetReply(r)
c := new(dns.Client)
for _, q := range r.Question {
log.Printf("question: %s", q.Name)
if blocklist[strings.ToLower(q.Name)] {
res, err := dns.NewRR(q.Name + " 60 IN A 0.0.0.0")
if err != nil {
log.Fatal(err)
}
m.Answer = append(m.Answer, res)
} else {
req := new(dns.Msg)
req.Question = append(req.Question, q)
res, _, err := c.Exchange(req, upstream)
if err != nil {
log.Fatal(err)
}
m.Answer = append(m.Answer, res.Answer...)
}
}
w.WriteMsg(m)
}
func main() {
dns.HandleFunc(".", handleDNS)
server := &dns.Server{Addr: ":8053", Net: "udp"}
log.Println("Starting DNS Server on :53")
log.Fatal(server.ListenAndServe())
}