IPv6 (Русский)

From ArchWiki
Jump to: navigation, search

Ссылки по теме

Tango-preferences-desktop-locale.pngЭта страница нуждается в сопроводителеTango-preferences-desktop-locale.png

Статья не гарантирует актуальность информации. Помогите русскоязычному сообществу поддержкой подобных страниц. См. Команда переводчиков ArchWiki

По умолчанию в Arch Linux включена поддержка IPv6. Если вы ищете информацию о туннелировании IPv6 через брокера, смотрите IPv6 tunnel broker setup.

Privacy Extensions

В этом разделе описано, как включить Privacy Extensions для stateless-автонастройки адресов IPv6 в соответствии с RFC 4941.

Добавьте следующие строки в /etc/sysctl.d/40-ipv6.conf:

# Enable IPv6 Privacy Extensions
net.ipv6.conf.all.use_tempaddr = 2
net.ipv6.conf.default.use_tempaddr = 2
net.ipv6.conf.nic0.use_tempaddr = 2
...
net.ipv6.conf.nicN.use_tempaddr = 2

Где nic0...nicN — имена ваших сетевых интерфейсов (параметры all.use_tempaddr и default.use_tempaddr не будут применены к сетевым интерфейсам, которые уже определены в системе на момент выполнения файла настроек sysctl).

После перезагрузки Privacy Extensions будут включены, а сетевым интерфейсам будут присваиваться дополнительные временные адреса IPv6.

dhcpcd

С версии dhcpcd 6.4.0 добавлена опция slaac private, которая включает функцию присвоения стабильных частных адресов вместо адресов, основанных на MAC-адресе интерфейса, реализуя RFC 7217 (коммит). Дополнительная настройка не требуется, если, конечно, вы не хотите изменять адрес IPv6 при каждом новом подключении к сети.

NetworkManager

NetworkManager не учитывает настройки, размещенные в /etc/sysctl.d/40-ipv6.conf. Вы можете убедиться в этом, выполнив $ ip -6 addr show имя_интерфейса после перезагрузки: вы увидите, что кроме обычного адреса временный адрес scope global temporary не отображается.

Как это исправить смотрите на странице NetworkManager#Enable IPv6 Privacy Extensions.

Примечание: Может показаться, что временный адрес IPv6, созданный при включении Privacy Extensions, никогда не обновляется (он не переходит в статус deprecated после истечения времени жизни valid_lft). На самом деле это не совсем так: через больший промежуток времени адрес рано или поздно изменится.

Сетевое обнаружение

Пинг по мультивещательному адресу ff02::1 заставит все хосты в локальной сети ответить. При этом должен быть указан конкретный сетевой интерфейс:

$ ping6 ff02::1%eth0

Аналогично, если сделать пинг по адресу ff02::2, то вам ответят только маршрутизаторы, которые присутствуют в локальной сети.

Если вы добавите опцию -I your-global-ipv6 в пинг-запрос, локальные хосты ответят с использованием локальных же адресов. При этом вы можете не указывать сетевой интерфейс:

$ ping6 -I 2001:4f8:fff6::21 ff02::1

Статический адрес

Иногда использование статического адреса может быть применено в качестве одной из мер обеспечения безопасности. Например, если ваш локальный маршрутизатор использует сетевое обнаружение или radvd (RFC 2461), вашему интерфейсу будет автоматически присвоен адрес, который содержит часть MAC-адреса сетевого интерфейса (используя stateless-автонастройку IPv6). Это может быть не слишком хорошо для безопасности, так как позволяет без труда отслеживать систему даже если часть IPv6-адреса сменилась.

Чтобы присвоить статический IP-адрес при помощи netctl, используйте шаблон профиля /etc/netctl/examples/ethernet-static. Следующие строки особенно важны:

# For IPv6 static address configuration
IP6=static
Address6=('1234:5678:9abc:def::1/64' '1234:3456::123/96')
Routes6=('abcd::1234')
Gateway6='1234:0:123::abcd'

IPv6 и Comcast

dhcpcd -4 и dhcpcd -6 работают с Motorola SURFBoard 6141 и Realtek RTL8168d/8111d, но не одновременно для каждого интерфейса. Запуск с ключом -6 не станет работать, если клиент уже был запущен с опцией -4, даже после сброса сетевого интерфейса. И, когда это произойдет, интерфейсу будет присвоен адрес с маской /128. Используйте следующие команды:

