Convince apt-get * not * использовать метод IPv6

ISP, с которым я работаю, - это настройка внутренней сети IPv6 при подготовке к подключению к интернету IPv6. В результате несколько серверов в этой сети теперь пытаются подключиться к security.debian.org по адресу IPv6 по умолчанию при запуске apt-get update, и это приводит к необходимости ждать длительный таймаут, когда я загружаю обновления любого типа.

Есть ли способ сказать apt, чтобы либо предпочесть IPv4, либо вообще игнорировать IPv6?

204 голоса | спросил Shadur 23 MarpmWed, 23 Mar 2011 13:15:07 +03002011-03-23T13:15:07+03:0001 2011, 13:15:07

9 ответов


275

Добавить -o Acquire :: ForceIPv4 = true при запуске apt-get.

Если вы хотите сделать постоянный параметр, просто создайте /etc/apt/apt.conf.d/99force-ipv4 и поместите Acquire :: ForceIPv4 "true"; в нем:

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

Параметры конфигурации Приобретение :: ForceIPv4 и Acquire :: ForceIPv6 были добавлены в версию 0.9.7.9 ~ exp1 (см. bug 611891 ), который доступен с Ubuntu Saucy (выпущен в октябре 2013 года) и Debian Jessie (выпущен в апреле 2015 года).

ответил mmoya 12 22013vEurope/Moscow11bEurope/MoscowTue, 12 Nov 2013 17:18:55 +0400 2013, 17:18:55
73

Как Жиль говорит , используйте gai.conf

Скажем, у нас есть два хоста www.he.net и www.ripe.net

$ host www.he.net
www.he.net - это псевдоним для he.net.
he.net имеет адрес 216.218.186.2
У него есть IPv6-адрес 2001: 470: 0: 76 :: 2


$ host www.ripe.net
www.ripe.net имеет адрес 193.0.6.139
www.ripe.net имеет IPv6-адрес 2001: 67c: 2e8: 22 :: c100: 68b

Случай 1: Предпочитает IPV4

Добавьте в /etc/gai.conf следующее:

приоритет :: ffff: 0: 0/96 100

, то имеем:

$ telnet www.ripe.net 81
Попытка 193.0.6.139 ...
^ C
$ telnet www.he.net 81
Попытка 216.218.186.2 ...

Случай 2: Предпочитает IPV6 для определенных хостов

Если мы добавим

приоритет 2001: 470 :: /32 100

, то имеем

$ telnet www.ripe.net 81
Попытка 193.0.6.139 ...
^ C
$ telnet www.he.net 81
Пытается 2001: 470: 0: 76 :: 2 ...
^ C

Таким образом, мы предпочитаем эту сеть для ipv6 и ipv4 всюду.

Случай 3: Предпочитает ipv4 для определенных хостов

Интересно, инвертируем ли мы маску назад?

EDIT # 1

В соответствии с @GrueMaster это верно.

  

приоритет 2001: 470 :: /96 100

Работал для него. Чтобы заставить его работать, security.ubuntu.com ipv6 необходимо отключить. Это застопорилось навсегда.


См. также:

ответил Lmwangi 16 Maypm11 2011, 17:47:39
9

Вы можете настроить apt-cacher-ng на резервную машину, чтобы действовать как прокси-сервер для всех ваших хостов. Вы можете заставить конфигурацию использовать только определенные хосты или использовать трюк /etc /hosts, предложенный @badp на этой машине.

apt-get install apt-cacher-ng

После установки apt-cache-ng вам просто нужно отбросить следующую строку (с измененным IP-адресом /именем хоста, чтобы указать на ваш компьютер-кэшер) в /etc/apt/apt.conf.d/90httpproxy

Приобретение :: http {Proxy "http: //[192.168.1.254]: 3142"; };

Я использую эту настройку для сокращения использования полосы пропускания, но это должно решить вашу проблему. К сожалению, я не знаю, как напрямую отключить поиск ipv6 для apt-get.

ответил Richm 23 MarpmWed, 23 Mar 2011 16:10:26 +03002011-03-23T16:10:26+03:0004 2011, 16:10:26
5

Вы можете обойти это, установив прокси-сервер DNS, который сбросил ip6-ответы.

ответил pjc50 23 MarpmWed, 23 Mar 2011 14:47:56 +03002011-03-23T14:47:56+03:0002 2011, 14:47:56
4

