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

После установки Proxmox VE на сервере по умолчанию активен стек IPv6: интерфейсы получают link-local адреса вида fe80::, а в выводе ip a появляются записи, которые в сети без IPv6-маршрутизации не нужны и иногда мешают — например, когда сервис пытается резолвить имена через AAAA-записи и получает таймауты. Отключить протокол можно несколькими способами, и выбор зависит от того, нужно ли выключить IPv6 только на хосте, в гостевых системах или полностью на уровне ядра.

В этой статье разберём три рабочих метода: временное отключение через sysctl, постоянное отключение через конфигурацию и полное выключение стека через параметр загрузки ядра. Также покажем, как проверить результат и вернуть всё обратно, если что-то пошло не так.

Когда IPv6 в Proxmox действительно стоит отключать

Сам по себе активный IPv6 не вредит гипервизору. Однако есть сценарии, где его отключение упрощает администрирование: сеть провайдера или дата-центра не поддерживает IPv6, мониторинг выводит «лишние» адреса, а логи засоряются записями о neighbor discovery. Отдельный случай — почтовые серверы в контейнерах LXC, где некорректно настроенный IPv6 приводит к отклонению писем из-за отсутствия PTR-записи.

Перед отключением убедитесь, что в вашей инфраструктуре нет сервисов, которые уже используют IPv6-адресацию. Проверить это можно командой ss -tlnp | grep ::: — она покажет процессы, слушающие IPv6-сокеты.

Способ 1: временное отключение через sysctl

Этот метод действует до перезагрузки и удобен для проверки, не сломается ли что-то после отключения протокола. Выполните на хосте Proxmox три команды:

sysctl -w net.ipv6.conf.all.disable_ipv6=1

sysctl -w net.ipv6.conf.default.disable_ipv6=1

sysctl -w net.ipv6.conf.lo.disable_ipv6=1

Первая команда отключает IPv6 на всех существующих интерфейсах, вторая — на интерфейсах, которые появятся позже (например, новые мосты vmbr), третья — на loopback. После выполнения проверьте результат командой ip a: адреса inet6 должны исчезнуть из вывода.

Если адреса остались, возможная причина — интерфейс управляется NetworkManager или другим сервисом, который переинициализирует настройки. В чистой установке Proxmox такое встречается редко, но на кастомизированных системах проверьте, чем управляется интерфейс.

Способ 2: постоянное отключение через конфигурацию sysctl

Чтобы настройка переживала перезагрузку, создайте отдельный файл в каталоге /etc/sysctl.d/. Например:

nano /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

Примените настройки командой sysctl --system или просто перезагрузите сервер. Такой подход считается «мягким»: стек IPv6 в ядре остаётся, но не назначает адресов интерфейсам.

☑️ Отключение IPv6 через sysctl

Выполнено: 0 / 5
⚠️ Внимание: параметр net.ipv6.conf.all.disable_ipv6 не всегда распространяется на интерфейсы, созданные после его применения. Именно поэтому строка с default обязательна — не сокращайте конфигурацию до одной строки.

Способ 3: полное отключение стека через GRUB

Если требуется выключить IPv6 на уровне ядра — например, чтобы модуль даже не инициализировался, — используется параметр загрузки. Откройте файл /etc/default/grub и найдите строку GRUB_CMDLINE_LINUX_DEFAULT. Добавьте в неё параметр:

GRUB_CMDLINE_LINUX_DEFAULT="quiet ipv6.disable=1"

После правки обновите конфигурацию загрузчика и перезагрузите сервер:

update-grub

reboot

На системах с systemd-boot (если Proxmox установлен в режиме UEFI с ZFS) вместо update-grub используется proxmox-boot-tool refresh, а параметр добавляется в файл /etc/kernel/cmdline. Уточните используемый загрузчик в документации к вашей версии Proxmox — это зависит от способа установки.

Чем отличается ipv6.disable=1 от sysctl-метода

Параметр ядра полностью отключает модуль IPv6: интерфейсы не получают даже link-local адресов, а попытка загрузить модуль вручную игнорируется. Метод sysctl лишь запрещает назначение адресов, но сам стек остаётся загруженным. Для большинства задач достаточно sysctl; отключение через GRUB оправдано при жёстких требованиях к минимизации сетевого стека.

📊 Какой способ отключения IPv6 в Proxmox вы используете?
Через sysctl (временно)
Через /etc/sysctl.d/ (постоянно)
Через параметр ядра в GRUB
Не отключаю, IPv6 нужен

Сравнение методов отключения IPv6

