Обзор конфигурации VyOS - Иерархическая система управления

Обзор конфигурации 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).boot

3. Используйте 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 10

6. Группируйте связанные изменения

Вносите связанные изменения вместе и делайте commit как одну логическую единицу.

7. Регулярно сохраняйте конфигурацию

После каждого успешного commit:

vyos@vyos# save

8. Поддерживайте версионность

Используйте систему контроля версий (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, переходите к:

Проверено OpenNix LLC · Обновлено