dhclient -4 enp3s0
dhclient -P -v enp3s0

Опция -P получает аренду только префикса IPv6. С опцией -v содержимое /var/lib/dhclient/dhclient6.leases будет выведено в стандартный поток вывода:

Bound to *:546
Listening on Socket/enp3s0
Sending on   Socket/enp3s0
PRC: Confirming active lease (INIT-REBOOT).
XMT: Forming Rebind, 0 ms elapsed.
XMT:  X-- IA_PD a1:b2:cd:e2
XMT:  | X-- Requested renew  +3600
XMT:  | X-- Requested rebind +5400
XMT:  | | X-- IAPREFIX 1234:5:6700:890::/64

IAPREFIX является необходимым значением. Подставьте 1 перед слэшем, чтобы адрес стал корректным:

ip -6 addr add 1234:5:6700:890::1/64 dev enp3s0

Отключение IPv6

Примечание: Сборка ядра Linux в Arch поддерживает IPv6 напрямую, поэтому вы не можете отключить модуль, просто добавив его в черный список.

Tango-view-fullscreen.pngЭта статья или раздел нуждается в расширенииTango-view-fullscreen.png

Причина: Добавить объяснение, зачем может понадобиться отключение IPv6 (например, из-за сетевых экранов или некачественных DNS). (обсуждение: Talk:IPv6 (Русский)#)

Отключение функциональности

Добавление опции ipv6.disable=1 в параметрах ядра отключает весь стек IPv6, что в большинстве случаев помогает добиться желаемого результата. Смотрите параметры ядра для получения дополнительной информации.

Добавив вместо этого ipv6.disable_ipv6=1, вы оставите стек IPv6 работающим, но при этом адреса IPv6 просто не будут присваиваться сетевым интерфейсам.

Также вы можете отключить присвоение адреса IPv6 конкретным сетевым интерфейсам, добавив следующие строки в файл настроек sysctl /etc/sysctl.d/40-ipv6.conf:

# Disable IPv6
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.nic0.disable_ipv6 = 1
...
net.ipv6.conf.nicN.disable_ipv6 = 1

Вы должны явно перечислить здесь все сетевые интерфейсы, для которых требуется отключить IPv6, так как опция all.disable_ipv6 не будет применена к сетевым интерфейсам, которые уже включены на момент выполнения инструкций из файла настроек.

Обратите также внимание, что при отключении IPv6 таким образом, вы должны закомментировать все хосты IPv6 в вашем файле /etc/hosts:

#<ip-address> <hostname.domain.org> <hostname>
127.0.0.1 localhost.localdomain localhost
#::1 localhost.localdomain localhost

В противном случае могут появляться ошибки подключения, если при определении адреса произошло разрешение на адрес IPv6, который недоступен.

Другие программы

Отключение IPv6 в ядре не предотвращает другие программы от попытки использования версии IPv6. В большинстве случаев это не приводит к проблемам, однако, если они все-таки появляются, вам остается лишь искать в man-страницах или на просторах сети способ отключить эту функциональность.

dhcpcd

Например, dhcpcd будет продолжать пытаться запрашивать настройки сети у маршрутизаторов IPv6 (т. н. Router solicitation). Чтобы отключить это, добавьте следующие строки в /etc/dhcpcd.conf, как указано в man-странице dhcpcd.conf (5):

noipv6rs
noipv6

NetworkManager

Tango-mail-mark-junk.pngЭта статья или раздел нуждается в улучшении грамматики, форматирования или стиля.Tango-mail-mark-junk.png

Причина: Нужен способ отключения без графического интерфейса. (обсуждение: Talk:IPv6 (Русский)#)

Чтобы отключить IPv6 в NetworkManager, вызовите контекстное меню значка статуса сети и перейдите в Edit Connections > Wired > Network name > Edit > IPv6 Settings > Method, затем выберите Method как Ignore/Disabled.

ntpd

Следуя совету из раздела Systemd#Drop-in snippets, измените способ запуска ntpd.service:

# systemctl edit ntpd.service

Это создаст drop-in сниппет, который будет запускаться вместо стандартного ntpd.service. Флаг -4 отключает использование IPv6 демоном ntp. Поместите следующее в drop-in сниппет:

[Service]
ExecStart=
ExecStart=/usr/bin/ntpd -4 -g -u ntp:ntp

Здесь сначала очищается значение ExecStart, а затем устанавливается новая команда.

Смотрите также