it-swarm-id.com

Meyakinkan apt-get * not * untuk menggunakan metode IPv6

ISP tempat saya bekerja sedang menyiapkan jaringan IPv6 internal sebagai persiapan untuk akhirnya terhubung ke internet IPv6. Akibatnya, beberapa server di jaringan ini sekarang mencoba untuk terhubung ke security.debian.org secara default melalui alamat IPv6 ketika menjalankan apt-get update, dan itu mengakibatkan harus menunggu batas waktu yang lama setiap kali saya mengunduh pembaruan dalam bentuk apa pun.

Apakah ada cara untuk memberitahu apt untuk memilih IPv4 atau mengabaikan IPv6 sama sekali?

245
Shadur

Menambahkan -o Acquire::ForceIPv4=true saat menjalankan apt-get.

Jika Anda ingin membuat pengaturan terus-menerus, cukup buat /etc/apt/apt.conf.d/99force-ipv4 dan tulis Acquire::ForceIPv4 "true"; di dalamnya:

echo 'Acquire::ForceIPv4 "true";' | Sudo tee /etc/apt/apt.conf.d/99force-ipv4

Opsi konfigurasi Acquire::ForceIPv4 dan Acquire::ForceIPv6 ditambahkan ke versi 0.9.7.9 ~ exp1 (lihat bug 611891 ) yang tersedia sejak Ubuntu Saucy (dirilis pada Oktober 2013) dan Debian Jessie (dirilis pada April 2015).

324
mmoya

Seperti kata Gilles , gunakan gai.conf. Catatan:

  1. Ini bekerja pada level yang jauh lebih rendah (jaringan DNS dan IP) daripada APT, sehingga akan mengubah bagaimana semua jaringan aplikasi Anda - setidaknya, semua itu gunakan getaddrinfo.
  2. Sebelum mengedit gai.conf Anda, Anda harus mencadangkannya, dan juga membacanya (jangan khawatir, pendek). Hasil edit di bawah ini mungkin sudah disebutkan dalam file Anda saat ini; jika file saat ini menunjukkan sesuatu yang berbeda dari apa yang disebutkan di bawah ini, Anda mungkin lebih suka apa yang ada di file Anda saat ini.

Tetapi jika ini yang Anda inginkan (mungkin memang demikian), mari kita lanjutkan. Katakanlah kita memiliki dua host www.he.net Dan www.ripe.net:

$ Host www.he.net
www.he.net is an alias for he.net.
he.net has address 216.218.186.2
he.net has IPv6 address 2001:470:0:76::2

$ Host www.ripe.net
www.ripe.net has address 193.0.6.139
www.ripe.net has IPv6 address 2001:67c:2e8:22::c100:68b

Kasus 1: lebih suka IPV4 untuk semua host

Tambahkan ke /etc/gai.conf Baris berikut:

precedence ::ffff:0:0/96  100

Setelah menyimpan file yang diedit (tidak perlu memulai ulang), Anda akan melihat aplikasi jaringan (mis., telnet) menggunakan IPV4: mis.,

$ telnet www.ripe.net 81
Trying 193.0.6.139...
^C
$ telnet www.he.net 81
Trying 216.218.186.2...

Kasus 2: lebih suka IPV6 untuk host tertentu

Jika kami ingin memilih IPV6 hanya untuk www.he.net Atau jaringannya, kami dapat menambahkan mask/awalan untuk semua, atau hanya sebagian, dari alamat IPV6 ke /etc/gai.conf. E.g., baris berikut:

precedence 2001:470::/32 100

(setelah menyimpan file yang diedit) menghasilkan

$ telnet www.ripe.net 81
Trying 193.0.6.139...
^C
$ telnet www.he.net 81
Trying 2001:470:0:76::2...
^C

Kasus 3: lebih suka IPV4 untuk host tertentu

Jika kita membalikkan topeng, apakah kebalikannya akan menjadi kenyataan? Menurut @GrueMaster, menambahkan

precedence 2001:470::/96 100

bekerja untuknya setelah menonaktifkan IPV6 untuk security.ubuntu.com (jika tidak terhenti selamanya).


Lihat juga:

84
Lmwangi

Anda dapat mengatur apt-cacher-ng pada mesin cadangan untuk bertindak sebagai proxy/cache untuk semua host Anda. Anda dapat memaksa konfigurasi untuk hanya menggunakan host tertentu atau menggunakan trik/etc/hosts yang disarankan oleh @badp pada satu mesin itu.

apt-get install apt-cacher-ng

Setelah Anda memiliki pengaturan apt-cache-ng, Anda hanya perlu menghapus baris berikut (dengan alamat IP/nama host diubah untuk menunjuk ke mesin cacher Anda) di / etc/apt/apt.conf.d/90httpproxy =

