Добавьте это в строку вашего ядра в загрузчике, чтобы полностью отключить 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
файле для этого метода, как я рекомендовал в предыдущем методе.