TL; DR
Các truy vấn DNS của tôi bị chậm vì các truy vấn được phân giải bằng hệ thống thành công trên máy chủ DNS trên IPv4 nhưng truy vấn liên tục trên IPv6 sau khi máy chủ DNS phản hồi bằng REFUSED. Đây có phải là cấu hình đã giải quyết được phát hành không? Một vấn đề dnsmasq? hoặc một lỗi?
Tôi có một bản cài đặt Ubuntu 20.04 có sẵn được kết nối với dnsmasq đang chạy trên một thiết bị bị ngắt kết nối không khí (bộ định tuyến cạnh phổ biến) với tên miền cấp cao nhất 'thanh' (bộ nhớ ngắt kết nối không khí nhưng có vẻ như đây không phải là vấn đề - tức là .com, v.v.) . Yêu cầu DNS giải quyết nhanh chóng thông qua máy khách Mac và Windows. Đối với Ubuntu, các truy vấn DNS mất khoảng 5 giây để giải quyết. Tìm kiếm xung quanh, các vấn đề về DNS của Ubuntu được thảo luận ở nhiều nơi nhưng hành vi cơ bản mà tôi đang thấy không được tôi biết.
Vấn đề cấp cao nhất: nếu tôi ping một máy bằng Ubuntu, sẽ mất khoảng 5 giây để phản hồi trở lại:
$ ping foo
# khoảng 5 giây trôi qua
PING foo.bar (10.2.1.132) 56(84) byte dữ liệu.
64 byte từ foo.bar (10.2.1.132): icmp_seq=1 ttl=63 time=1,10 ms
64 byte từ foo.bar (10.2.1.132): icmp_seq=2 ttl=63 time=1,02 ms
...
Mà có vẻ như là một vấn đề thời gian chờ rõ ràng. Điều thú vị là nó không giải quyết mặc dù. Đang chạy trạng thái giải quyết
cung cấp cho tôi kết quả tiêu chuẩn bao gồm DNS đang được cung cấp bởi hợp đồng thuê DHCP do dnsmasq cấp.
$ trạng thái giải quyết
...
rất nhiều thứ
...
Liên Kết 3 (enp0s25)
Phạm vi hiện tại: DNS
Cài đặt DefaultRoute: có
Cài đặt LLMNR: có
Cài đặt MulticastDNS: không
Cài đặt DNSOverTLS: không
Cài đặt DNSSEC: không
DNSSEC được hỗ trợ: không
Máy chủ DNS: 10.1.1.1
Tên miền DNS: ~.
quán ba
Dừng giải quyết và chạy trong chế độ gỡ lỗi dường như cho thấy sự cố. Máy ubuntu truy vấn máy chủ DNS qua IPv4 và nó nhận được câu trả lời ngay lập tức. Sau đó, nó liên tục truy vấn qua IPv6 mà máy chủ DNS phản hồi bằng REFUSED cho đến khi hết thời gian chờ.
$ Sudo systemctl dừng giải quyết systemd
$ Sudo SYSTEMD_LOG_LEVEL=gỡ lỗi /lib/systemd/systemd-resolved
...
rất nhiều đăng nhập khởi động
...
Có gói truy vấn UDP sơ khai DNS cho id 40457
Tra cứu RR cho foo.bar IN A.
Chuyển sang máy chủ DNS 10.1.1.1 cho giao diện enp0s25.
Lỗi bộ nhớ cache cho foo.bar TRONG A
Giao dịch 42924 cho dns phạm vi <foo.bar IN A> trên enp0s25/*.
Sử dụng mức tính năng UDP+EDNS0 cho giao dịch 42924.
Sử dụng máy chủ DNS 10.1.1.1 cho giao dịch 42924.
Đang gửi gói truy vấn có id 42924.
Đang xử lý truy vấn...
Có gói truy vấn UDP sơ khai DNS cho id 59119
Tra cứu RR cho foo.bar TRONG AAAA.
Lỗi bộ nhớ cache cho foo.bar TRONG AAAA
Giao dịch 21734 cho dns phạm vi <foo.bar IN AAAA> trên enp0s25/*.
Sử dụng mức tính năng UDP+EDNS0 cho giao dịch 21734.
Sử dụng máy chủ DNS 10.1.1.1 cho giao dịch 21734.
Đang gửi gói truy vấn có id 21734.
Đang xử lý truy vấn...
Đang xử lý gói tin đến trong giao dịch 42924 (rcode=SUCCESS).
Đã xác minh, chúng tôi nhận được phản hồi ở cấp tính năng UDP+EDNS0 từ máy chủ DNS 10.1.1.1.
Đã thêm mục nhập bộ nhớ cache chưa được xác thực tích cực cho foo.bar IN A 7200s trên enp0s25/INET/10.1.1.1
Giao dịch 42924 cho <foo.bar IN A> trên dns phạm vi trên enp0s25/* hiện đã hoàn tất với <thành công> từ mạng (chưa ký).
Đang gửi gói phản hồi có id 40457 trên giao diện 1/AF_INET.
Giải phóng giao dịch 42924.
Đang xử lý gói đến trong giao dịch 21734 (rcode=REFUSED).
Máy chủ trả về REFUSED, chuyển đổi máy chủ và thử lại.
Thử lại giao dịch 21734.
Lỗi bộ nhớ cache cho foo.bar TRONG AAAA
Giao dịch 21734 cho dns phạm vi <foo.bar IN AAAA> trên enp0s25/*.
Sử dụng mức tính năng UDP+EDNS0 cho giao dịch 21734.
Đang gửi gói truy vấn có id 21734.
Đang xử lý gói đến trong giao dịch 21734 (rcode=REFUSED).
Máy chủ trả về REFUSED, chuyển đổi máy chủ và thử lại.
...
lặp lại trong ~5 giây
...
Giao dịch 44267 cho <foo.bar IN AAAA> trên phạm vi dns trên enp0s25/* hiện đã hoàn tất với <attempts-max-reached> từ mạng (chưa được ký).
Giải phóng giao dịch 44267.
Cũng gợi ý rằng đây là vấn đề:
$ nslookup foo
Máy chủ: 127.0.0.53
Địa chỉ: 127.0.0.53#53
Câu trả lời không có thẩm quyền:
Tên: foo.bar
Địa chỉ: 10.2.1.132
...
khoảng 5 giây trôi qua
...
;; kết nối quá hạn; không thể truy cập máy chủ
# điều này trả lại ngay lập tức
$ nslookup -query=A foo
Máy chủ: 127.0.0.53
Địa chỉ: 127.0.0.53#53
Câu trả lời không có thẩm quyền:
Tên: foo.bar
Địa chỉ: 10.2.1.132
# while this time out in about 5 sec.
$ nslookup -query=AAAA foo
;; kết nối quá hạn; không thể truy cập máy chủ
câu hỏi:
Nếu máy chủ DNS đang cung cấp câu trả lời IPv4 tốt, thì tại sao máy ubuntu lại đợi trong khi liên tục cố gắng không thành công để có được câu trả lời IPv6?
Đây có phải là sự cố cấu hình Ubuntu hay sự cố dnsmasq không?
Cảm ơn trước.