После установки 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
⚠️ Внимание: параметр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
Чтобы выбрать подходящий вариант, сверьтесь с таблицей ниже. В ней собраны ключевые различия трёх способов.
| Метод | Сохраняется после перезагрузки | Полное отключение стека | Сложность отката |
|---|---|---|---|
| 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.