Как говорит Жиль , используйте gai.conf
. Примечания:
- Это работает на гораздо более низком уровне (DNS и IP-сети), чем APT, поэтому оно изменит то, как все ваши приложения работают в сети - по крайней мере, все, что используют
getaddrinfo
.
- Прежде чем редактировать свой
gai.conf
, вы должны сделать его резервную копию, а также прочитать его (не волнуйтесь, он короткий). Изменения ниже, вероятно, уже упоминались в вашем текущем файле; если текущий файл указывает на что-то отличное от того, что упомянуто ниже, вы, вероятно, предпочтете, что находится в вашем текущем файле.
Но если это то, что вы хотите (что, вероятно, так и есть), давайте продолжим. Скажем, у нас есть два хоста www.he.net
и 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
Случай 1: предпочитаю IPV4 для всех хостов
Добавить /etc/gai.conf
в следующую строку:
precedence ::ffff:0:0/96 100
После сохранения отредактированного файла (не нужно перезапускать) вы должны увидеть сетевые приложения (например, telnet
), использующие IPV4: например,
$ telnet www.ripe.net 81
Trying 193.0.6.139...
^C
$ telnet www.he.net 81
Trying 216.218.186.2...
Случай 2: предпочитаю IPV6 для конкретных хостов
Если мы хотим отдать предпочтение IPV6 только для www.he.net
его или его сети, мы можем добавить маску / префикс для всех или только для части своего IPV6-адреса /etc/gai.conf
. Например, следующая строка:
precedence 2001:470::/32 100
(после сохранения отредактированного файла) выдает
$ telnet www.ripe.net 81
Trying 193.0.6.139...
^C
$ telnet www.he.net 81
Trying 2001:470:0:76::2...
^C
Случай 3: предпочитайте IPV4 для конкретных хостов
Если мы инвертируем маску, будет ли верно обратное? Согласно @GrueMaster, добавление
precedence 2001:470::/96 100
работал на него после отключения IPV6 security.ubuntu.com
(иначе он глохнет навсегда).
Смотрите также: