Thích tra cứu DNS A (IPv4) trước khi tra cứu AAAA (IPv6)


44

Trong thông báo, Ubuntu 10.10 mới cài đặt của tôi luôn thực hiện tra cứu DNS AAAA trước khi tra cứu bản ghi. Có cách nào để tôi có thể định cấu hình hệ thống để thực hiện tra cứu trước không?

(Mặc dù các trình duyệt khác nhau và các ứng dụng khác có thể chứa các trình phân giải riêng của chúng, tôi đang nói về các trình duyệt trong glibc)


Để làm rõ, bạn có muốn có cả IPv4 và IPv6 không?
belacqua

Tốt nhất là có. Nhưng vì tôi chỉ có liên kết IPv6 cục bộ, nên thật lãng phí khi yêu cầu bản ghi AAAA của google.com mỗi lần, sau đó yêu cầu bản ghi A sau đó.
số

Câu trả lời:


53

Đó là tiêu chuẩn để ưu tiên IPv6 qua IPv4 để cho phép IP thế hệ tiếp theo tiếp quản :)

Bạn có thể thay đổi điều này bằng cách chỉnh sửa các khối ưu tiên trong /etc/gai.conf(gai là viết tắt của getaddrinfolệnh gọi hệ thống tiêu chuẩn để giải quyết tên máy chủ). Chỉ cần nhận xét dòng như mô tả trong tệp:

# Đối với các trang web thích kết nối IPv4, hãy thay đổi dòng cuối cùng thành

#precedence :: ffff: 0: 0/96 100

Một lời giải thích chi tiết về gai.confcó thể được tìm thấy trong trang người đàn ông.


cảm ơn, bạn đã cứu ngày của tôi một trong những máy chủ của tôi liên tục nhận được kết quả ipv6 từ máy chủ dns nhưng máy chủ của tôi không thể hoạt động bình thường w / ipv6
Boon

Xin chào, cài đặt này có yêu cầu sysctl hoặc bất kỳ dịch vụ nào tải lại hoặc khởi động lại để có hiệu lực không? Tôi thấy câu trả lời của bạn hữu ích, nhưng bạn có thể chỉnh sửa nó để khắc phục những nghi ngờ đó.
Marco

Trang hướng dẫn cho gai.confbiết bạn phải bỏ bình luận tất cả các dòng, không chỉ là IPv4, để có được hành vi sửa đổi chính xác. Từ gai.conf(5): "Một lần nữa, sự hiện diện của một dòng ưu tiên trong tệp cấu hình khiến bảng mặc định không được sử dụng." Nếu bạn muốn các dòng bảng mặc định khác tiếp tục hoạt động, bạn cũng phải bỏ nhận xét chúng.
Ian D. Allen

10

Vấn đề của tôi là như vậy, tôi đã có các truy vấn IPV6 được thực hiện trước IPV4 và chúng làm lãng phí tài nguyên, vì vậy tôi đã thay đổi tệp /etc/gai.conf của mình dưới dạng freddyb đã đăng, nhưng kịch bản của tôi hơi khác một chút, máy chủ của tôi bị Natted, vì vậy IPv4 sẽ không được ưu tiên hơn IPv6 chỉ với dòng đó. Giải pháp cũng là nhận xét các dòng khác tại gai.conf vì vậy nó sẽ trông như thế này

#For sites which prefer IPv4 connections change the last line to
precedence ::ffff:0:0/96 100
...
#    For sites which use site-local IPv4 addresses behind NAT there is
#    the problem that even if IPv4 addresses are preferred they do not
#    have the same scope and are therefore not sorted first.  To change
#    this use only these rules:
#
scopev4 ::ffff:169.254.0.0/112  2
scopev4 ::ffff:127.0.0.0/104    2
scopev4 ::ffff:0.0.0.0/96       14

Vì vậy, máy chủ của bạn sẽ thử ipv4 đầu tiên ngay cả khi bạn được Natted!


2
Các /etc/gai.conftập tin trong Ubuntu 15.04 "sống động" nói những ba scopev4dòng bạn đề nghị trên đã được mặc định. Tôi chỉ thực hiện precedence ::ffff:0:0/96 100thay đổi một dòng và nó hoạt động ngay cả sau NAT.
Ian D. Allen

1

Nếu bạn không muốn bật IPv6, bạn có thể tắt IPv6 để thực hiện việc này. http://www.webupd8.org/2010/05/how-to-disable-ipv6-in-ubfox-1004.html

nếu không, bạn có thể thử thêm

options single-request

Để tập tin /etc/resolv.conf của bạn. (xem http://udrepper.livejournal.com/20948.html để biết chi tiết về tin đồn)


1
Trang hướng dẫn cho độ phân giải chỉ ra rằng tùy chọn mà bạn đề xuất thực hiện chính xác đối diện "Tùy chọn này [...] làm cho glibc thực hiện các yêu cầu IPv6 và IPv4 một cách tuần tự (với chi phí làm chậm quá trình giải quyết)." - man7.org/linux/man-pages/man5/resolver.5.html
ndemou

tuần tự = đầu tiên, sau đó khác - trái ngược với song song. nó hoạt động tốt ở đây
cweiske
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.