Обзор конфигурации VyOS - Иерархическая система управления
VyOS использует иерархическую систему конфигурации, которая обеспечивает гибкое и структурированное управление настройками системы.
Структура конфигурации
Конфигурация VyOS организована в виде дерева с узлами, каждый из которых может содержать значения и дочерние узлы.
Пример иерархии
interfaces {
ethernet eth0 {
address 192.168.1.1/24
description "LAN Interface"
}
ethernet eth1 {
address dhcp
description "WAN Interface"
}
}Представление через команды set
Та же конфигурация в виде команд set:
set interfaces ethernet eth0 address 192.168.1.1/24
set interfaces ethernet eth0 description 'LAN Interface'
set interfaces ethernet eth1 address dhcp
set interfaces ethernet eth1 description 'WAN Interface'Режимы работы
Операционный режим
Используется для:
- Просмотра информации о системе
- Мониторинга состояния
- Выполнения диагностических команд
- Управления системными процессами
Приглашение командной строки: vyos@vyos:~$
Режим конфигурации
Используется для:
- Изменения настроек системы
- Управления конфигурацией
- Применения и сохранения изменений
Приглашение командной строки: vyos@vyos#
Вход в режим конфигурации:
vyos@vyos:~$ configure
[edit]
vyos@vyos#Основные концепции
1. Рабочая и активная конфигурация
VyOS различает два типа конфигурации:
- Рабочая конфигурация - изменения, внесенные но еще не примененные
- Активная конфигурация - текущая работающая конфигурация системы
Изменения из рабочей конфигурации переносятся в активную после выполнения команды commit.
2. Транзакционная модель
Изменения конфигурации применяются атомарно:
- Все изменения применяются одновременно при выполнении
commit - Если какое-либо изменение приводит к ошибке, вся транзакция откатывается
- Это предотвращает частично примененные конфигурации
3. Автоматический откат
VyOS поддерживает автоматический откат для критических изменений:
vyos@vyos# commit-confirm 5Если в течение 5 минут не выполнить команду confirm, все изменения будут автоматически откачены. Это защищает от потери доступа к удаленному маршрутизатору.
4. История конфигурации
VyOS автоматически сохраняет историю всех commit-операций:
vyos@vyos# show system commit
0 2024-10-13 15:30:45 by vyos via cli
1 2024-10-13 14:15:22 by vyos via cli
2 2024-10-13 12:05:10 by vyos via cliМожно откатиться к любой предыдущей версии:
vyos@vyos# rollback 1
vyos@vyos# commitТипы узлов конфигурации
Листовые узлы
Узлы, содержащие конечные значения:
set system host-name 'vyos-router'
set interfaces ethernet eth0 address '192.168.1.1/24'Контейнерные узлы
Узлы, содержащие другие узлы:
set interfaces ethernet eth0
set service dhcp-serverМультизначные узлы
Узлы, которые могут иметь несколько значений:
set interfaces ethernet eth0 address '192.168.1.1/24'
set interfaces ethernet eth0 address '192.168.2.1/24'
set interfaces ethernet eth0 address '2001:db8::1/64'Тегированные узлы
Узлы с именованными экземплярами:
set firewall ipv4 name WAN_LOCAL rule 10
set firewall ipv4 name WAN_LOCAL rule 20
set firewall ipv4 name WAN_LOCAL rule 30Файл конфигурации
Расположение
Активная конфигурация хранится в:
/config/config.bootФормат
Конфигурация сохраняется в текстовом формате (похожем на JSON):
interfaces {
ethernet eth0 {
address 192.168.1.1/24
description "LAN Interface"
hw-id 00:0c:29:44:3b:0f
}
}
system {
host-name vyos-router
time-zone UTC
}Ручное редактирование
Не рекомендуется редактировать /config/config.boot напрямую во время работы системы. Используйте:
- Команды
setиdeleteв режиме конфигурации - Команду
loadдля загрузки конфигурации из файла
Для редактирования конфигурации офлайн (когда система выключена), можно монтировать раздел /config и редактировать config.boot.
Управление конфигурацией
Сохранение конфигурации
vyos@vyos# save
Saving configuration to '/config/config.boot'...
DoneСохранение в другой файл:
vyos@vyos# save /tmp/backup-config.bootСохранение на удаленный сервер:
vyos@vyos# save scp://user@192.0.2.100/backup/config.bootЗагрузка конфигурации
Загрузка конфигурации из файла:
vyos@vyos# load /tmp/backup-config.bootЗагрузка с удаленного сервера:
vyos@vyos# load scp://user@192.0.2.100/backup/config.bootОбъединение конфигураций
Объединение конфигурации из файла с текущей:
vyos@vyos# merge /tmp/additional-config.bootПросмотр конфигурации
Вся конфигурация
vyos@vyos# showЧасть конфигурации
vyos@vyos# show interfaces
vyos@vyos# show interfaces ethernet eth0Конфигурация в виде команд set
vyos@vyos# show interfaces ethernet eth0 | commands
set interfaces ethernet eth0 address '192.168.1.1/24'
set interfaces ethernet eth0 description 'LAN Interface'Различия конфигураций
Просмотр изменений до commit:
vyos@vyos# compare
[edit interfaces ethernet eth0]
+address 192.168.1.1/24
+description "LAN Interface"Сравнение с предыдущей версией:
vyos@vyos# compare 1Валидация конфигурации
VyOS автоматически проверяет корректность конфигурации при выполнении commit:
vyos@vyos# commit
[interfaces ethernet eth0]
Invalid address '192.168.1.256/24'
Commit failedТипы проверок:
- Синтаксическая корректность
- Правильность значений (IP-адреса, порты и т.д.)
- Зависимости между параметрами
- Конфликты конфигурации
Комментарии
Добавление комментариев к элементам конфигурации:
vyos@vyos# comment interfaces ethernet eth0 "Primary LAN interface for internal network"Комментарии отображаются при просмотре конфигурации:
vyos@vyos# show interfaces ethernet eth0
/* Primary LAN interface for internal network */
ethernet eth0 {
address 192.168.1.1/24
description "LAN Interface"
}Шаблоны конфигурации
Использование переменных
При работе с повторяющимися конфигурациями можно использовать внешние скрипты для генерации команд set.
Пример bash-скрипта:
#!/bin/bash
for i in {1..10}; do
echo "set interfaces ethernet eth0.$i vif $i"
echo "set interfaces ethernet eth0.$i address 192.168.$i.1/24"
doneСохраните вывод в файл и загрузите:
vyos@vyos# load /tmp/vlan-config.txt
vyos@vyos# commitАрхивирование конфигурации
Автоматическое архивирование
Настройка автоматического архивирования каждой commit-версии:
set system config-management commit-archive location '/config/archive'
set system config-management commit-revisions 100Удаленное архивирование
Автоматическая отправка конфигурации на удаленный сервер после каждого commit:
set system config-management commit-archive location 'scp://backup@192.0.2.100/vyos-configs'При каждом commit конфигурация будет автоматически скопирована на удаленный сервер.
Лучшие практики
1. Всегда используйте commit-confirm для удаленных изменений
vyos@vyos# commit-confirm 10Это защитит от потери доступа при ошибочной конфигурации.
2. Делайте резервные копии перед значительными изменениями
vyos@vyos# save /tmp/backup-$(date +%Y%m%d-%H%M%S).boot3. Используйте compare перед commit
vyos@vyos# compareВсегда проверяйте изменения перед их применением.
4. Документируйте конфигурацию комментариями
vyos@vyos# comment interfaces ethernet eth0 "Connected to core switch port 1/0/24"5. Используйте осмысленные имена для правил и групп
Вместо:
set firewall ipv4 name RULE1 rule 10Используйте:
set firewall ipv4 name WAN_LOCAL rule 106. Группируйте связанные изменения
Вносите связанные изменения вместе и делайте commit как одну логическую единицу.
7. Регулярно сохраняйте конфигурацию
После каждого успешного commit:
vyos@vyos# save8. Поддерживайте версионность
Используйте систему контроля версий (Git) для хранения конфигурационных файлов:
cd /config
git init
git add config.boot
git commit -m "Initial configuration"Автоматизация конфигурации
Через API
VyOS 1.5.x предоставляет REST API для автоматизации:
curl -X POST https://vyos-router/configure \
-H "Content-Type: application/json" \
-d '{
"op": "set",
"path": ["interfaces", "ethernet", "eth0", "address"],
"value": "192.168.1.1/24"
}'Через Ansible
Использование Ansible модуля:
- name: Configure VyOS interface
vyos_config:
lines:
- set interfaces ethernet eth0 address 192.168.1.1/24
- set interfaces ethernet eth0 description 'LAN Interface'Через скрипты
Создание startup скриптов в /config/scripts/:
#!/bin/vbash
source /opt/vyatta/etc/functions/script-template
configure
set interfaces ethernet eth0 description 'Auto-configured by script'
commit
saveУстранение неполадок
Конфигурация не применяется
Проверьте ошибки при commit:
vyos@vyos# commitПросмотрите подробные логи:
vyos@vyos:~$ show log | grep commitПотеря доступа после изменений
Если используете удаленное подключение, всегда используйте commit-confirm:
vyos@vyos# commit-confirm 5Откат к рабочей конфигурации
Если система не загружается после изменений, загрузитесь с предыдущего образа через GRUB или используйте:
vyos@vyos:~$ configure
vyos@vyos# rollback
vyos@vyos# commit
vyos@vyos# saveСледующие шаги
Теперь, когда вы понимаете структуру конфигурации VyOS, переходите к:
- Конфигурация - детальные руководства по настройке компонентов
- Руководство администратора - операционные команды и автоматизация
- Устранение неполадок - диагностика проблем