Вы находитесь здесь: version6.ru » Снижение приоритета (предпочитаемости) IPv6
Это — старая версия документа!
Снижение приоритета (предпочитаемости) IPv6
Впервые опубликовано 2011-11-17.
Настроив у себя IPv6-туннель от одного из туннельных брокеров, вы вероятно заметите, что в случаях когда удалённые сайты или прочие сервера имеют как IPv4, так и IPv6-адрес, ваши компьютеры теперь будут предпочитать связываться с ними по протоколу IPv6.
Поскольку весь ваш IPv6-трафик в случае с туннельным брокером идёт через его сервер, в ряде случаев данное поведение может оказаться нежелательным. Используемый при обращении к тем же серверам напрямую по IPv4 маршрут может оказаться более коротким, и обеспечивать более высокую скорость.
В качестве примеров, где это может оказаться важным, можно назвать загрузку обновлений ОС с имеющих поддержку IPv6 файловых зеркал, а также просмотр YouTube, с недавнего времени добавившего IPv6-адреса своим серверам раздачи видео. Последнее, судя по всему, является довольно частой жалобой: «после установки туннеля YouTube тормозит», когда по итогам диагностики выясняется, что получение видео с данного сервиса теперь идёт по IPv6 через туннельный сервер в Европе, вместо (к примеру) установленных Гуглом в Москве или непосредственно у вашего провайдера кэширующих серверов его собственной CDN.
Решением проблемы может являться придание IPv6-адресам вашего туннельного брокера статуса «низкоприоритетных», т.е. используемых только при отсутствии возможности соединиться по IPv4. Такой статус по-умолчанию уже имеют 6to4 и Teredo-адреса (поэтому с ними вышеописанной проблемы в общем случае не возникает).
GNU/Linux
Необходимо отредактировать файл /etc/gai.conf
.
По-умолчанию там уже есть следующая закомментированная секция:
# label <mask> <value> # Add another rule to the RFC 3484 label table. See section 2.1 in # RFC 3484. The default is: # #label ::1/128 0 #label ::/0 1 #label 2002::/16 2 #label ::/96 3 #label ::ffff:0:0/96 4 #label fec0::/10 5 #label fc00::/7 6 #label 2001:0::/32 7
Раскомментируйте её, и добавьте в список (к примеру со значением «2», т.е. равным со 6to4-адресами приоритетом) ту IPv6-сеть вашего туннельного брокера, адрес из которой выдан вам и сконфигурирован у вас на туннельном интерфейсе. В случае с Hurricane Electric это 2001:470::/32. В результате секция будет выглядеть следующим образом:
label ::1/128 0 label ::/0 1 label 2002::/16 2 label 2001:470::/32 2 label ::/96 3 label ::ffff:0:0/96 4 label fec0::/10 5 label fc00::/7 6 label 2001:0::/32 7
Этого должно быть достаточно, чтобы IPv6 использовался только при подключении к IPv6-only сервисам, либо при явном указании требования использовать IPv6 в соответствующей программе («ssh -6», «curl -6» и т.д). В остальных случаях автоматически будет предпочитаться IPv4.
Если же вы хотите «прицельно» снизить предпочитаемость только IPv6-адресов определённых сайтов и сервисов, это можно сделать абсолютно идентичным способом, просто вместо префикса используемого вами туннеля необходимо прописать префикс используемый серверами, к которым вы подключаетесь (но не хотите более подключаться по v6). К примеру европейским Google используется префикс 2a00:1450::/32, а «глобальным» – 2001:4860::/32. В таблицу можно добавить оба, с одинаковым значением «2».
label ::1/128 0 label ::/0 1 label 2002::/16 2 label 2a00:1450::/32 2 label 2001:4860::/32 2 label ::/96 3 label ::ffff:0:0/96 4 label fec0::/10 5 label fc00::/7 6 label 2001:0::/32 7
/etc/gai.conf
определяет поведение системных функций получения IP-адресов по DNS-имени (getaddrinfo
из GNU libc), соответственно изменение в этом файле повлияет на поведение подавляющего большинства программ. Однако для вступления его в силу, все эти программы необходимо будет перезапустить.
Ссылки
- Ещё один способ: Prefer IPv4 over IPv6
Squid 3
К сожалению, для работы с DNS-именами Squid в настоящее время не пользуется системными функциями (предпочитая собственные их реализации), поэтому изменение в gai.conf
никак на его поведение не повлияет. Более того, насколько мне известно, вышеупомянутые значения по умолчанию из RFC 3484 он также игнорирует, а значит может предпочитать IPv6-соединение даже в случае туннелей 6to4 и Teredo. Однако есть способ запретить использование им IPv6 для конкретного домена. Для этого отредактируйте /etc/squid3/squid.conf
, добавив туда, к примеру, в случае с YouTube:
acl youtube dstdomain .youtube.com tcp_outgoing_address 0.0.0.0 youtube
Для всех адресов в домене youtube.com теперь будет использоваться подключение по IPv4.
Windows
P.S.
Не забудьте убрать все эти костыли настройки после того, как ваш провайдер выдаст вам нативный IPv6. :)