ต้องการการค้นหา DNS A (IPv4) ก่อนการค้นหา AAAA (IPv6)


44

ในการแจ้งให้ทราบล่วงหน้า Ubuntu 10.10 ที่เพิ่งติดตั้งใหม่จะทำการค้นหา AAAA DNS ก่อนการค้นหาบันทึก A เสมอ มีวิธีใดบ้างที่ฉันสามารถกำหนดค่าระบบให้ทำการค้นหา A ก่อน?

(ในขณะที่เบราว์เซอร์ต่าง ๆ และแอปพลิเคชั่นอื่น ๆ อาจมีตัวแก้ไขของตัวเอง แต่ฉันกำลังพูดถึงเบราว์เซอร์)


เพื่อชี้แจงคุณต้องการมีทั้ง IPv4 และ IPv6 อยู่หรือไม่
belacqua

โดยเฉพาะอย่างยิ่งใช่ แต่เนื่องจากฉันมีเฉพาะการเชื่อมโยง IPv6 ในท้องถิ่นจึงเป็นเรื่องเสียเปล่าที่ขอเช่นบันทึก AAAA ของ google.com ทุกครั้งแล้วจึงขอบันทึก A หลังจากนั้น
nos

คำตอบ:


53

เป็นมาตรฐานในการจัดลำดับความสำคัญ IPv6 ผ่าน IPv4 เพื่ออนุญาตให้ IP ยุคถัดไปครอบครอง :)

คุณสามารถเปลี่ยนแปลงสิ่งนี้ได้โดยการแก้ไขบล็อกลำดับความสำคัญใน/etc/gai.conf(gai ย่อมาจากgetaddrinfoการเรียกระบบมาตรฐานสำหรับการแก้ไขชื่อโฮสต์) เพียงใส่เครื่องหมายความคิดเห็นตามที่อธิบายในไฟล์:

# สำหรับเว็บไซต์ที่ต้องการการเชื่อมต่อ IPv4 ให้เปลี่ยนบรรทัดสุดท้ายเป็น

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

คำอธิบายโดยละเอียดเกี่ยวกับgai.confสามารถพบได้ในหน้าคน


ขอบคุณคุณบันทึกวันของฉัน! หนึ่งในเซิร์ฟเวอร์ของฉันได้รับผลลัพธ์ ipv6 จากเซิร์ฟเวอร์ dns แต่เซิร์ฟเวอร์ของฉันทำงานไม่ถูกต้องด้วย ipv6
Boon

สวัสดีการตั้งค่านี้ต้องใช้ sysctl หรือบริการโหลดใหม่หรือรีบูตเพื่อให้มีผลหรือไม่ ฉันพบว่าคำตอบของคุณมีประโยชน์ แต่คุณอาจแก้ไขได้เพื่อแก้ไขข้อสงสัยดังกล่าว
Marco

หน้าคนของgai.confบอกว่าคุณต้องยกเลิกการแสดงความคิดเห็นทุกบรรทัดไม่ใช่แค่ IPv4 เพื่อให้ได้พฤติกรรมที่ถูกต้อง จากgai.conf(5): "อีกครั้งการมีบรรทัดนำหน้าเดียวในไฟล์กำหนดค่าจะทำให้ตารางเริ่มต้นไม่สามารถใช้งานได้" หากคุณต้องการให้บรรทัดตารางเริ่มต้นอื่นทำงานต่อไปคุณต้องยกเลิกการแสดงความคิดเห็นเช่นกัน
เอียนดี. อัลเลน

10

ปัญหาของฉันเหมือนกันฉันมีการสอบถาม IPV6 ก่อน IPV4 และพวกเขาสูญเสียทรัพยากรดังนั้นฉันจึงเปลี่ยนไฟล์ /etc/gai.conf ของฉันเป็น freddyb ที่โพสต์ แต่สถานการณ์ของฉันแตกต่างกันเล็กน้อยเซิร์ฟเวอร์ของฉันถูกตั้งชื่อไว้ดังนั้น IPv4 จะไม่มีความสำคัญเหนือกว่า IPv6 ที่มีเพียงบรรทัดนั้น วิธีการแก้ปัญหาก็คือการแสดงความคิดเห็นสายอื่น ๆ ที่ gai.conf ดังนั้นมันจะมีลักษณะเช่นนี้

#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

ดังนั้นเซิร์ฟเวอร์ของคุณจะลองใช้ ipv4 ก่อนแม้ว่าคุณจะถูกตั้งชื่อ!


2
/etc/gai.confแฟ้มใน Ubuntu 15.04 "สดใส" กล่าวว่าทั้งสามscopev4สายที่คุณแนะนำข้างต้นมีอยู่แล้วเริ่มต้น ฉันทำการเปลี่ยนแปลงเพียงบรรทัดเดียวprecedence ::ffff:0:0/96 100และใช้งานได้แม้หลัง NAT
Ian D. Allen

1

หากคุณไม่ต้องการเปิดใช้งาน IPv6 เลยคุณสามารถปิดการใช้งาน IPv6 เพื่อทำสิ่งนี้ให้สำเร็จ http://www.webupd8.org/2010/05/how-to-disable-ipv6-in-ubuntu-1004.html

ถ้าไม่คุณสามารถลองเพิ่มได้

options single-request

ไปยังไฟล์ /etc/resolv.conf ของคุณ (ดูhttp://udrepper.livejournal.com/20948.htmlรายละเอียดเต็มไปด้วยเลือด)


1
หน้าคู่มือสำหรับ resolv.conf บ่งชี้ว่าตัวเลือกที่คุณแนะนำจะตรงไปตรงมา "ตัวเลือกนี้ [... ] ทำให้ glibc ดำเนินการตามคำขอ IPv6 และ IPv4 ตามลำดับ (ที่ค่าใช้จ่ายของกระบวนการแก้ไขช้า)" - man7.org/linux/man-pages/man5/resolver.5.html
58

Sequential = อันแรกจากนั้นก็อีกอัน - ตรงข้ามกับแบบขนาน มันใช้งานได้ดีที่นี่
cweiske
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.