Dodaj to do linii jądra w module ładującym, aby całkowicie wyłączyć IPv6:
ipv6.disable=1
Jeśli używasz Grub (jeśli nie zainstalowałeś własnego programu ładującego, to używasz Grub), twoja linia jądra powinna wyglądać mniej więcej tak:
linux /boot/vmlinuz-linux root=UUID=978e3e81-8048-4ae1-8a06-aa727458e8ff ipv6.disable=1
Zalecanym podejściem do dodawania czegoś do linii jądra jest dodanie pożądanego parametru jądra do GRUB_CMDLINE_LINUX_DEFAULT
zmiennej w /etc/default/grub
pliku:
GRUB_CMDLINE_LINUX_DEFAULT="ipv6.disable=1"
Po dodaniu tego /etc/default/grub
uruchom następujące polecenie, aby ponownie wygenerować grub.cfg
:
sudo grub-mkconfig -o /boot/grub/grub.cfg
Alternatywnie, dodanie ipv6.disable_ipv6=1
zamiast tego sprawi, że stos IPv6 będzie działał, ale nie przypisze adresów IPv6 do żadnego z twoich urządzeń sieciowych.
LUB
Aby wyłączyć IPv6 przez sysctl, umieść w /etc/sysctl.conf
pliku:
net.ipv6.conf.all.disable_ipv6 = 1
Nie zapomnij skomentować hostów IPv6 w /etc/hosts
pliku:
#::1 localhost.localdomain localhost
UWAGA
ponowne uruchomienie może być wymagane dla metody sysctl, a ponowne uruchomienie jest zdecydowanie wymagane w przypadku podejścia do linii jądra.
LUB
Aby tymczasowo wyłączyć ipv6:
sysctl -w net.ipv6.conf.all.disable_ipv6 = 1
Aby tymczasowo włączyć:
sysctl -w net.ipv6.conf.all.disable_ipv6 = 0
Więc jeśli chcesz wyłączyć ipv6 w danych warunkach , napisz skrypt bash gdzieś wzdłuż tych linii:
#!/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
UWAGA
Może być konieczne wyłączenie wszystkich hostów ipv6 w /etc/hosts
pliku dla tej metody, tak jak zalecałem w poprzedniej metodzie.