Lebih suka pencarian DNS (IPv4) sebelum pencarian AAAA (IPv6)

44

Dalam catatan saya Ubuntu 10.10 saya yang baru diinstal selalu melakukan pencarian DNS AAAA sebelum pencarian catatan. Apakah ada cara saya dapat mengkonfigurasi sistem untuk melakukan pencarian A pertama?

(Sementara berbagai browser dan aplikasi lain mungkin mengandung resolversinya sendiri, saya berbicara tentang yang ada di glibc)

tidak
sumber
Untuk memperjelas, Anda ingin memiliki IPv4 dan IPv6?
belacqua
Lebih disukai ya. Tetapi karena saya hanya memiliki tautan IPv6 lokal, cukup sia-sia meminta mis. Catatan AAAA dari google.com setiap kali, dan kemudian meminta catatan A sesudahnya.
nos

Jawaban:

53

Ini adalah standar untuk memprioritaskan IPv6 daripada IPv4 untuk memungkinkan IP generasi berikutnya mengambil alih :)

Anda dapat mengubah ini dengan mengedit blok presedensi di /etc/gai.conf(gai singkatan getaddrinfo, panggilan sistem standar untuk menyelesaikan nama host). Komentari baris seperti yang dijelaskan dalam file:

# Untuk situs yang lebih suka koneksi IPv4 ubah baris terakhir menjadi

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

Penjelasan rinci tentang gai.confdapat ditemukan di halaman manual.

freddyb
sumber
terima kasih, kamu menyelamatkan hariku! salah satu server saya terus mendapatkan hasil ipv6 dari server dns tetapi server saya tidak dapat berfungsi dengan baik w / ipv6
Boon
Hai, apakah pengaturan ini memerlukan sysctl atau layanan apa pun yang memuat ulang atau reboot untuk mulai berlaku? Saya menemukan jawaban Anda bermanfaat, tetapi Anda dapat mengeditnya untuk memperbaiki keraguan tersebut.
Marco
Halaman manual untuk gai.confmengatakan Anda harus mengomentari semua baris, bukan hanya IPv4, untuk mendapatkan perilaku yang dimodifikasi yang benar. Dari gai.conf(5): "Sekali lagi, keberadaan satu garis prioritas di dalam file konfigurasi menyebabkan tabel default tidak digunakan." Jika Anda ingin agar garis tabel default lainnya tetap berfungsi, Anda harus mengomentari juga.
Ian D. Allen
10

Masalah saya sama, saya memiliki pertanyaan IPV6 yang dibuat sebelum IPV4 dan mereka membuang-buang sumber daya, jadi saya mengubah file /etc/gai.conf saya sebagai freddyb yang diposting, tetapi skenario saya sedikit berbeda, server saya di-Natted, jadi IPv4 tidak akan didahulukan dari IPv6 dengan hanya baris itu. Solusinya juga mengomentari baris lain di gai.conf sehingga akan terlihat seperti ini

#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

Jadi server Anda akan mencoba ipv4 pertama bahkan jika Anda Natted!

Carlos Ho Continy
sumber
2
The /etc/gai.conffile dalam Ubuntu 15.04 "jelas" kata tiga scopev4baris Anda sarankan di atas sudah default. Saya hanya membuat perubahan satu baris precedence ::ffff:0:0/96 100dan itu bekerja bahkan di belakang NAT.
Ian D. Allen
1

Jika Anda tidak ingin IPv6 diaktifkan sama sekali, Anda dapat menonaktifkan IPv6 untuk melakukannya. http://www.webupd8.org/2010/05/how-to-disable-ipv6-in-ubuntu-1004.html

jika tidak, Anda dapat mencoba menambahkan

options single-request

Ke file /etc/resolv.conf Anda. (lihat http://udrepper.livejournal.com/20948.html untuk detail berdarah)

ipv6_twit
sumber
1
Halaman manual untuk resolv.conf menunjukkan bahwa opsi yang Anda sarankan tidak persis berlawanan "Opsi ini [...] membuat glibc melakukan permintaan IPv6 dan IPv4 secara berurutan (dengan mengorbankan beberapa kelambatan proses penyelesaian)." - man7.org/linux/man-pages/man5/resolver.5.html
ndemou
berurutan = pertama, lalu yang lain - yang bertentangan dengan paralel. ini berfungsi dengan baik di sini.
cweiske