Протокол IPv6 - это новая технология, которая предоставляет намного большее адресное пространство IP адресов, более высокую безопасность и скорость работы. Но это все в идеале. IPv6 нарушает обратную совместимость с IPv4 и сейчас в большинстве случаев используется старый протокол. Мы уже очень подробно рассматривали чем отличается IPv6 от IPv4, поэтому не будем повторять все еще раз.
Поскольку на данный момент IPv6 используется достаточно редко, этот протокол полностью поддерживается далеко не всем оборудованием. Если IPv6 не поддерживается вашим роутером или провайдером, то это замедлит работу сети, дольше будут определяться доменные имена сайтов и будет выполняться попытка получения IPv6 адреса, что тоже приведет к задержке. В этой небольшой заметке мы рассмотрим как отключить IPv6 в Ubuntu или других совместимых дистрибутивах.
Содержание статьи:
Проверка поддержки IPv6
Все современные дистрибутивы поддерживают IPv6 без исключений. Но чтобы убедиться что ваша локальная машина получила ipv6 адрес вы можете выполнить команду:
ip addr show
В разделе для подключения eth0 вы увидите адрес inet4 и inet6, в inet6 будет показан адрес Ipv6, который присвоен этому компьютеру роутером. Все адреса, начинающиеся с fe80 - это адреса локальных сетей. Но присутствие этого адреса еще не означает, что он поддерживается вашим провайдером. Для проверки этого пункта можно попытаться отправить ping запрос на ipv6.google.com:
ping6 ipv6.google.com
Если вы увидите привычный ответ о времени доставки пакетов, то значит все работает, но если ipv6 провайдером не поддерживается вы получите network unreachable или что-то в этом роде. В таком случае IPv6 лучше отключить чтобы интернет работал быстрее.
Как отключить IPv6 в Ubuntu
Есть несколько способов отключить IPv6 Ubuntu мы рассмотрим их все.
Способ 1. С помощью sysctl
Первый способ решения нашей задачи, это редактирование параметров ядра во время выполнения с помощью sysctl. Для отключения IPv6 выполните:
sudo sysctl -w net.ipv6.conf.all.disable_ipv6=1
sudo sysctl -w net.ipv6.conf.default.disable_ipv6=1
sudo sysctl -w net.ipv6.conf.lo.disable_ipv6=1
Вы можете также пойти другим путем и записать все эти значения в файл настройки, чтобы они применялись по умолчанию при старте системы:
sudo vi /etc/sysctl.conf
Сохраните файл, закройте его и перезапустите sysctl для обновления конфигурации:
sudo sysctl -p
Теперь, когда вы выполните ip addr show, здесь не должно быть ipv6 адреса:
ip addr show
Способ 2. Отключить ipv6 в Grub
Вы также можете отключить IPv6 отредактировав параметры загрузки ядра в Grub. Для этого откройте файл /etc/default/grub и добавьте туда такую строку:
sudo vi /etc/default/grub
Если переменная GRUB_CMDLINE_LINUX уже существует то вы можете добавить это значение в конец строки к другим параметрам. После завершения сохраните изменения и обновите конфигурацию Grub с помощью команды:
sudo update-grub2
После перезагрузки отключение ipv6 Ubuntu 16.04 будет завершено и ваша сеть станет работать быстрее.
Выводы
В этой статье мы рассмотрели как отключить ipv6 linux как видите, это очень просто. Возможно, вы и не знали раньше, но если ваш провайдер не поддерживает этот протокол, то его лучше отключить.
Видео по теме:
https://youtu.be/yM6CDK15Igo
Но можно наоборот включить поддержку протокола ipv6, даже если Ваш провайдер его не поддерживает. Для этого нужно установить демона miredo.
sudo apt-get install miredo
В прошлой статье об этом упоминалось в качестве альтернативы, когда рассматривалось сравнение нового и старого протоколов, правда без названия пакета. Это может увеличить безопасность, но не увеличит скорость, так как информация об адресе по протоколу ipv6 записывается внутри пакета, передающегося по старому протоколу ipv4.
Без пробелов в строке "ipv6.disable = 1" команда работает.
Ubuntu 16.04 x64
Подскажите, как теперь убрать эти строки из ядра?
$sudo sysctl -w net.ipv6.conf.all.disable_ipv6=1
$ sudo sysctl net.ipv6.conf.default.disable_ipv6=1
$ sudo sysctl net.ipv6.conf.lo.disable_ipv6=1
$ sudo sysctl -w net.ipv6.conf.all.disable_ipv6=0
$ sudo sysctl net.ipv6.conf.default.disable_ipv6=0
$ sudo sysctl net.ipv6.conf.lo.disable_ipv6=0
Через sysctl наверное стоит уточнить, что на новых версиях дистрибутивов при загрузке параметры ядра читаются не sysctl, а systemd-sysctl. Файл sysctl.conf надо кидать не в /etc/ а в /etc/sysctl.d/
через GRUB
GRUB_CMDLINE_LINUX_DEFAULT="ipv6.disable=1"
GRUB_CMDLINE_LINUX="ipv6.disable=1"
без пробелов, получилось
Исправьте пожалуйста
GRUB_CMDLINE_LINUX = "ipv6.disable = 1"
на
GRUB_CMDLINE_LINUX="ipv6.disable=1"
без пробелов. Иначе в Ruscue Mod требует зайти, и без участия пользователя не загрузится. А если это удаленный сервер, придётся ехать к нему
Первый метод работает на 20.0.4 ровно до перезагрузки системы. После этого всё возвращается на круги своя. То есть возвращается inet6
Для всех команд sysctl надо передавать опцию -w (write).
Ubuntu desctop 20.0.4