Как добавить строку в /etc /hosts, переопределяя соответствующие адреса? например.

130.89.149.226 ftp.debian.org
195.20.242.89 security.debian.org
ответил badp 23 MarpmWed, 23 Mar 2011 13:35:35 +03002011-03-23T13:35:35+03:0001 2011, 13:35:35
1

По состоянию на октябрь 2014 года у меня была та же проблема, пытаясь обновить debian за прокси-сервером в локальной сети. В надежде, что это будет актуально для других, я отправляю свой ответ здесь. Как уже упоминалось, редактирование /etc /hosts - это то, о чем нужно быть осторожным.

Но лично я просто хотел сделать обновление.

Содержимое /etc/apt/sources.list при выполнении обновления (оно отличалось до обновления ..):

deb http://http.debian.net/debian/test main
deb-src http://http.debian.net/debian/test 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

Содержимое /etc/apt/apt.conf:

Приобретение :: http :: proxy "http://192.168.1.10:7777/";
Приобретите :: http :: Timeout "10";
Acquire :: ftp :: Timeout "10";

Дополнение к /etc /hosts:

#Workaround для создания apt-get work (08-10-2014)
195.20.242.89 security.debian.org
130.89.148.12 ftp.debian.org

Теперь запустите apt-get update; apt-get upgrade, так как root работал хорошо.

Как упоминалось в других ответах, используйте команду run host в домене, чтобы получить правильный ip для вставки в файл hosts.

Пример:

$ host ftp.debian.org
ftp.debian.org имеет адрес 130.89.148.12

Это успешно обновило систему до Debian GNU /Linux testing (jessie). Возможно, вы не захотите запускать тестовые репозитории, а затем просто удалите их из источников. Тестирование репозиториев дает вам более свежие обновления нескольких пакетов, но не считается стабильным.

ответил NordicViking 8 +04002014-10-08T20:21:18+04:00312014bEurope/MoscowWed, 08 Oct 2014 20:21:18 +0400 2014, 20:21:18
0

Я нашел намного лучший способ сделать это. Откройте файл sources.list и запишите имена хостов репозиториев. Получите их адреса IPv4 , а затем отредактируйте sources.list с адресами IPv4, а не с именами хостов. Теперь Apt-get должен связаться с репозиториями по указанным вами IPv4-адресам, минуя IPv6.

Существует недостаток, заключающийся в том, что у РЕПО обычно есть какая-то система балансировки нагрузки и /или геолокация IP, что этот метод, конечно, обходит. Однако не имеет значения, только ли это делают некоторые люди. Если вы обнаружите, что одно зеркало медленное, попробуйте получить еще один IP-адрес репо (например, используя онлайн-службу ping) и используйте это.

ответил D. Strout 18 AMpThu, 18 Apr 2013 02:10:02 +040010Thursday 2013, 02:10:02
0

Увольнение старой темы, но в последнее время она столкнулась с той же проблемой. Итак, на основании приведенного выше совета и вывода хоста и whois :

# host security.debian.org
security.debian.org имеет адрес 212.211.132.250
security.debian.org имеет адрес 195.20.242.89
security.debian.org имеет адрес 212.211.132.32
security.debian.org имеет IPv6-адрес 2001: 8d8: 580: 400: 6564: a62: 0: 2
security.debian.org имеет IPv6-адрес 2001: a78: 5: 0: 216: 35ff: fe7f: be4f
security.debian.org имеет IPv6-адрес 2001: a78: 5: 1: 216: 35ff: fe7f: 6ceb

Решенная проблема несколько по-другому - снизила приоритет сетей IPv6, содержащих security.debian.org в /etc/gai.conf :

# Сделать IPv6 для security.debian.org нежелательным
приоритет 2001: 8d8: 580 :: /48 5
приоритет 2001: a78: 5 :: /48 5

Таким образом, IPv6 по-прежнему предпочтительнее, кроме security.debian.org .

ответил Timur Bakeyev 9 PMpWed, 09 Apr 2014 20:56:54 +040056Wednesday 2014, 20:56:54
-4

Вы можете попробовать это, если будете работать для вас

user @ ubuntuvm: ~ $ sudo bash
root @ ubuntuvm: ~ # echo 1> /Труды /системы /нетто /ipv6 /CONF /eth0 /disable_ipv6

- > замените имя интерфейса

ответил Chetan 12 J000000Sunday15 2015, 15:11:00

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132