Чтобы выбрать подходящий вариант, сверьтесь с таблицей ниже. В ней собраны ключевые различия трёх способов.

Метод Сохраняется после перезагрузки Полное отключение стека Сложность отката
sysctl -w Нет Нет Мгновенный (значение 0)
/etc/sysctl.d/ Да Нет Удалить файл и применить
Параметр GRUB Да Да Правка конфига + перезагрузка
Отключение RA на роутере Зависит от сети Нет Настройка сетевого оборудования

Для большинства сценариев оптимален второй метод: он обратим без перезагрузки и не требует вмешательства в загрузчик.

Отключение IPv6 в гостевых системах и контейнерах

Настройки хоста не распространяются автоматически на виртуальные машины KVM — внутри каждой гостевой ОС IPv6 отключается отдельно теми же средствами (sysctl или параметр ядра для Linux-гостей, настройки адаптера для Windows). Это важный момент: администраторы иногда отключают протокол на хосте и удивляются, почему внутри ВМ он продолжает работать.

С контейнерами LXC ситуация иная: они используют ядро хоста. Если IPv6 отключён через параметр GRUB, контейнеры тоже потеряют IPv6. При отключении через sysctl поведение зависит от того, применяются ли настройки к namespace контейнера — надёжнее задать параметры в конфигурации самого контейнера или не назначать ему IPv6-адрес в разделе сети интерфейса Proxmox.

  • 🔧 В веб-интерфейсе Proxmox откройте контейнер → Network и уберите значения из полей IPv6.
  • 🖥️ Для ВМ с Linux внутри гостевой системы примените тот же sysctl-конфиг.
  • 🪟 Для ВМ с Windows отключите протокол в свойствах сетевого адаптера (снимите галочку IPv6).
  • 🔍 После изменений проверяйте вывод ip a или ipconfig внутри гостя.

Проверка результата и откат изменений

После применения любого из методов выполните базовую диагностику. Команда ip a | grep inet6 не должна возвращать строки. Дополнительно проверьте, что модуль не загружен (для метода GRUB): lsmod | grep ipv6. И убедитесь, что веб-интерфейс Proxmox, SSH и кластерная коммуникация corosync работают как прежде.

Для отката при sysctl-методе удалите файл /etc/sysctl.d/99-disable-ipv6.conf и выполните sysctl --system либо перезагрузитесь. При методе GRUB уберите параметр ipv6.disable=1, снова выполните update-grub и перезагрузите сервер. Оба действия полностью обратимы.

⚠️ Внимание: на кластерах Proxmox перед отключением IPv6 проверьте, что ноды общаются по IPv4. Если в /etc/hosts или конфигурации corosync прописаны IPv6-адреса, отключение протокола может разорвать кластерную связь.
  • ✅ Проверьте /etc/hosts на наличие IPv6-записей перед отключением.
  • ✅ Убедитесь, что SSH-доступ работает по IPv4 — иначе можно потерять связь с сервером.
  • ✅ Делайте изменения сначала на тестовой ноде, а не на боевом кластере.
⚠️ Внимание: при удалённом доступе к серверу выполняйте изменения сетевых настроек только при наличии запасного канала управления (IPMI, iLO, KVM-консоль хостера). Ошибка в сетевой конфигурации может отрезать SSH-доступ.

Часто задаваемые вопросы

Отключится ли IPv6 в контейнерах LXC автоматически после настройки хоста?

Не всегда. При отключении через параметр ядра ipv6.disable=1 — да, поскольку контейнеры используют ядро хоста. При методе sysctl поведение зависит от конфигурации сети контейнера, поэтому надёжнее убрать IPv6-адреса в настройках сети самого контейнера.

Сломается ли веб-интерфейс Proxmox после отключения IPv6?

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

Нужно ли перезагружать сервер после правки /etc/sysctl.d/?

Нет, достаточно выполнить sysctl --system — настройки применятся на лету. Перезагрузка требуется только при отключении через параметр загрузки ядра.

Почему после отключения IPv6 адреса fe80:: всё равно видны?

Возможные причины: не задан параметр net.ipv6.conf.default.disable_ipv6 для новых интерфейсов, настройки не применены командой sysctl --system, либо интерфейсом управляет сторонний сетевой сервис. Проверьте все три пункта последовательно.

Можно ли отключить IPv6 только для одного интерфейса?

Да. Вместо all укажите имя конкретного интерфейса, например: net.ipv6.conf.vmbr0.disable_ipv6=1. Остальные интерфейсы продолжат работать с IPv6.