it-swarm-eu.dev

Přesvědčte apt-get * not * k použití metody IPv6

ISP I pracuji na nastavení interní sítě IPv6 v přípravě na případné připojení k internetu IPv6. Výsledkem je, že se několik serverů v této síti nyní při spuštění apt-get update Ve výchozím nastavení pokouší připojit k security.debian.org prostřednictvím své IPv6 adresy, což má za následek to, že kdykoli budu muset čekat na delší časový limit, m stahování aktualizací jakéhokoli druhu.

Existuje způsob, jak říct, aby buď upřednostňoval IPv4, nebo úplně ignoroval IPv6?

245
Shadur

Přidat -o Acquire::ForceIPv4=true při spuštění apt-get.

Pokud chcete, aby nastavení trvalo, jen vytvořte /etc/apt/apt.conf.d/99force-ipv4 a vložte Acquire::ForceIPv4 "true"; v něm:

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

Možnosti konfigurace Acquire::ForceIPv4 a Acquire::ForceIPv6 byly přidány do verze 0.9.7.9 ~ exp1 (viz chyba 611891 ), která je k dispozici od Ubuntu Saucy (vydáno v Říjen 2013) a Debian Jessie (vydáno v dubnu 2015).

324
mmoya

Jak říká Gilles , použijte gai.conf. Poznámky:

  1. Funguje to na mnohem nižší úrovni (síť DNS a IP) než APT, takže se změní jak všechny vaše aplikační síť - alespoň to vše použijte getaddrinfo.
  2. Před úpravou gai.conf, měli byste ji zálohovat a také si ji přečíst (nebojte se, je to krátké). Úpravy níže jsou pravděpodobně již uvedeny v aktuálním souboru; Pokud aktuální soubor ukazuje něco jiného, ​​než co je uvedeno níže, měli byste pravděpodobně dát přednost tomu, co je v aktuálním souboru.

Ale pokud to je to, co chcete (což pravděpodobně je), pokračujte. Řekněme, že máme dva hostitele www.he.net a 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

Případ 1: preferujte IPV4 pro všechny hostitele

Připojit k /etc/gai.conf následující řádek:

precedence ::ffff:0:0/96  100

Po uložení upraveného souboru (není třeba restartovat) byste měli vidět síťové aplikace (např. telnet) pomocí IPV4: např.

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

Případ 2: preferujte IPV6 pro konkrétní počítače

Pokud chceme preferovat IPV6 pouze pro www.he.net nebo jeho síť, můžeme připojit mask/prefix pro všechny nebo jen část jejich adresy IPV6 k /etc/gai.conf. Například následující řádek:

precedence 2001:470::/32 100

(po uložení upraveného souboru) vytvoří

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

Případ 3: preferujte IPV4 pro konkrétní hostitele

Pokud obrácíme masku, bude to naopak? Podle @GrueMaster, připojení

precedence 2001:470::/96 100

pracoval pro něj po deaktivaci IPV6 pro security.ubuntu.com (v opačném případě se zastaví).


Viz také:

84
Lmwangi

Mohli byste nastavit apt-cacher-ng na náhradním počítači, aby fungoval jako proxy/mezipaměť pro všechny vaše hostitele. Můžete vynutit konfiguraci, aby použila pouze konkrétní hostitele nebo použila trik/etc/hosts navržený @badp na jednom počítači.

apt-get install apt-cacher-ng

Jakmile máte nastavení apt-cache-ng, stačí zrušit následující řádek (s IP adresou/hostitelským jménem změněným tak, aby ukazoval na váš stroj cacher) v / etc/apt/apt.conf.d/90httpproxy =

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

Toto nastavení používám ke snížení využití šířky pásma, ale mělo by to vyřešit váš problém. Bohužel si nejsem vědom způsob, jak přímo zakázat ipv6 vyhledávání pro apt-get sám.

10
Richm

Dalo by se to vyřešit nastavením DNS proxy serveru, který vynechal odpovědi ip6.

5
pjc50

Jak se o přidání řádku v /etc/hosts potlačení příslušných adres? např.,

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

Únos staré téma, ale nedávno čelil stejnému problému. Na základě výše uvedených rad a výstupů Host a 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

Vyřešený problém trochu jinak - snížil prioritu sítí IPv6, které obsahují security.debian.org v /etc/gai.conf:

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

IPv6 je tedy stále preferován s výjimkou security.debian.org .

1
Timur Bakeyev

Od 8. října 2014 jsem měl stejný problém a snažil jsem se aktualizovat Debian za proxy v lokální síti. V naději, že to bude relevantní pro ostatní, zveřejním svou odpověď zde. Jak již zmínili ostatní, úpravy /etc/hosts Je něco, s čím by měl být opatrný.

Ale osobně jsem jen chtěl, aby byla aktualizace provedena.

Obsah souboru /etc/apt/sources.list při provádění aktualizace (před aktualizací byl jiný.):

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

Obsah souboru /etc/apt/apt.conf:

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

Přidání na/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

Nyní běží apt-get update ; apt-get upgrade, Protože root fungoval dobře.

Jak je uvedeno v jiných odpovědích, pomocí příkazu Host v doméně získejte správný ip, který chcete vložit do souboru hosts.

Příklad:

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

Tím byl systém úspěšně aktualizován na Debian GNU/Linux testing (jessie). Možná nebudete chtít spouštět testovací úložiště a poté jej jednoduše odebrat ze zdrojů. Testovací úložiště vám poskytuje nejnovější aktualizace několika balíčků, ale není považováno za stabilní.

1
NordicViking

Našel jsem mnohem lepší způsob, jak toho dosáhnout. Otevřete svůj sources.list soubor a poznamenejte si názvy hostitelů repozitáře. Získejte jejich IPv4 adresy, poté upravte sources.list s adresami IPv4 namísto názvů hostitelů. Apt-get by nyní měl kontaktovat repozitáře přes IPv4 adresy, které jste zadali, a obejít IPv6.

Nevýhodou je, že repozitáře mají obvykle nějaký druh vyvažování zátěže a/nebo IP geolokace, který tato metoda samozřejmě obchází. Nemělo by však na tom záležet, pokud to dělá jen několik lidí. Pokud zjistíte, že jedno zrcadlo je pomalé, zkuste získat jinou repo IP adresu (například pomocí online služby ping) a použijte ji.

0
D. Strout