Acquire::http { Proxy "http://[192.168.1.254]:3142"; };

Saya menggunakan pengaturan itu untuk mengurangi penggunaan bandwidth tetapi harus mengatasi masalah Anda. Sayangnya saya tidak mengetahui cara untuk langsung menonaktifkan pencarian ipv6 untuk apt-get sendiri.

10
Richm

Anda bisa mengatasinya dengan menyiapkan server proxy DNS yang menjatuhkan respons ip6.

5
pjc50

Bagaimana dengan menambahkan baris dalam /etc/hosts mengganti alamat yang relevan? misalnya.,

130.89.149.226  ftp.debian.org      
195.20.242.89   security.debian.org 
4
badp

Membajak topik lama, tetapi dihadapkan dengan masalah yang sama baru-baru ini. Jadi, berdasarkan saran yang diberikan di atas dan output dari Host dan whois:

# Host security.debian.org
security.debian.org has address 212.211.132.250
security.debian.org has address 195.20.242.89
security.debian.org has address 212.211.132.32
security.debian.org has IPv6 address 2001:8d8:580:400:6564:a62:0:2
security.debian.org has IPv6 address 2001:a78:5:0:216:35ff:fe7f:be4f
security.debian.org has IPv6 address 2001:a78:5:1:216:35ff:fe7f:6ceb

Memecahkan masalah dengan cara yang sedikit berbeda - menurunkan prioritas jaringan IPv6 yang berisi security.debian.org di /etc/gai.conf:

# Make IPv6 for security.debian.org undesirable
precedence 2001:8d8:580::/48    5
precedence 2001:a78:5::/48      5

Jadi, IPv6 masih lebih disukai kecuali untuk security.debian.org .

1
Timur Bakeyev

Pada 08 Oktober 2014, saya memiliki masalah yang sama, mencoba memperbarui debian di belakang proxy di jaringan lokal. Dengan harapan itu akan relevan bagi orang lain, saya memposting tanggapan saya di sini. Seperti yang disebutkan orang lain, mengedit /etc/hosts Adalah sesuatu yang harus hati-hati.

Tetapi secara pribadi saya hanya ingin pembaruan dilakukan.

Konten /etc/apt/sources.list ketika melakukan pembaruan (berbeda sebelum pembaruan ..):

deb http://http.debian.net/debian/ testing main
deb-src http://http.debian.net/debian/ testing main

deb http://mirrors.kernel.org/debian/ wheezy main
deb-src http://mirrors.kernel.org/debian/ wheezy main

deb http://security.debian.org/ wheezy/updates main
deb-src http://security.debian.org/ wheezy/updates main

Isi /etc/apt/apt.conf:

Acquire::http::proxy "http://192.168.1.10:7777/";
Acquire::http::Timeout "10";
Acquire::ftp::Timeout "10";

Tambahan ke/etc/hosts:

#Workaround for making apt-get work (08-10-2014)
195.20.242.89 security.debian.org
130.89.148.12 ftp.debian.org

Sekarang, menjalankan apt-get update ; apt-get upgrade Sebagai root bekerja dengan baik.

Seperti disebutkan dalam jawaban lain, gunakan, jalankan perintah Host di domain untuk mendapatkan ip yang benar untuk dimasukkan ke file host.

Contoh:

$ Host ftp.debian.org
ftp.debian.org has address 130.89.148.12

Ini berhasil memperbarui sistem ke Debian GNU/Linux testing (jessie). Anda mungkin tidak ingin menjalankan dengan repositori pengujian, kemudian cukup hapus dari sumbernya. Repositori pengujian memberi Anda lebih banyak pembaruan terbaru dari beberapa paket, tetapi tidak dianggap stabil.

1
NordicViking

Saya telah menemukan cara yang lebih baik untuk melakukan ini. Buka file sources.list Anda dan catat nama host repo. Dapatkan alamat IPv4 mereka, lalu edit sources.list Dengan alamat IPv4 alih-alih nama host. Apt-get sekarang harus menghubungi repositori melalui alamat IPv4 yang Anda tentukan, melewati IPv6.

Ada kerugiannya bahwa repo biasanya memiliki semacam penyeimbangan muatan dan/atau pengaturan geolokasi IP, yang tentu saja dilewati oleh metode ini. Namun, tidak masalah jika hanya beberapa orang yang melakukannya. Jika Anda menemukan satu mirror lambat, coba dapatkan alamat IP repo lain (misalnya, dengan menggunakan layanan ping online) dan gunakan itu.

0
D. Strout