nameserver address option added

This commit is contained in:
MDK
2023-10-31 14:24:56 +08:00
parent b1c97a13d3
commit aff8744f12
2 changed files with 19 additions and 5 deletions

BIN
echodns

Binary file not shown.

View File

@@ -15,6 +15,7 @@ import (
) )
var CONFIG_SLD string var CONFIG_SLD string
var CONFIG_NS string
var UniqueCounter uint32 = 0xfffffffa var UniqueCounter uint32 = 0xfffffffa
func strategyMaker(name string, qtype uint16) int8 { func strategyMaker(name string, qtype uint16) int8 {
@@ -47,6 +48,8 @@ func strategyMaker(name string, qtype uint16) int8 {
return 9 // unlimited ns chain return 9 // unlimited ns chain
} else if strings.Contains(subdomain, "ns-chain") { } else if strings.Contains(subdomain, "ns-chain") {
return 10 // unlimited cname chain return 10 // unlimited cname chain
} else if strings.Contains(subdomain, "attack") {
return 11
} }
} }
return -1 return -1
@@ -161,12 +164,14 @@ func handleReflect(w dns.ResponseWriter, r *dns.Msg) {
case 9: case 9:
cname_target := "" cname_target := ""
labels := strings.Split(subdomain, "-") labels := strings.Split(subdomain, "-")
if len(labels) == 2 { if labels[len(labels)-1] == "chain" {
cname_target = subdomain + "-0" cname_target = subdomain + "-0"
} else { } else {
iter_cnt, _ := strconv.Atoi(labels[len(labels)-1]) iter_cnt, _ := strconv.Atoi(labels[len(labels)-1])
iter_cnt += 1 iter_cnt += 1
cname_target = strings.Join([]string{labels[0], labels[1], strconv.Itoa(iter_cnt)}, "-") labels = append(labels[:len(labels)-1], strconv.Itoa(iter_cnt))
cname_target = strings.Join(labels, "-")
//cname_target = strings.Join([]string{labels[0], labels[1], strconv.Itoa(iter_cnt)}, "-")
} }
cname_target = dns.Fqdn(cname_target + "." + CONFIG_SLD) cname_target = dns.Fqdn(cname_target + "." + CONFIG_SLD)
cname_redir := &dns.CNAME{ cname_redir := &dns.CNAME{
@@ -177,12 +182,14 @@ func handleReflect(w dns.ResponseWriter, r *dns.Msg) {
case 10: case 10:
ns_target := "" ns_target := ""
labels := strings.Split(subdomain, "-") labels := strings.Split(subdomain, "-")
if len(labels) == 2 { if labels[len(labels)-1] == "chain" {
ns_target = subdomain + "-0" ns_target = subdomain + "-0"
} else { } else {
iter_cnt, _ := strconv.Atoi(labels[len(labels)-1]) iter_cnt, _ := strconv.Atoi(labels[len(labels)-1])
iter_cnt += 1 iter_cnt += 1
ns_target = strings.Join([]string{labels[0], labels[1], strconv.Itoa(iter_cnt)}, "-") labels = append(labels[:len(labels)-1], strconv.Itoa(iter_cnt))
ns_target = strings.Join(labels, "-")
//ns_target = strings.Join([]string{labels[0], labels[1], strconv.Itoa(iter_cnt)}, "-")
} }
ns_target = dns.Fqdn(ns_target + "." + CONFIG_SLD) ns_target = dns.Fqdn(ns_target + "." + CONFIG_SLD)
ns_delegation := &dns.NS{ ns_delegation := &dns.NS{
@@ -190,10 +197,16 @@ func handleReflect(w dns.ResponseWriter, r *dns.Msg) {
Ns: ns_target, Ns: ns_target,
} }
m.Ns = append(m.Ns, ns_delegation) m.Ns = append(m.Ns, ns_delegation)
case 11:
ns_record := &dns.NS{
Hdr: dns.RR_Header{Name: name, Rrtype: dns.TypeNS, Class: dns.ClassINET, Ttl: 60},
Ns: "shiyan7.jthmfgz.icu.",
}
m.Ns = append(m.Ns, ns_record)
case 0: case 0:
a := &dns.A{ a := &dns.A{
Hdr: dns.RR_Header{Name: name, Rrtype: dns.TypeA, Class: dns.ClassINET, Ttl: 3600}, Hdr: dns.RR_Header{Name: name, Rrtype: dns.TypeA, Class: dns.ClassINET, Ttl: 3600},
A: net.ParseIP("159.75.200.247"), A: net.ParseIP(CONFIG_NS),
} }
m.Answer = append(m.Answer, a) m.Answer = append(m.Answer, a)
case -1: case -1:
@@ -203,6 +216,7 @@ func handleReflect(w dns.ResponseWriter, r *dns.Msg) {
} }
func main() { func main() {
flag.StringVar(&CONFIG_NS, "ns", "159.75.200.247", "configure nameserver ip for echo dns zone")
flag.StringVar(&CONFIG_SLD, "sld", "", "configure sld for echo dns server") flag.StringVar(&CONFIG_SLD, "sld", "", "configure sld for echo dns server")
flag.Parse() flag.Parse()
if CONFIG_SLD == "" { if CONFIG_SLD == "" {