Convencer apt-get * not * para usar o método IPv6

219

O ISP em que estou trabalhando está configurando uma rede IPv6 interna em preparação para eventualmente se conectar à Internet IPv6. Como resultado, vários dos servidores nesta rede agora tentam se conectar ao security.debian.org através de seu endereço IPv6 por padrão quando executam apt-get update , e isso resulta em ter que esperar por um tempo de espera demorado sempre que eu estou baixando atualizações de qualquer tipo.

Existe uma maneira de dizer ao apt para preferir o IPv4 ou ignorar o IPv6?

    
por Shadur 23.03.2011 / 11:15

9 respostas

295

Adicione -o Acquire::ForceIPv4=true ao executar apt-get .

Se você quiser tornar a configuração persistente, apenas crie /etc/apt/apt.conf.d/99force-ipv4 e coloque Acquire::ForceIPv4 "true"; nela:

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

Opções de configuração Acquire::ForceIPv4 e Acquire::ForceIPv6 foram adicionadas à versão 0.9.7.9 ~ exp1 (veja bug 611891 ) que está disponível desde o Ubuntu Saucy (lançado em outubro de 2013) e o Debian Jessie (lançado em abril de 2015).

    
por 12.11.2013 / 14:18
77

Como Gilles diz , use %código%. Notas:

  1. Isso funciona em um nível muito mais baixo (redes DNS e IP) do que o APT, por isso mudará a all sua rede de aplicativos - pelo menos, tudo o que usa gai.conf .
  2. Antes de editar seu getaddrinfo , você deve fazer o backup e também lê-lo (não se preocupe, é curto). As edições abaixo provavelmente já foram mencionadas no seu arquivo atual; Se o arquivo atual indica algo diferente do que é mencionado abaixo, você provavelmente deve preferir o que está no seu arquivo atual.

Mas se é isso que você quer (o que provavelmente é), vamos prosseguir. Digamos que temos dois hosts gai.conf e www.he.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

Caso 1: prefira IPV4 para todos os hosts

Anexe a www.ripe.net a seguinte linha:

precedence ::ffff:0:0/96  100

Depois de salvar o arquivo editado (não é necessário reiniciar), você deverá ver aplicativos de rede (por exemplo, /etc/gai.conf ) usando IPV4: por exemplo,

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

Caso 2: prefira IPV6 para hosts específicos

Se quisermos preferir o IPV6 somente para telnet ou sua rede, podemos anexar um máscara / prefixo para todos ou apenas parte do seu endereço IPV6 para www.he.net . Por exemplo, a seguinte linha:

precedence 2001:470::/32 100

(depois de salvar o arquivo editado) produz

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

Caso 3: prefira IPV4 para hosts específicos

Se invertermos a máscara, o reverso será verdadeiro? De acordo com @GrueMaster, anexando

precedence 2001:470::/96 100

trabalhou para ele depois de desabilitar o IPV6 para /etc/gai.conf (caso contrário, para sempre).

Veja também:

por 16.05.2011 / 15:47
9

Você pode configurar o apt-cacher-ng em uma máquina de reposição para atuar como um proxy / cache para todos os seus hosts. Você pode forçar a configuração a usar somente hosts específicos ou usar o truque / etc / hosts sugerido por @badp nessa máquina.

apt-get install apt-cacher-ng

Uma vez que você tenha o apt-cache-ng setup, você só precisa soltar a seguinte linha (com o endereço IP / hostname alterado para apontar para sua máquina cacher) em /etc/apt/apt.conf.d/90httpproxy

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

Eu uso essa configuração para reduzir o uso de largura de banda, mas isso deve solucionar seu problema. Infelizmente não estou ciente de uma maneira de desabilitar diretamente as pesquisas de ipv6 para o apt-get em si.

    
por 23.03.2011 / 14:10
5

Você poderia contornar isso configurando um servidor proxy DNS que eliminasse respostas ip6.

    
por 23.03.2011 / 12:47
4

Que tal adicionar uma linha em /etc/hosts sobrepondo os endereços relevantes? por exemplo,

130.89.149.226  ftp.debian.org      
195.20.242.89   security.debian.org 
    
por 23.03.2011 / 11:35
1

Sequestrando o antigo tópico, mas enfrentando o mesmo problema recentemente. Assim, com base no aviso fornecido acima e na saída de host e 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

Resolveu o problema de uma forma ligeiramente diferente - diminuiu a precedência das redes IPv6 que contêm security.debian.org em /etc/gai.conf :

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

Portanto, o IPv6 ainda é preferido, exceto para security.debian.org .

    
por 09.04.2014 / 18:56
1

Em 8 de outubro de 2014, tive o mesmo problema, tentando atualizar o debian por trás de um proxy na rede local. Na esperança de que seja relevante para os outros, eu postei minha resposta aqui. Como outros já mencionaram, editar /etc/hosts é algo com que se deve ter cuidado.

Mas, pessoalmente, eu só queria que a atualização fosse feita.

Conteúdo de /etc/apt/sources.list ao fazer a atualização (era diferente antes da atualização ..):

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

Conteúdo do /etc/apt/apt.conf:

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

Adição ao / 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

Agora, a execução de apt-get update ; apt-get upgrade como raiz funcionou bem.

Como mencionado em outras respostas, use, execute o comando host no domínio para obter o ip correto para inserir no arquivo de hosts.

Exemplo:

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

Isso atualizou com sucesso o sistema para Debian GNU/Linux testing (jessie) . Você pode não querer rodar com os repositórios de teste e simplesmente removê-lo das fontes. Os repositórios de teste fornecem atualizações mais recentes de vários pacotes, mas não são considerados estáveis.

    
por 08.10.2014 / 18:21
0

Eu encontrei uma maneira muito melhor de fazer isso. Abra o arquivo sources.list e anote os nomes de host dos repositórios. Obtenha seus endereços IPv4 e edite sources.list com os endereços IPv4 em vez dos nomes de host. O Apt-get deve agora contactar os repositórios através dos endereços IPv4 que especificou, ignorando o IPv6.

Existe a desvantagem de os repositórios geralmente terem algum tipo de balanceamento de carga e / ou configuração de geolocalização por IP, o que este método naturalmente ignora. No entanto, não importa se apenas algumas pessoas estão fazendo isso. Se você achar que um espelho está lento, tente obter outro endereço IP de repo (por exemplo, usando um serviço de ping on-line) e use-o.

    
por 18.04.2013 / 00:10
-4

Você pode tentar isso se funciona para você

user@ubuntuvm:~$ sudo bash
root@ubuntuvm:~# echo 1 > /proc/sys/net/ipv6/conf/eth0/disable_ipv6 

- > substitua o nome da sua interface

    
por 12.07.2015 / 14:11

Tags