2016-10-26 36 views
5

Tôi đang xây dựng trình thu thập thông tin thử nghiệm và muốn biết liệu Go (golang) có lưu trữ các truy vấn DNS hay không. Tôi không thấy bất cứ điều gì về bộ nhớ đệm trong dnsclient. Điều này có vẻ giống như một điều quan trọng để thêm vào bất kỳ trình thu thập thông tin nào để ngăn chặn nhiều truy vấn DNS bổ sung.Truy cập DNS của bộ nhớ cache Tìm kiếm không?

Hiện Go (1.4+) bộ nhớ cache DNS tra cứu?

Nếu không, debian/ubuntu/linux, windows, hoặc darwin/OSX có lưu vào bộ nhớ đệm ở cấp độ Mạng không?

+0

Không, nhưng khá phổ biến khi sử dụng máy chủ dns cục bộ để lưu vào bộ nhớ cache. – JimB

Trả lời

7

Câu trả lời cho câu hỏi của bạn là không. Không có bộ nhớ đệm dns được tích hợp sẵn trong trình giải quyết thư rác std. Nó có hữu ích không? Có thể trong một số trường hợp. Tổ chức của chúng tôi chạy bộ nhớ cache dns cục bộ trên mỗi máy chủ và có điểm resolv.conf tại đó. Vì vậy, nó sẽ không nhất thiết giúp chúng ta có nhiều bộ nhớ đệm trong ngôn ngữ.

Có một số giải pháp có thể giúp bạn. This package dường như có một giải pháp khá tốt. Từ đoạn trích trong readme của họ, bạn thậm chí có thể làm:

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:]) 
    }, 
} 

Để kích hoạt nó cho tất cả các yêu cầu http từ http.Get và bạn bè.

+1

Ngoài ra, nhiều Linux hiện nay bao gồm bộ nhớ đệm DNS cục bộ, do đó không có nhiều lợi ích khi có thêm bộ nhớ đệm trong ứng dụng. Ubuntu là ví dụ hiển nhiên. Bạn có thể thấy điều này trong hành động bằng ví dụ: 'dig www.google.com', hiển thị một số nhận xét có thể bao gồm' ;; SERVER: 127.0.1.1', đây là bộ đệm DNS cục bộ của bạn đang hoạt động. –

2

Trình phân giải Go không thực hiện bất kỳ bộ nhớ đệm trong quá trình nào. Trong khi nó có thể cuộn của riêng bạn, đặt cược tốt nhất của bạn có lẽ là để chạy một bộ nhớ cache DNS toàn hệ thống trên mỗi máy. (Yêu thích của tôi là dnsmasq.)

Các vấn đề liên quan