it-swarm.com.de

Überzeugen Sie apt-get * nicht *, die IPv6-Methode zu verwenden

Der ISP, bei dem ich arbeite, richtet ein internes IPv6-Netzwerk ein, um eine eventuelle Verbindung zum IPv6-Internet vorzubereiten. Infolgedessen versuchen einige der Server in diesem Netzwerk jetzt standardmäßig, über ihre IPv6-Adresse eine Verbindung zu security.debian.org herzustellen, wenn apt-get update Ausgeführt wird. Dies führt dazu, dass ich immer auf eine längere Zeit warten muss, wenn ich ' Ich lade Updates jeglicher Art herunter.

Gibt es eine Möglichkeit, apt zu sagen, dass es IPv4 bevorzugt oder IPv6 insgesamt ignoriert?

245
Shadur

Hinzufügen -o Acquire::ForceIPv4=true beim Ausführen apt-get.

Wenn Sie die Einstellung beibehalten möchten, erstellen Sie einfach /etc/apt/apt.conf.d/99force-ipv4 und setzen Sie Acquire::ForceIPv4 "true"; drin:

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

Konfigurationsoptionen Acquire::ForceIPv4 und Acquire::ForceIPv6 wurden der Version 0.9.7.9 ~ exp1 hinzugefügt (siehe Fehler 611891 ), die seit Ubuntu Saucy (veröffentlicht in) verfügbar ist Oktober 2013) und Debian Jessie (veröffentlicht im April 2015).

324
mmoya

Verwenden Sie als sagt Gillesgai.conf. Anmerkungen:

  1. Dies funktioniert auf einer viel niedrigeren Ebene (DNS- und IP-Netzwerk) als APT, sodass sich ändert, wie alle Ihr Anwendungsnetzwerk - zumindest all das benutze getaddrinfo.
  2. Bevor Sie Ihren gai.conf Bearbeiten, sollten Sie ihn sichern und auch lesen (keine Sorge, er ist kurz). Die folgenden Änderungen sind wahrscheinlich bereits in Ihrer aktuellen Datei erwähnt. Wenn die aktuelle Datei etwas anderes als das unten erwähnte anzeigt, sollten Sie wahrscheinlich bevorzugen, was in Ihrer aktuellen Datei enthalten ist.

Aber wenn es das ist, was Sie wollen (was es wahrscheinlich ist), lassen Sie uns fortfahren. Angenommen, wir haben zwei Hosts www.he.net Und 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

Fall 1: IPV4 für alle Hosts bevorzugen

Fügen Sie an /etc/gai.conf Die folgende Zeile an:

precedence ::ffff:0:0/96  100

Nach dem Speichern der bearbeiteten Datei (kein Neustart erforderlich) sollten Netzwerk-Apps (z. B. telnet) mit IPV4 angezeigt werden: z.

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

Fall 2: IPV6 für bestimmte Hosts bevorzugen

Wenn wir IPV6 nur für www.he.net Oder sein Netzwerk bevorzugen möchten, können wir ein Maske/Präfix für alle oder nur einen Teil seiner IPV6-Adresse an /etc/gai.conf. Zum Beispiel die folgende Zeile:

precedence 2001:470::/32 100

(nach dem Speichern der bearbeiteten Datei) erzeugt

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

Fall 3: IPV4 für bestimmte Hosts bevorzugen

Wenn wir die Maske umkehren, ist das Gegenteil der Fall? Laut @GrueMaster anhängen

precedence 2001:470::/96 100

arbeitete für ihn, nachdem IPV6 für security.ubuntu.com deaktiviert wurde (andernfalls bleibt es für immer stehen).


Siehe auch:

84
Lmwangi

Sie können apt-cacher-ng auf einem Ersatzcomputer einrichten, um als Proxy/Cache für alle Ihre Hosts zu fungieren. Sie können die Konfiguration zwingen, nur bestimmte Hosts zu verwenden, oder den von @badp auf diesem einen Computer vorgeschlagenen Trick/etc/hosts verwenden.

apt-get install apt-cacher-ng

Sobald Sie apt-cache-ng eingerichtet haben, müssen Sie nur die folgende Zeile (mit geänderter IP-Adresse/Hostname, die auf Ihren Cacher-Computer verweist) in / etc/apt/apt.conf.d/90httpproxy einfügen =

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

Ich verwende dieses Setup, um die Bandbreitennutzung zu reduzieren, aber es sollte Ihr Problem umgehen. Leider ist mir keine Möglichkeit bekannt, IPv6-Lookups für apt-get selbst direkt zu deaktivieren.

10
Richm

Sie können dies umgehen, indem Sie einen DNS-Proxyserver einrichten, der IP6-Antworten löscht.

5
pjc50

Wie wäre es mit dem Hinzufügen einer Zeile in /etc/hosts die relevanten Adressen überschreiben? z.B.,

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

Entführung eines alten Themas, aber in letzter Zeit mit dem gleichen Problem konfrontiert. Basierend auf den oben gegebenen Ratschlägen und der Ausgabe von Host und 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

Problem auf etwas andere Weise gelöst - Vorrang der IPv6-Netzwerke verringert, die security.debian.org in enthalten /etc/gai.conf:

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

Daher wird IPv6 mit Ausnahme von security.debian.org weiterhin bevorzugt.

1
Timur Bakeyev

Ab dem 08. Oktober 2014 hatte ich das gleiche Problem beim Versuch, Debian hinter einem Proxy im lokalen Netzwerk zu aktualisieren. In der Hoffnung, dass es für andere relevant sein wird, poste ich meine Antwort hier. Wie andere bereits erwähnt haben, sollte man beim Bearbeiten von /etc/hosts Vorsichtig sein.

Aber ich persönlich wollte nur das Update machen lassen.

Inhalt von /etc/apt/sources.list beim Ausführen des Updates (vor dem Update war dies anders ..):

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

Inhalt von /etc/apt/apt.conf:

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

Ergänzung zu/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

Jetzt hat es gut funktioniert, apt-get update ; apt-get upgrade Als root auszuführen.

Verwenden Sie, wie in anderen Antworten erwähnt, den Befehl Host in der Domäne, um die richtige IP-Adresse zum Einfügen in die Hosts-Datei zu erhalten.

Beispiel:

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

Dadurch wurde das System erfolgreich auf Debian GNU/Linux testing (jessie) aktualisiert. Möglicherweise möchten Sie nicht mit den Test-Repositorys ausgeführt werden und diese dann einfach aus den Quellen entfernen. Die Test-Repositorys bieten Ihnen neuere Aktualisierungen mehrerer Pakete, werden jedoch nicht als stabil angesehen.

1
NordicViking

Ich habe einen viel besseren Weg gefunden, dies zu tun. Öffne dein sources.list Datei und notieren Sie die Hostnamen der Repos. Holen Sie sich ihre IPv4 Adressen und bearbeiten Sie dann sources.list mit den IPv4-Adressen anstelle der Hostnamen. Apt-get sollte sich nun über die von Ihnen angegebenen IPv4-Adressen unter Umgehung von IPv6 an die Repositorys wenden.

Es gibt den Nachteil, dass Repos normalerweise eine Art Lastausgleich und/oder IP-Geolokalisierung eingerichtet haben, die diese Methode natürlich umgeht. Es sollte jedoch keine Rolle spielen, wenn nur wenige Leute es tun. Wenn Sie feststellen, dass ein Spiegel langsam ist, versuchen Sie, eine andere Repo-IP-Adresse zu erhalten (z. B. mithilfe eines Online-Ping-Dienstes), und verwenden Sie diese.

0
D. Strout