Додайте це до рядка ядра у завантажувачі, щоб взагалі відключити IPv6:
ipv6.disable=1
Якщо ви використовуєте Grub (якщо ви не встановили власний завантажувач, ви використовуєте Grub), ваша лінія ядра повинна виглядати приблизно так:
linux /boot/vmlinuz-linux root=UUID=978e3e81-8048-4ae1-8a06-aa727458e8ff ipv6.disable=1
Рекомендований підхід для додавання чогось до рядка ядра полягає в тому, щоб додати потрібний параметр ядра до GRUB_CMDLINE_LINUX_DEFAULT
змінної у /etc/default/grub
файлі:
GRUB_CMDLINE_LINUX_DEFAULT="ipv6.disable=1"
Після того, як ви додали це /etc/default/grub
, виконайте таку команду, щоб відновити ваш grub.cfg
:
sudo grub-mkconfig -o /boot/grub/grub.cfg
Крім того, додавання ipv6.disable_ipv6=1
замість цього збереже стек IPv6 функціональним, але не призначить IPv6 адреси жодному з ваших мережевих пристроїв.
АБО
Щоб відключити IPv6 через sysctl, помістіть у свій /etc/sysctl.conf
файл наступне :
net.ipv6.conf.all.disable_ipv6 = 1
Не забудьте прокоментувати будь-які хости IPv6 у вашому /etc/hosts
файлі:
#::1 localhost.localdomain localhost
ПРИМІТКА
для методу sysctl може знадобитися перезавантаження, і для підходу до лінії ядра, безумовно, потрібна перезавантаження .
АБО
Щоб тимчасово відключити ipv6:
sysctl -w net.ipv6.conf.all.disable_ipv6 = 1
Щоб тимчасово ввімкнути це:
sysctl -w net.ipv6.conf.all.disable_ipv6 = 0
Отже, якщо вам потрібно відключити ipv6 за заданої умови , тоді напишіть скрипт bash десь за цими рядками:
#!/bin/bash
ipv6_disabled="$(sysctl net.ipv6.conf.all.disable_ipv6 | awk '{print $NF}')"
if (connected_to_vpn &> /dev/null); then
(($ipv6_disabled)) || sysctl -w net.ipv6.conf.all.disable_ipv6=1
else
(($ipv6_disabled)) && sysctl -w net.ipv6.conf.all.disable_ipv6=0
fi
ПРИМІТКА
Вам може знадобитися відключити будь-які хости ipv6 у вашому /etc/hosts
файлі і для цього методу, як я рекомендував у попередньому методі.