Настройка маршрутизации IPv6 в TrueNAS Scale — критически важный навык для интеграции вашего хранилища в современные сети. В отличие от IPv4, протокол IPv6 вносит фундаментальные изменения в принципы адресации и обнаружения соседей, что часто приводит к ошибкам при механическом переносе старых конфигураций. Это руководство предоставляет проверенные на практике инструкции для TrueNAS Scale версий 2026 года, охватывающие как безопасную настройку через веб-интерфейс, так и гибкое управление через командную строку. Вы получите готовые решения для добавления статических маршрутов, настройки шлюза и диагностики типичных проблем, что позволит избежать простоев и обеспечить стабильную работу сервисов в сетях с двойным стеком (Dual-Stack) или чисто IPv6 окружении.
Подготовка к настройке IPv6 в TrueNAS Scale: что проверить перед началом
Правильная подготовка исключает большинство проблем, связанных с несовместимостью версий или конфликтами в сетевом окружении. Перед любыми изменениями убедитесь, что ваша среда готова к работе с IPv6.
Первым делом проверьте актуальность вашей системы. Инструкции, актуальные для TrueNAS Scale 2026, могут не работать на более старых выпусках из-за изменений в API или веб-интерфейсе. Убедитесь в совместимости:
- Веб-интерфейс: Перейдите в System → General. Версия системы указана в верхней части страницы.
- Командная строка (CLI): Выполните команду
midclt call system.info | grep versionилиcat /etc/version.
Следующий шаг — анализ текущей сетевой конфигурации и окружения IPv6. Выполните базовую диагностику:
- Определите тип IPv6-адресации в вашей сети: статическая, SLAAC (Stateless Address Autoconfiguration) или DHCPv6. Это можно понять, посмотрев на адреса, назначенные другим узлам в сети, или обратившись к сетевому администратору.
- Проверьте текущую конфигурацию интерфейсов TrueNAS:
ip -6 addr showилиifconfig. - Просмотрите таблицу маршрутизации IPv6:
ip -6 route showилиnetstat -rn -f inet6. - Проверьте доступность IPv6-сети, выполнив ping до маршрутизатора:
ping6 -c 4 fe80::1%eno1(где fe80::1 — link-local адрес шлюза, а eno1 — ваш интерфейс).
Важнейшее правило безопасности: всегда создавайте резервную копию сетевых настроек перед внесением изменений. В TrueNAS Scale это делается просто:
- Веб-интерфейс: System → Backup/Restore → Create Backup. Убедитесь, что в конфигурации включены сетевые настройки.
- Командная строка: Экспортируйте конфигурацию через API:
midclt call config.saveили создайте полный бэкап системы.
Как проверить версию TrueNAS Scale и сделать бэкап сетевых настроек
Этот этап минимизирует риски и подтверждает актуальность инструкций для вашей системы. Для проверки версии через CLI используйте команду midclt call system.info, которая выведет детальную информацию, включая строку версии. В веб-интерфейсе перейдите в System → General, где версия отображается в разделе «Operating System».
Для резервного копирования конфигурации сети через веб-интерфейс выполните следующие шаги:
- Перейдите в System → Backup/Restore.
- Нажмите Create Backup.
- Введите имя файла бэкапа (например,
network_config_pre_ipv6). - Убедитесь, что опция «Include Network Configuration» отмечена.
- Нажмите Save. Файл будет сохранен и доступен для скачивания.
Через командную строку вы можете быстро создать резервную копию ключевых сетевых файлов конфигурации:
cp /data/freenas-v1.db /data/freenas-v1.db.backup_ipv6
# Или экспорт через API
midclt call config.save '{"secretseed": false}' > /tmp/truenas_config_backup.json
Эта простая процедура гарантирует возможность быстрого отката в случае, если новая конфигурация IPv6 приведет к потере сетевого доступа.
Ключевые отличия IPv6 от IPv4 в контексте TrueNAS
Понимание фундаментальных различий между IPv4 и IPv6 — залог успешной настройки. Основная ошибка — попытка настроить IPv6 по аналогии с IPv4, что приводит к неработающим маршрутам и недоступности шлюза.
Главное отличие — замена протокола ARP (Address Resolution Protocol) на NDP (Neighbor Discovery Protocol). NDP выполняет функции обнаружения соседей, автоматической конфигурации адресов и определения шлюза по умолчанию через рассылку Router Advertisement (RA) сообщений. Это означает, что в сетях с работающим RA сервер TrueNAS может автоматически получить адрес и шлюз, и явное указание шлюза в настройках интерфейса часто не требуется или даже может вызвать конфликт.
Вторая ключевая концепция — разделение адресов на типы:
- Link-local адреса (fe80::/10): Формируются автоматически на каждом интерфейсе. Используются для связи только в пределах одного канального уровня (L2 сегмента), например, для общения со шлюзом в этой же подсети. Не маршрутизируются.
- Global Unicast адреса (2000::/3): Публичные, маршрутизируемые адреса, используемые для глобальной связи. Именно их вы будете указывать в статических маршрутах для удаленных сетей.
Синтаксис также изменился: адреса длиннее, используется шестнадцатеричная система счисления с двоеточиями в качестве разделителей. Шлюз по умолчанию в IPv6 часто указывается как link-local адрес маршрутизатора, и при его ручном задании необходимо указывать и интерфейс (например, fe80::1%eno1).
NDP против ARP: почему шлюз по умолчанию настраивается иначе
В IPv4 шлюз по умолчанию всегда указывается явно в настройках интерфейса (например, 192.168.1.1). В IPv6 этот процесс часто делегирован протоколу NDP. Маршрутизатор периодически отправляет RA-сообщения, в которых, среди прочего, объявляет себя шлюзом по умолчанию для сегмента сети.
Практический вывод для администратора TrueNAS: если в вашей сети работает RA (типично для домашних сетей и многих корпоративных), поле «IPv6 Default Route» в настройках интерфейса TrueNAS следует оставить пустым. Система автоматически добавит шлюз, полученный через RA, в таблицу маршрутизации. Явное указание шлюза в этом поле может создать дублирующий маршрут и привести к нестабильной маршрутизации.
Явный шлюз требуется только в сетях со статической адресацией, где RA отключен или не содержит информации о шлюзе. В этом случае вы указываете его вручную, часто используя link-local адрес маршрутизатора с указанием интерфейса.
Link-local (fe80::) и Global Unicast адреса: что куда прописывать
Путаница между этими типами адресов — частая причина ошибок. Запомните простое правило:
- Для маршрутов на удаленные сети в поле «Gateway» формы добавления статического маршрута или в команде
ip -6 route addуказывается global unicast адрес следующего прыжка (например,2001:db8:1::1). - Сам шлюз по умолчанию (если его нужно указать явно) часто задается как link-local адрес (например,
fe80::1). Однако при добавлении такого маршрута через CLI или в некоторых конфигурационных файлах необходимо явно указать интерфейс, к которому привязан этот адрес:fe80::1%eno1.
В веб-интерфейсе TrueNAS Scale 2026 при добавлении статического маршрута, если шлюз является link-local адресом, интерфейс определяется автоматически на основе выбранного сетевого интерфейса, к которому привязан маршрут.
Настройка статической маршрутизации IPv6 через веб-интерфейс (Network → Interfaces)
Веб-интерфейс — самый безопасный и наглядный способ настройки для большинства администраторов. Все изменения, внесенные через GUI, сохраняются в конфигурационной базе данных и применяются автоматически после перезагрузки сети.
Пошаговая инструкция:
- Перейдите в Network → Interfaces.
- Выберите интерфейс, который будет работать с IPv6 (например,
eno1), и нажмите на него для редактирования. - В разделе «IP Address» вы можете добавить статический IPv6-адрес. Нажмите Add и введите адрес с маской (например,
2001:db8:100::10/64). - Ключевой момент — поле «IPv6 Default Route»:
- Оставьте его пустым, если ваш маршрутизатор отправляет RA-сообщения с информацией о шлюзе (типичный сценарий).
- Заполните его только если RA отключен и вам нужно указать шлюз явно. Обычно это link-local адрес маршрутизатора (например,
fe80::1).
- Прокрутите вниз до раздела Static Routes и нажмите Add для добавления статического маршрута.
- Сохраните настройки и примените их. Система предупредит о возможном разрыве сетевого соединения.
Добавление статического маршрута IPv6: разбор полей и типичных ошибок
При заполнении формы добавления статического маршрута обратите внимание на следующие поля:
- Destination: Сеть назначения в формате CIDR. Пример:
2001:db8:200::/48. - Gateway: IPv6-адрес следующего маршрутизатора (следующего прыжка). Это должен быть адрес, достижимый в непосредственно подключенной сети. Типичная ошибка №1: указание link-local адреса шлюза (
fe80::1) без контекста. В веб-интерфейсе TrueNAS интерфейс определяется автоматически, но если вы копируете команду для CLI, не забудьте добавить идентификатор интерфейса:fe80::1%eno1. - Description: Описание маршрута для удобства администрирования.
Типичная ошибка №2: попытка добавить маршрут по умолчанию (::/0) в этом разделе. Маршрут по умолчанию настраивается не здесь, а в основном разделе редактирования интерфейса (поле «IPv6 Default Route») или определяется автоматически через RA. Добавление ::/0 в «Static Routes» может привести к конфликту.
Пример корректной настройки для корпоративного сценария: необходимо направить трафик в подсеть 2001:db8:fab1::/64 через маршрутизатор с адресом 2001:db8:100::1.
Destination: 2001:db8:fab1::/64
Gateway: 2001:db8:100::1
Description: Route to Development VLAN
Настройка статической маршрутизации IPv6 через командную строку (CLI)
Использование командной строки дает больше контроля, подходит для автоматизации и является спасательным кругом, когда веб-интерфейс недоступен из-за ошибочной сетевой конфигурации. Доступ к CLI осуществляется через встроенную Shell в веб-интерфейсе (System → Shell) или по SSH.
Сначала всегда проверяйте текущее состояние:
- Таблица маршрутизации IPv6:
ip -6 route showилиnetstat -rn -f inet6. - Адреса на интерфейсах:
ip -6 addr show dev eno1.
Для временного добавления маршрута (действует до перезагрузки или перезапуска сети) используйте утилиту ip из пакета iproute2:
ip -6 route add 2001:db8:200::/48 via 2001:db8:100::1 dev eno1
Для добавления маршрута по умолчанию через link-local адрес шлюза:
ip -6 route add default via fe80::1 dev eno1
Эти команды идеальны для тестирования конфигурации перед ее постоянным применением.
Команда ip route add и midclt call: в чем разница и когда что использовать
Критически важно понимать разницу между этими двумя подходами:
ip -6 route add: Изменяет состояние ядра Linux напрямую. Маршрут добавляется в таблицу маршрутизации немедленно, но не сохраняется после перезагрузки системы или службы сети. Используется исключительно для тестирования и отладки.midclt call: Это вызов внутреннего API TrueNAS. Изменения, внесенные черезmidclt, записываются в конфигурационную базу данных (/data/freenas-v1.db) и становятся постоянными. Они будут повторно применены при каждой загрузке системы. Это правильный способ для production-среды.
Пример добавления постоянного статического маршрута через API TrueNAS (midclt) более сложен, так как требует изменения конфигурации интерфейса целиком. Более безопасный и рекомендуемый способ — сначала протестировать маршрут командой ip -6 route add, убедиться в его работоспособности с помощью ping6 и traceroute6, а затем добавить этот же маршрут через веб-интерфейс для постоянного хранения.
Для автоматизации можно использовать следующий Bash-скрипт, который сначала проверяет доступность шлюза, а затем добавляет временный маршрут:
#!/bin/bash
DEST_NET="2001:db8:200::/48"
NEXT_HOP="2001:db8:100::1"
INTERFACE="eno1"
# Проверка доступности шлюза
if ping6 -c 2 -I $INTERFACE $NEXT_HOP &> /dev/null; then
echo "Шлюз $NEXT_HOP доступен. Добавляю маршрут."
ip -6 route add $DEST_NET via $NEXT_HOP dev $INTERFACE
if [ $? -eq 0 ]; then
echo "Маршрут успешно добавлен (временно)."
ip -6 route show | grep "$DEST_NET"
else
echo "Ошибка при добавлении маршрута."
fi
else
echo "Ошибка: шлюз $NEXT_HOP недоступен. Проверьте конфигурацию IPv6 на интерфейсе $INTERFACE."
fi
Диагностика и решение типичных проблем маршрутизации IPv6
Даже при точном следовании инструкциям могут возникнуть проблемы. Умение их быстро диагностировать — ключевой навык. Используйте систематический подход.
Последовательность диагностики:
- Проверка адреса на интерфейсе:
ip -6 addr show dev eno1. Убедитесь, что интерфейс имеет корректный global unicast или link-local адрес. - Проверка доступности шлюза:
ping6 -c 4 -I eno1 fe80::1%eno1(для link-local) илиping6 -c 4 2001:db8:100::1. Отсутствие ответа указывает на проблему на канальном уровне (L2) или с NDP. - Проверка таблицы маршрутизации:
ip -6 route show. Ищите нужный маршрут или маршрут по умолчанию. - Трассировка пути:
traceroute6 2001:db8:200::1. Покажет, на каком прыжке обрывается связь.
Использование ping6, traceroute6 и ip -6 route для поиска узких мест
Эти три инструмента — основа диагностики.
ping6 -I <интерфейс> <адрес>: Ключевой параметр-I(интерфейс) обязателен для проверки link-local адресов и для указания, с какого интерфейса отправлять пакеты, если у системы несколько адресов. Пример:ping6 -I eno1 fe80::1%eno1.traceroute6 <удаленный_хост>: Показывает путь пакетов. Если трассировка обрывается на первом же прыжке (вашем шлюзе), проблема в локальной конфигурации или NDP. Если проходит дальше, но не доходит до цели, проблема в маршрутизации где-то выше по цепочке.ip -6 route get <адрес_назначения>: Пожалуй, самая полезная команда. Она показывает, по какому именно маршруту ядро отправит пакет до указанного адреса, какой шлюз и интерфейс будут использованы. Пример:ip -6 route get 2001:db8:200::10.
Кейс «Нет связи через шлюз»:
Причины: 1) Неверно указан адрес шлюза. 2) На маршрутизаторе заблокирован ICMPv6 (это нарушает работу NDP). 3) На интерфейсе TrueNAS отключен или не работает NDP.
Решение: Проверьте таблицу соседей NDP: ndp -an | grep eno1. В ней должен быть запись для адреса вашего шлюза со статусом «REACHABLE» или «STALE». Если записи нет, проверьте настройки фаервола на маршрутизаторе и убедитесь, что он отправляет RA или отвечает на запросы NDP.
Откат ошибочной конфигурации и восстановление доступа
Если после настройки вы потеряли доступ к веб-интерфейсу и SSH, действуйте по плану:
- Восстановление через консоль: Если у вас есть физический или IPMI-доступ к серверу, войдите в консоль. Удалите ошибочные маршруты:
ip -6 route del 2001:db8:200::/48 via 2001:db8:100::1 ip -6 route del default via fe80::1 - Сброс настроек интерфейса: В консоли TrueNAS можно временно отключить и снова включить интерфейс, чтобы сбросить все временные настройки:
После этого должен восстановиться доступ по IPv4 или автоматически полученный IPv6.ifconfig eno1 down && ifconfig eno1 up - Восстановление из бэкапа: Если вы создали бэкап конфигурации через веб-интерфейс, и у вас есть доступ к системе (например, через консоль), вы можете загрузить его обратно, используя утилиту midclt, предварительно скопировав файл на сервер. Однако проще, имея консольный доступ, просто удалить проблемные маршруты через
ip -6 route delи затем зайти в веб-интерфейс для корректировки постоянных настроек.
Интеграция с сетевой инфраструктурой: корпоративная и домашняя среда
Настройка TrueNAS не происходит в вакууме. Ее необходимо согласовать с параметрами вашей сетевой инфраструктуры.
Сценарий для корпоративной сети со статической адресацией:
Скорее всего, ваши сетевые инженеры предоставят вам блок статических адресов IPv6 (например, /64 или /48), адрес шлюза по умолчанию и, возможно, список статических маршрутов для внутренних сетей. В этом случае:
- В настройках интерфейса TrueNAS укажите предоставленный статический адрес (например,
2001:db8:100::10/64). - В поле «IPv6 Default Route» укажите предоставленный адрес шлюза (часто это link-local адрес, например,
fe80::1). - В разделе «Static Routes» добавьте все предоставленные маршруты до внутренних подсетей.
- Согласуйте настройки фаервола на корпоративном маршрутизаторе: должен быть разрешен протокол ICMPv6 для корректной работы NDP.
Сценарий для домашней сети или сети с SLAAC/DHCPv6:
Большинство домашних роутеров и многие корпоративные разворачивают IPv6 с использованием SLAAC или DHCPv6. В этом случае настройка TrueNAS максимально проста:
- В настройках интерфейса оставьте поле «IP Address» пустым для IPv6 (или удалите все статические записи).
- Поле «IPv6 Default Route» также оставьте пустым.
- Установите флажок «Enable DHCPv6» (если используется DHCPv6) или убедитесь, что система настроена на автоматическую конфигурацию (это поведение по умолчанию при получении RA).
- После сохранения TrueNAS автоматически получит адрес и шлюз от маршрутизатора. Проверьте это командами
ip -6 addr showиip -6 route show.
Автоматизация настройки IPv6-маршрутов для DevOps
Для управления парком серверов TrueNAS или включения настройки сети в процесс автоматического развертывания (Infrastructure as Code) необходимы инструменты автоматизации.
Использование Ansible: Сообщество разрабатывает коллекцию community.truenas для управления TrueNAS через API. Пример playbook для добавления статического IPv6-адреса и маршрута (концептуально, так как конкретные модули могут меняться):
---
- name: Configure IPv6 on TrueNAS Scale
hosts: truenas_servers
tasks:
- name: Ensure static IPv6 address is present on interface
community.truenas.truenas_interface:
state: present
name: eno1
ipv6_addresses:
- address: "2001:db8:100::10/64"
ipv6_default_route: "fe80::1"
# Добавление статического маршрута может потребовать отдельного модуля
# или выполнения через команду midclt
Использование CLI API (midclt) в Bash-скриптах: Для массового применения конфигурации можно написать скрипт, который подключается к нескольким серверам по SSH и выполняет API-вызовы. Пример фрагмента скрипта, который добавляет статический маршрут через midclt (требует глубокого знания структуры API TrueNAS):
#!/bin/bash
SERVER_LIST=("truenas1" "truenas2")
for SERVER in "${SERVER_LIST[@]}"; do
ssh admin@$SERVER << 'EOF'
# Команда для изменения конфигурации интерфейса через midclt
# Внимание: Это пример, реальная команда зависит от структуры API.
# Сначала нужно получить текущую конфигурцию интерфейса, модифицировать ее и отправить обратно.
CONFIG=$(midclt call interface.query | jq '.[] | select(.name=="eno1")')
# ... модификация CONFIG для добавления маршрута ...
# midclt call interface.update $ID "$CONFIG"
echo "Конфигурация на $SERVER обновлена."
EOF
done
Более надежный подход для автоматизации — использовать официальный TrueNAS API (RESTful) напрямую из Python, Go или другого языка программирования, что позволяет создавать сложные инструменты управления конфигурацией. Однако для большинства задач начать стоит с тестирования команд через веб-интерфейс и CLI, а затем переноса рабочей последовательности действий в скрипты или playbook Ansible.
Для комплексного управления сетевыми сервисами в контейнеризированной среде рекомендуем ознакомиться с нашим руководством по продвинутому Docker, где подробно разбираются сетевые модели, включая bridge и overlay, что может быть полезно при развертывании служб на самом TrueNAS. Если же вы рассматриваете оркестрацию нескольких нод, материал про Docker Swarm 2026 предлагает простую альтернативу Kubernetes.