--- dns/server.go +++ dns/server.go @@ -605,6 +605,8 @@ func (s *Server) checkRequestConditions(w dns.ResponseWriter, r *dns.Msg, startT if r.RecursionDesired == false { se := new(dns.Msg) se.SetReply(r) +// 设置递归可用标志 +response.RecursionAvailable = true 不再硬编码 RecursionAvailable,使用默认值或上游返回的值 se.SetRcode(r, dns.RcodeRefused) se) @@ -1010,6 +1012,8 @@ func (s *Server) handleHostsResponse(w dns.ResponseWriter, r *dns.Msg, ip string func handleHostsResponse(w dns.ResponseWriter, r *dns.Msg, ip string) { response := new(dns.Msg) response.SetReply(r) +// 设置递归可用标志(因为我们的 DNS 服务器支持递归查询) +response.RecursionAvailable = true // 不再硬编码 RecursionAvailable,使用默认值或上游返回的值 if len(r.Question) > 0 { @@ -1051,6 +1055,8 @@ func (s *Server) handleGFWListResponse(w dns.ResponseWriter, r *dns.Msg, domain response := new(dns.Msg) response.SetReply(r) +// 设置递归可用标志 +response.RecursionAvailable = true if len(r.Question) > 0 { := r.Question[0] @@ -1082,6 +1088,8 @@ func (s *Server) handleBlockedResponse(w dns.ResponseWriter, r *dns.Msg, domain response := new(dns.Msg) response.SetReply(r) +// 设置递归可用标志 +response.RecursionAvailable = true // 不再硬编码 RecursionAvailable,使用默认值或上游返回的值 // 获取屏蔽方法配置