Does Go use DNS queries?

I am creating a test scanner and would like to know if Go (golang) caches DNS queries. I don't see anything about caching in dnsclient . This seems like an important thing to add to any crawler to prevent many additional DNS queries.

Is (1.4+) DNS query caching in progress?

If not, then debian / ubuntu / linux, windows or darwin / OSX performs network-level caching. Take advantage of?

+5
source share
2 answers

The answer to your question is no. There is no built-in dns caching in std lib resolver. Would it be helpful? Maybe in some cases. Our organization runs a local DNS cache on each server and points to resolv.conf. Thus, this does not necessarily help us in caching in this language.

There are several solutions that could help you. This package seems to have a pretty good solution. From the snippet in their readme, you could even do:

http.DefaultClient.Transport = &http.Transport { MaxIdleConnsPerHost: 64, Dial: func(network string, address string) (net.Conn, error) { separator := strings.LastIndex(address, ":") ip, _ := dnscache.FetchString(address[:separator]) return net.Dial("tcp", ip + address[separator:]) }, } 

To enable it for all HTTP requests from http.Get and friends.

+7
source

Go solution does not perform caching in the process. Although you could collapse your own, the best option is probably to start a system-wide DNS cache on each machine. (My favorite is dnsmasq .)

+2
source

Source: https://habr.com/ru/post/1258784/


All Articles