当前位置: > > > > 如何为网络包设置 DNS 缓存?
如何为网络包设置 DNS 缓存?
来源:stackoverflow
2024-04-29 09:39:39
0浏览
收藏
一分耕耘,一分收获!既然都打开这篇《如何为网络包设置 DNS 缓存?》,就坚持看下去,学下去吧!本文主要会给大家讲到等等知识点,如果大家对本文有好的建议或者看到有不足之处,非常欢迎大家积极提出!在后续文章我会继续更新Golang相关的内容,希望对大家都有所帮助!
问题内容
在“net/http”包中,我可以通过以下方式缓存 dns 查找:
client := &http.client{
transport: &http.transport{
dial: (&nett.dialer{
resolver: &nett.cacheresolver{ttl: 5 * time.minute},
ipfilter: nett.dualstack,
}).dial,
},
}
然后使用客户端检索网站。如何缓存 net 包的 dns 查找?例如,反向 dns 请求:
net.LookupAddr(ip)
由于这不使用变量,我很困惑如何设置它以及如何知道我是否正在使用缓存实例。
解决方案
nett 包似乎只有一个“resolve”方法,而不是官方 net 包所具有的 lookupaddr、lookupip 等方法。所以反向查找似乎不可用。以下是如何根据名称进行正常的地址查找
package main
import (
"github.com/abursavich/nett"
"time"
)
func main() {
r := nett.CacheResolver{TTL: 5 * time.Minute}
a, _ := r.Resolve("muppet.com")
for _, i := range a {
print(i.String())
}
}
net.lookupaddr 的行为似乎是使用主机解析器。我对 prod 中的服务执行此操作的方法是在主机上运行 dnsmasq,以便每个主机缓存 dns 查找。文档确实提到您可以通过实现自定义解析器来自定义行为,就像您所做的那样:
但我认为您正在寻找的部分是(从该文档页面的顶部):
以上就是本文的全部内容了,是否有顺利帮助你解决问题?若是能给你带来学习上的帮助,请大家多多支持米云!更多关于Golang的相关知识,也可关注米云公众号。
