Как отключить IPv6 в Ubuntu 24.04
В этом пошаговом руководстве для начинающих показано, как отключить IPv6 в Ubuntu 24.04 LTS с перезагрузкой системы или без нее.
IPv6 — это будущее интернет-протоколов. Но по некоторым причинам, например, из-за совместимости с определенными сетями, целей тестирования или проблем безопасности, или просто потому, что они не используют эту вещь, пользователи могут захотеть отключить IPv6 на своих машинах.
Отключение IPv6 в целом безопасно. На некоторых веб-сайтах и службах, оптимизированных для IPv6, может наблюдаться небольшая потеря производительности, однако вы можете повторно включить его в любое время по своему усмотрению.
Вариант 1. Отключите IPv6 с помощью параметров ядра.
Модуль ядра ipv6 имеет возможность либо отключить всю функциональность, либо отключить ipv6 на всех сетевых интерфейсах.
Вы можете либо настроить загрузчик Grub для загрузки ядра с отключенным ipv6 при каждом запуске, либо изменить параметры ядра во время выполнения, не перезагружая компьютер.
1. Используйте sysctl, чтобы отключить IPv6 без перезагрузки.
sysctl — это инструмент командной строки, настраивающий параметры ядра во время выполнения.
Чтобы отключить ipv6 на всех сетевых интерфейсах, просто используйте команду:
sudo sysctl --write net.ipv6.conf.all.disable_ipv6=1
IPv6 будет немедленно отключен и сохранится до перезагрузки компьютера. Для проверки либо используйте команду ip addr
, чтобы проверить наличие разделов «inet6
», либо запустите ip -6 addr
, чтобы проверить, есть ли какие-либо выходные данные.
По выбору вы можете отключить ipv6 для определенного сетевого интерфейса. Сначала используйте команду ip addr
, чтобы получить имена сетевых интерфейсов. В моем случае (см. скриншот выше) у меня есть сетевые интерфейсы lo
, enp0s31f6
, wlp61s0
и т. д.
Например, отключите ipv6 только для wlp61s0
, используйте команду:
sudo sysctl --write net.ipv6.conf.wlp61s0.disable_ipv6=1
А замена 1 в приведенных выше командах на 0 снова включит ipv6 для всех или определенных сетевых устройств.
Не запуская команду sysctl снова и снова, вы можете записать правила либо в файл /etc/sysctl.conf
, либо в собственный файл в папке /etc/sysctl.d/
каталог.
Чтобы отредактировать файл /etc/sysctl.conf
, используйте команду:
sudo nano /etc/sysctl.conf
Когда файл откроется в текстовом редакторе командной строки, прокрутите вниз и добавьте следующие строки, чтобы указать отключить ipv6 для всех сетевых интерфейсов, по умолчанию и ниже.
net.ipv6.conf.all.disable_ipv6=1
net.ipv6.conf.default.disable_ipv6=1
net.ipv6.conf.lo.disable_ipv6=1
После сохранения файла нажмите Ctrl+S, затем Ctrl+X, а затем запустите приведенную ниже команду, которая применит изменения немедленно:
sudo sysctl -p
Если вы используете собственный файл конфигурации (например, /etc/sysctl.d/99-ipv6.conf
) для конфигурации, затем примените его, выполнив команду ниже, чтобы указать путь к файлу конфигурации. :
sudo sysctl -p /etc/sysctl.d/99-ipv6.conf
К сожалению, из-за этой ошибки, возникшей с 2006 года, изменения, внесенные вами в /etc/sysctl.conf
или собственный файл в /etc/sysctl.d/
, не работают. НЕ сохраняется после перезагрузки.
Вам необходимо либо повторно запускать последнюю команду sysctl -p
при каждой загрузке, либо создать задание по расписанию, чтобы команда запускалась автоматически при запуске. Для этого выполните команду:
sudo crontab -e
Если будет предложено, выберите текстовый редактор nano по умолчанию, затем прокрутите вниз и добавьте строку ниже:
@reboot /usr/bin/sleep 15 && /usr/sbin/sysctl --system
Эта строка указывает на необходимость запуска команды /usr/sbin/sysctl --system
для загрузки всех файлов конфигурации с задержкой в 15 секунд при каждой загрузке. Наконец, нажмите Ctrl+S для сохранения и Ctrl+X для выхода.
2. Используйте Grub для загрузки ядра с отключенным ipv6.
Если вы не хотите использовать crontab в качестве обходного пути для загрузки конфигурации sysctl при каждой загрузке, вместо этого вы можете настроить загрузчик Grub.
Сначала подключитесь к серверу Ubuntu или нажмите Ctrl+Alt+T
, чтобы открыть терминал на рабочем столе Ubuntu, затем выполните команду, чтобы открыть файл конфигурации для Grub:
sudo nano /etc/default/grub
Когда файл откроется, добавьте либо ipv6.disable=1, либо ipv6.disable_ipv6=1 в качестве значения GRUB_CMDLINE_LINUX_DEFAULT. Наконец, нажмите Ctrl+S для сохранения и Ctrl+X для выхода.
Согласно документации ядра:
- Параметр
ipv6.disable=1
отключит всю функциональность ipv6. - В то время как
ipv6.disable_ipv6=1
сообщает НЕ назначать адреса IPv6 на каких-либо интерфейсах.
Чтобы применить изменения, вам необходимо запустить команду для повторного создания записей загрузчика.
sudo update-grub
Если вы используете Ubuntu Desktop с установленным Grub-Customizer, вы можете запустить приложение и перейти на вкладку «Общие настройки», чтобы добавить параметры ядра.
Вариант 2. Отключите IPv6 с помощью Network Manager.
Сетевой менеджер также предоставляет возможность отключить ipv6 либо для каждого устройства, либо для каждого соединения.
Сначала запустите команду для получения списка соединений:
nmcli connection show
Как показано на снимке экрана ниже, в моем случае у меня есть Wi-Fi-устройство wlp61s0
, подключенное к сети Wi-Fi elite01
, lo
— интерфейс обратной связи для связи с серверами. локальный компьютер и lxcbr0
для контейнеров.
Чтобы отключить ipv6 для каждого устройства, например, wlp61s0
, используйте команду:
nmcli device modify wlp61s0 ipv6.method "disabled"
Затем проверьте, запустив либо ip addr
, чтобы проверить все сетевые интерфейсы, либо ip addr show wlp61s0
для определенного интерфейса (в данном случае wlp61s0
).
Чтобы отключить ipv6 для каждого соединения, например, сети Wi-Fi elite01
, используйте команду:
nmcli connection modify elite01 ipv6.method "disabled"
Этот метод отключает ipv6 только для выбранного соединения, в то время как сетевому устройству все еще назначен адрес ipv6. А для Ubuntu Desktop обычно есть графические сетевые опции для выполнения той же работы.
Чтобы отменить указанные выше изменения, просто повторно запустите последние команды, заменив "disabled"
на "auto"
.