Как безопасно отключить IPv6 на VPS без удаления интерфейса

Как отключить IPv6 на VPS-сервере, не удаляя интерфейс

Часто хочется отключить IPv6 полностью, но при этом не удалять сам интерфейс eth0/ens3/enp1s0 и не ломать работу облачных провайдеров (Hetzner, Vultr, DigitalOcean, Linode и др.).

Самый надёжный и чистый способ (рекомендуется)

  1. Отключаем IPv6 на всех интерфейсах через sysctl
sudo sysctl -w net.ipv6.conf.all.disable_ipv6=1
sudo sysctl -w net.ipv6.conf.default.disable_ipv6=1
  1. Делаем изменения постоянными
echo "net.ipv6.conf.all.disable_ipv6 = 1"    | sudo tee -a /etc/sysctl.conf
echo "net.ipv6.conf.default.disable_ipv6 = 1" | sudo tee -a /etc/sysctl.conf

В некоторых дистрибутивах лучше добавить ещё:

echo "net.ipv6.conf.lo.disable_ipv6 = 1" | sudo tee -a /etc/sysctl.conf
  1. Применить сразу (без перезагрузки)
sudo sysctl -p

Альтернативный способ — через GRUB (если sysctl не сработал)

sudo nano /etc/default/grub

Добавить/изменить строку:

GRUB_CMDLINE_LINUX_DEFAULT="quiet ipv6.disable=1"
# или
GRUB_CMDLINE_LINUX="ipv6.disable=1"

Затем:

sudo update-grub
sudo reboot

Проверка

ip -6 addr          # не должно быть глобальных IPv6-адресов
ping6 google.com    # должно быть "Network is unreachable"
sysctl net.ipv6.conf.all.disable_ipv6   # должно вернуть 1

Когда sysctl-способ не помогает (очень редкие случаи)

Добавьте в /etc/sysctl.d/99-disable-ipv6.conf:

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

И перезагрузите.

Удачи!