Главная >> Система >> Как отключить IPv6 в Ubuntu

Как отключить IPv6 в Ubuntu

Протокол IPv6 - это новая технология, которая предоставляет намного большее адресное пространство IP адресов, более высокую безопасность и скорость работы. Но это все в идеале. IPv6 нарушает обратную совместимость с IPv4 и сейчас в большинстве случаев используется старый протокол.

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


Содержание статьи

Проверка поддержки IPv6

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

ip addr show

ipv6

В разделе для подключения 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

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

Сохраните файл, закройте его и перезапустите sysctl для обновления конфигурации:

sudo sysctl -p

Теперь, когда вы выполните ip addr show, здесь не должно быть ipv6 адреса:

ip addr show

ipv62

Способ 2. Отключить ipv6 в Grub

Вы также можете отключить IPv6 отредактировав параметры загрузки ядра в Grub. Для этого откройте файл /etc/default/grub и добавьте туда такую строку:

sudo vi /etc/default/grub

GRUB_CMDLINE_LINUX = "ipv6.disable = 1"

ipv61

Если переменная GRUB_CMDLINE_LINUX уже существует то вы можете добавить это значение в конец строки к другим параметрам. После завершения сохраните изменения и обновите конфигурацию Grub с помощью команды:

sudo update-grub2

После перезагрузки отключение ipv6 Ubuntu 16.04 будет завершено и ваша сеть станет работать быстрее.

Выводы

В этой статье мы рассмотрели как отключить ipv6 linux как видите, это очень просто. Возможно, вы и не знали раньше, но если ваш провайдер не поддерживает этот протокол, то его лучше отключить.

Видео по теме:

https://youtu.be/yM6CDK15Igo

15 комментариев к “Как отключить IPv6 в Ubuntu”

  1. Но можно наоборот включить поддержку протокола ipv6, даже если Ваш провайдер его не поддерживает. Для этого нужно установить демона miredo.
    sudo apt-get install miredo

    Ответить
    • В прошлой статье об этом упоминалось в качестве альтернативы, когда рассматривалось сравнение нового и старого протоколов, правда без названия пакета. Это может увеличить безопасность, но не увеличит скорость, так как информация об адресе по протоколу ipv6 записывается внутри пакета, передающегося по старому протоколу ipv4.

      Ответить
  2. Подскажите, как теперь убрать эти строки из ядра?
    $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

    Ответить
  3. Через sysctl наверное стоит уточнить, что на новых версиях дистрибутивов при загрузке параметры ядра читаются не sysctl, а systemd-sysctl. Файл sysctl.conf надо кидать не в /etc/ а в /etc/sysctl.d/

    Ответить
  4. Исправьте пожалуйста
    GRUB_CMDLINE_LINUX = "ipv6.disable = 1"
    на
    GRUB_CMDLINE_LINUX="ipv6.disable=1"

    без пробелов. Иначе в Ruscue Mod требует зайти, и без участия пользователя не загрузится. А если это удаленный сервер, придётся ехать к нему

    Ответить
  5. Первый метод работает на 20.0.4 ровно до перезагрузки системы. После этого всё возвращается на круги своя. То есть возвращается inet6

    Ответить
  6. Мужики а почему пусто в sudo nano /etc/sysctl.conf? Это нормально? Можно добавлять туда net.ipv6.conf.all.disable_ipv6 = 1
    net.ipv6.conf.default.disable_ipv6 = 1
    net.ipv6.conf.lo.disable_ipv6 = 1

    Ответить
    • Пустым быть не должен...

      #
      # /etc/sysctl.conf - Configuration file for setting system variables
      # See /etc/sysctl.d/ for additional system variables.
      # See sysctl.conf (5) for information.
      #

      #kernel.domainname = example.com

      # Uncomment the following to stop low-level messages on console
      #kernel.printk = 3 4 1 3

      ##############################################################3
      # Functions previously found in netbase
      #

      # Uncomment the next two lines to enable Spoof protection (reverse-path filter)
      # Turn on Source Address Verification in all interfaces to
      # prevent some spoofing attacks
      #net.ipv4.conf.default.rp_filter=1
      #net.ipv4.conf.all.rp_filter=1

      # Uncomment the next line to enable TCP/IP SYN cookies
      # See http://lwn.net/Articles/277146/
      # Note: This may impact IPv6 TCP sessions too
      #net.ipv4.tcp_syncookies=1

      # Uncomment the next line to enable packet forwarding for IPv4
      net.ipv4.ip_forward=1

      # Uncomment the next line to enable packet forwarding for IPv6
      # Enabling this option disables Stateless Address Autoconfiguration
      # based on Router Advertisements for this host
      #net.ipv6.conf.all.forwarding=1

      ###################################################################
      # Additional settings - these settings can improve the network
      # security of the host and prevent against some network attacks
      # including spoofing attacks and man in the middle attacks through
      # redirection. Some network environments, however, require that these
      # settings are disabled so review and enable them as needed.
      #
      # Do not accept ICMP redirects (prevent MITM attacks)
      #net.ipv4.conf.all.accept_redirects = 0
      #net.ipv6.conf.all.accept_redirects = 0
      # _or_
      # Accept ICMP redirects only for gateways listed in our default
      # gateway list (enabled by default)
      # net.ipv4.conf.all.secure_redirects = 1
      #
      # Do not send ICMP redirects (we are not a router)
      #net.ipv4.conf.all.send_redirects = 0
      #
      # Do not accept IP source route packets (we are not a router)
      #net.ipv4.conf.all.accept_source_route = 0
      #net.ipv6.conf.all.accept_source_route = 0
      #
      # Log Martian Packets
      #net.ipv4.conf.all.log_martians = 1
      #
      fs.file-max = 131072
      #
      vm.swappiness=10
      #
      vm.vfs_cache_pressure=100
      #
      #vm.overcommit_ratio = 100
      #vm.overcommit_memory = 2
      #
      vm.overcommit_ratio=80
      vm.overcommit_memory=1

      Хотя бы так. Скопируй и ниже добавь:

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

      Пробелы лучше убрать!

      Ответить
  7. Уважаемый!
    И чему вы, учите? GRUB_CMDLINE_LINUX = "ipv6.disable = 1" - дичайшая ошибка!!! После этого система уже нормально не стартанет! Пробелов быть не должно, получилось три разных значения "ipv6.disable", "=", "1". Прописывается вот так - "ipv6.disable=1".
    Вот пример: GRUB_CMDLINE_LINUX_DEFAULT="i8042.reset quiet nosplash debug intel_pstate=disable intel_idle.max_cstate=3 ipv6.disable=1"
    Начинающие просто проклянут вас. 🙂

    Ответить

Оставьте комментарий