Гид по технологиям

Как отключить и снова включить IPv6 в Linux

5 min read Сеть Обновлено 02 Dec 2025
Отключение и включение IPv6 в Linux
Отключение и включение IPv6 в Linux

Важная заметка: изменения на уровне загрузчика и initramfs требуют перезагрузки. Перед внесением изменений создайте резервные копии конфигураций и initramfs.

Почему люди отключают IPv6

IPv6 — это современная версия IP, дающая больше адресов и улучшенную маршрутизацию. Тем не менее, в некоторых сетях (особенно старых корпоративных или тестовых) поддержка IPv6 отсутствует или вызывает конфликт с существующими правилами безопасности и мониторинга. Отключение IPv6 полезно, когда нужно гарантировать использование только IPv4 для отладки, совместимости приложений или упрощения сетевой политики.

Краткое определение: IPv6 — сетевой протокол следующего поколения, заменяет IPv4; имеет 128‑битные адреса и улучшенную автоконфигурацию.

Проверка текущего состояния IPv6

Быстрые команды для проверки того, активен ли IPv6 на машине:

# Показать адреса IPv6 на интерфейсах
ip -6 addr

# Проверить, существует ли файл интерфейса IPv6 в proc (существование файла обычно означает, что ядро поддерживает IPv6)
ls /proc/net/if_inet6

# Проверить текущие значения sysctl, связанные с отключением IPv6
sysctl net.ipv6.conf.all.disable_ipv6
sysctl net.ipv6.conf.default.disable_ipv6

# Посмотреть параметры командной строки ядра (например, ipv6.disable=1)
cat /proc/cmdline

Если ip -6 addr выводит адреса (например, fe80::…), стек IPv6 работает. Если файл /proc/net/if_inet6 отсутствует или пуст, стек отключён на уровне ядра.

Основные подходы

  1. Отключить IPv6 глобально на уровне ядра (через параметр загрузчика GRUB). Требует пересборки конфигурации GRUB и перезагрузки.
  2. Отключить IPv6 локально в userland (sysctl / /etc/sysctl.d + NetworkManager). Подходит, если нужно выключать только на отдельных интерфейсах.
  3. Восстановление: обратные шаги для возврата состояния.

Отключение IPv6 через GRUB (глобально)

  1. Откройте конфигурацию GRUB:
sudo nano /etc/default/grub
  1. Найдите строку, содержащую GRUB_CMDLINE_LINUX_DEFAULT, и добавьте в конец параметр:
ipv6.disable=1

Пример:

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash ipv6.disable=1"

Терминал, в котором выделена строка аргумента Grub.

  1. Сохраните файл и обновите конфигурацию GRUB:
sudo grub-mkconfig -o /boot/grub/grub.cfg
  1. Пересоздайте initramfs (рекомендуется сделать резервную копию оригинального образа):
sudo cp /boot/initramfs-$(uname -r).img /initramfs-backup.img
sudo dracut -f
  1. Перезагрузите систему.

  2. Проверьте состояние:

ls /proc/net/if_inet6 || echo "/proc/net/if_inet6 not present"
ip -6 addr
cat /proc/cmdline

Если все прошло успешно, IPv6 отключён на уровне ядра.

Отключение IPv6 через sysctl и NetworkManager (локально, без изменения загрузчика)

Этот способ полезен, если вы хотите отключить IPv6 только на одном интерфейсе или избегаете изменения GRUB.

Шаги общие (ниже приведены отличия для Red Hat и Debian):

  1. Найдите имя интерфейса:
ip -6 addr
  1. Создайте файл конфигурации sysctl в /etc/sysctl.d, например 40-ipv6.conf:
sudo nano /etc/sysctl.d/40-ipv6.conf

Вставьте:

net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
net.ipv6.conf.YOUR_INTERFACE_NAME.disable_ipv6 = 1

Замените YOUR_INTERFACE_NAME на имя (например, enp1s0 или eth0).

  1. Примените настройки и перезапустите службу:
sudo sysctl -p /etc/sysctl.d/40-ipv6.conf
sudo systemctl restart systemd-sysctl.service
  1. Для NetworkManager сделайте изменение, чтобы Systemd/NetworkManager не переопределяли настройки:
sudo nmcli connection modify YOUR-CONNECTION-NAME ipv6.method disabled
sudo nmcli connection up YOUR-CONNECTION-NAME
  1. Проверьте:
ip -6 addr
sysctl net.ipv6.conf.YOUR_INTERFACE_NAME.disable_ipv6

Терминал: показан Ethernet интерфейс машины.

Дополнительно для Red Hat‑производных

  • После изменения sysctl и nmcli, если вы используете dracut и в initramfs присутствует поддержка модуля IPv6 на раннем этапе, пересоздайте initramfs, как показано выше, чтобы исключить загрузку модулей IPv6 во время initramfs.
  • В RHEL/CentOS/Fedora иногда требуется явно отключить модуль ipv6 в конфигурации модуля ядра; обычно параметр ipv6.disable=1 в командной строке ядра достаточно.

Дополнительно для Debian‑производных

  • Debian/Ubuntu тоже поддерживают /etc/sysctl.d/*.conf. Если вы используете ifupdown вместо NetworkManager, измените /etc/network/interfaces, добавив:
iface eth0 inet6 manual
post-up sysctl -w net.ipv6.conf.eth0.disable_ipv6=1
  • Если используется systemd-networkd, настройка делается в .network файлах (IPv6AcceptRA=no или подобное).

Терминал: подсветка интерфейса с IPv6 в Debian.

Как восстановить (включить) IPv6

Если вы отключали через GRUB — удалите параметр ipv6.disable=1 из /etc/default/grub, обновите конфигурацию и перезагрузите:

sudo nano /etc/default/grub
# удалить ipv6.disable=1
sudo grub-mkconfig -o /boot/grub/grub.cfg
sudo dracut -f   # если вы меняли initramfs ранее
sudo reboot

Если вы использовали sysctl и NetworkManager:

# Для sysctl
sudo rm /etc/sysctl.d/40-ipv6.conf  # или измените значения на 0
sudo sysctl -p
sudo systemctl restart systemd-sysctl.service

# Для NetworkManager
sudo nmcli connection modify YOUR-CONNECTION-NAME ipv6.method auto
sudo nmcli connection up YOUR-CONNECTION-NAME

# Проверить
ip -6 addr

Специфика для Red Hat и Debian при включении

  • В Red Hat: восстановите initramfs из бэкапа, если вы снимали его:
sudo cp /initramfs-backup.img /boot/initramfs-$(uname -r).img
sudo dracut -f
  • В Debian: восстановите sysctl значения net.ipv6.conf.*.disable_ipv6 в 0, затем перезагрузите службы.

Терминал: стек IPv6 снова включён на Debian.

Чего стоит остерегаться (типичные ошибки и ловушки)

  • Пропущенный пробел в командах: команды вида ip-6 или sudonano — это опечатки в исходных примерах. Используйте ip -6 и sudo nano.
  • Если вы используете cloud‑образы или провайдера с преднастроенной сетью, NetworkManager/Cloud‑init могут вернуть старые параметры после перезагрузки. Проверьте cloud‑init и конфигурации провайдера.
  • Полное отключение на уровне ядра повлияет на приложения, которые рассчитывают на доступность IPv6 (локальная связь, некоторые контейнерные сети, автоконфигурация).
  • Некоторые VPN‑клиенты и контейнерные решения (Docker/Podman/CNI) могут ожидать наличия IPv6‑ядра; тестируйте в безопасной среде.

Отладка (troubleshooting)

  1. Проверка загрузочной строки ядра:
cat /proc/cmdline | grep ipv6
  1. Проверка наличия /proc/net/if_inet6:
ls -l /proc/net/if_inet6
  1. Проверка конкретных sysctl‑параметров:
sysctl -a | grep disable_ipv6
  1. Журналы systemd для служб, связанных с sysctl и NetworkManager:
journalctl -u systemd-sysctl.service -b
journalctl -u NetworkManager -b
  1. Проверка модулей ядра (на предмет загруженных модулей ipv6):
lsmod | grep ipv6
  1. Если изменения не применяются — проверьте, не переопределяют ли их конфигурации в /etc/network, systemd-networkd, cloud-init или NM dispatcher скрипты.

Чек‑лист перед изменением

  • Сделать резервную копию /etc/default/grub
  • Сделать резервную копию /etc/sysctl.d/*.conf
  • Сделать копию initramfs: cp /boot/initramfs-$(uname -r).img /initramfs-backup.img
  • Записать текущее состояние: ip -6 addr, ls /proc/net/if_inet6, cat /proc/cmdline
  • Подготовить план отката (команды восстановления)

Чек‑лист для ролей

  • Системный администратор: тестировать изменения на тестовой виртуальной машине, документировать изменения, оповестить команды мониторинга.
  • Desktop‑пользователь: сделать бэкап /etc/hosts и настроек NM, не изменять GRUB без контроля админа.
  • DevOps/CI: проверить пайплайны, зависящие от IPv6 (интеграционные тесты, сборщики), убедиться, что контейнеры не полагаются на IPv6.

Когда НЕ стоит отключать IPv6 (контрпримеры)

  • Если сеть активно использует IPv6 (публичные сервисы или peer‑to‑peer) — отключение сломает доступ.
  • Если вы планируете миграцию на IPv6 или ожидаете роста адресного пространства — лучше решить проблемы совместимости иначе.
  • Когда используется SLAAC или DHCPv6 для критичных сетевых настроек.

Безопасность и приватность

  • Отключение IPv6 может уменьшить атакующую поверхность в сетях, где IPv6 не контролируется, но одновременно убирает возможности отдельных механизмов безопасности, завязанных на IPv6 (например, некоторые политики сетевого контроля на основе адресов).
  • Если вы управляете персональными данными пользователей, убедитесь, что изменения в сетевых логах и адресации не нарушают требования локального регулирования по хранению/обработке данных.

Быстрый эталон команд (cheat‑sheet)

# Проверка
ip -6 addr
ls /proc/net/if_inet6
sysctl net.ipv6.conf.all.disable_ipv6
cat /proc/cmdline

# Отключить глобально через GRUB
sudo nano /etc/default/grub
# добавить ipv6.disable=1
sudo grub-mkconfig -o /boot/grub/grub.cfg
sudo dracut -f
sudo reboot

# Отключить локально через sysctl + NM
sudo nano /etc/sysctl.d/40-ipv6.conf
# добавить net.ipv6.*disable_ipv6 = 1
sudo sysctl -p /etc/sysctl.d/40-ipv6.conf
sudo systemctl restart systemd-sysctl.service
sudo nmcli connection modify YOUR-CONNECTION-NAME ipv6.method disabled
sudo nmcli connection up YOUR-CONNECTION-NAME

# Включить обратно
# удалить/изменить параметры sysctl или удалить ipv6.disable=1 из GRUB

Критерии приёмки

  • После отключения: ip -6 addr не показывает глобальных/локальных IPv6‑адресов; /proc/net/if_inet6 отсутствует.
  • После включения: ip -6 addr показывает ожидаемые IPv6‑адреса; приложения, зависящие от IPv6, работают корректно.

1‑строчный глоссарий

  • IPv6: протокол Интернет‑уровня с 128‑битными адресами.
  • GRUB: загрузчик GNU GRUB, задающий параметры ядра.
  • sysctl: инструмент управления параметрами ядра в рантайме.
  • NM / NetworkManager: менеджер сетевых подключений в популярных дистрибутивах.

Короткое резюме

Отключение IPv6 в Linux можно выполнить глобально через параметр ядра ipv6.disable=1 или локально через sysctl и NetworkManager. Всегда делайте резервные копии конфигураций и проверяйте влияние на приложения и контейнерные окружения.

Image credit: Leon Seibert via Unsplash and Wikimedia Commons. All alterations and screenshots by Ramces Red.

Фотография красного знака с надписью «Интернет».

Терминал, показывающий аргумент IPv6 для Grub.

Терминал: отключённые IPv6‑адреса в /etc/hosts показаны в комментариях.

Терминал: Ethernet интерфейс без запущенного стека IPv6.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Быстро изменить размер изображения на Mac
macOS

Быстро изменить размер изображения на Mac

Найти скрытые приложения на Android
Android.

Найти скрытые приложения на Android

Исправление проблем Dota 2 в Windows 10
Игры

Исправление проблем Dota 2 в Windows 10

Отключить адаптивную яркость — Windows 10
Windows

Отключить адаптивную яркость — Windows 10

Отключить алгоритмы Facebook и Twitter
Социальные сети

Отключить алгоритмы Facebook и Twitter

Как пользоваться Facebook в браузере
Социальные сети

Как пользоваться Facebook в браузере