Работа с конфигурацией системы#
Операционная система использует унифицированный формат файла для описания всех параметров своей конфигурации:
/config/config.boot.
Это обеспечивает легкую работу с конфигурацией системы в части создания шаблонов, резервного копирования и восстановления. Операционная система может быть перенесена на другое устройство с сохранением текущих настроек посредством создания копий определенных конфигурационных файлов.
Типы конфигурации системы#
В контексте операционной системы существует три основных типа конфигурации:
Активная конфигурация - конфигурация системы, которая загружена и используется в настоящий момент. Любое изменение конфигурации должно быть применено для включения в активную конфигурацию.
Рабочая конфигурация - конфигурация системы, которая подвергается изменениям в режиме Конфигурирования. Изменения, внесенные в рабочую конфигурацию не вступят в силу до их применения с помощью команды
commit
, после ввода которой конфигурация становится активной.Хранимая конфигурация - конфигурация, записанная в файл с помощью команды
save
. Такой подход позволяет безопасно хранить конфигурацию для последующего использования. В системе может храниться несколько файлов с конфигурацией. Конфигурация по умолчанию или загруженная конфигурация хранится в файле /config/config.boot.
Просмотр активной конфигурации системы#
В операционной системе информацию об активной конфигурации системы можно получить различными способами:
Вывод информацию в виде иерархически упорядоченных секций и параметров в их составе
Вывод полного списка всех команд, с помощью которых была сформирована активная конфигурация
Вывод информации в формате JSON
Вывод информации в формате JSON иерархического вида (секции и параметры упорядочены по вложенности)
Для получения информации об активной конфигурации системы в виде иерархически упорядоченных секций и параметров в их составе используйте команду:
- • show configuration#
Пример работы команды show configuration:
admin@fakel:~$ show configuration
interfaces {
ethernet eth0 {
address dhcp
hw-id 00:53:00:00:aa:01
}
loopback lo {
}
}
service {
ssh {
port 22
}
}
system {
config-management {
commit-revisions 20
}
console {
device ttyS0 {
speed 9600
}
}
login {
user fakel {
authentication {
encrypted-password ****************
}
level admin
}
}
ntp {
server 0.pool.ntp.org {
}
server 1.pool.ntp.org {
}
server 2.pool.ntp.org {
}
}
syslog {
global {
facility all {
level notice
}
facility protocols {
level debug
}
}
}
}
Для вывода полного списка всех команд, с помощью которых была сформирована активная конфигурация, используйте команду:
- • show configuration commands#
Пример работы команды show configuration commands:
admin@fakel:~$ show configuration commands
set interfaces ethernet eth0 address 'dhcp'
set interfaces ethernet eth0 hw-id '00:53:dd:44:3b:0f'
set interfaces loopback 'lo'
set service ssh port '22'
set system config-management commit-revisions '20'
set system console device ttyS0 speed '9600'
set system login user fakel authentication encrypted-password '$6$Vt68...QzF0'
set system login user fakel level 'admin'
set system ntp server '0.pool.ntp.org'
set system ntp server '1.pool.ntp.org'
set system ntp server '2.pool.ntp.org'
set system syslog global facility all level 'notice'
set system syslog global facility protocols level 'debug'
Подсказка
Используйте набор команд show configuration commands | strip-private
в случае, если вы хотите скрыть конфиденциальную информацию, содержащуюся в конфигурации при ее отображении. Это может понадобиться в случае, если вы захотите передать или опубликовать снимок конфигурации кому-либо.
Для просмотра активной конфигурации в формате JSON, используйте команду:
- • show configuration json#
Пример работы команды show configuration json:
admin@fakel:~$ show configuration json
{"interfaces": {"ethernet": {"eth0": {"address": ["192.0.2.11/24", "192.0.2.35/24"], "hw-id": "52:54:00:48:a0:c6"}, "eth1": {"address": ["203.0.113.1/24"], "hw-id": "52:54:00:fc:50:0b"}}, "loopback": {"lo": {}}}, "protocols": {"static": {"route": {"0.0.0.0/0": {"next-hop": {"192.0.2.254": {}}}}}}, "service": {"ssh": {"disable-host-validation": {}}}, "system": {"config-management": {"commit-revisions": "100"}, "console": {"device": {"ttyS0": {"speed": "115200"}}}, "host-name": "r11-fakel", "login": {"user": {"fakel": {"authentication": {"encrypted-password": "$6$Vt68...F0", "plaintext-password": "", "public-keys": {"admin@fakel": {"key": "AAAAxxx=", "type": "ssh-rsa"}}}}}}, "name-server": ["203.0.113.254"], "ntp": {"server": {"time1.fakel.net": {}, "time2.fakel.net": {}, "time3.fakel.net": {}}}, "syslog": {"global": {"facility": {"all": {"level": "info"}, "protocols": {"level": "debug"}}}}, "time-zone": "America/New_York"}}
Для просмотра активной конфигурации в формате JSON иерархического вида (секции и параметры упорядочены по вложенности), используйте команду:
- • show configuration json pretty``.#
Пример работы команды show configuration json pretty:
admin@fakel:~$ show configuration json pretty
{
"interfaces": {
"ethernet": {
"eth0": {
"address": [
"192.0.2.11/24",
"192.0.2.35/24"
],
"hw-id": "52:54:00:48:a0:c6"
},
"eth1": {
"address": [
"203.0.113.1/24"
],
"hw-id": "52:54:00:fc:50:0b"
}
},
"loopback": {
"lo": {}
}
},
"protocols": {
"static": {
"route": {
"0.0.0.0/0": {
"next-hop": {
"192.0.2.254": {}
}
}
}
}
},
"service": {
"ssh": {
"disable-host-validation": {}
}
},
"system": {
"config-management": {
"commit-revisions": "100"
},
"console": {
"device": {
"ttyS0": {
"speed": "115200"
}
}
},
"host-name": "r11-fakel",
"login": {
"user": {
"fakel": {
"authentication": {
"encrypted-password": "$6$Vt68...F0",
"plaintext-password": "",
"public-keys": {
"admin@fakel": {
"key": "AAAAxxx=",
"type": "ssh-rsa"
}
}
}
}
}
},
"name-server": [
"203.0.113.254"
],
"ntp": {
"server": {
"time1.fakel.net": {},
"time2.fakel.net": {},
"time3.fakel.net": {}
}
},
"syslog": {
"global": {
"facility": {
"all": {
"level": "info"
},
"protocols": {
"level": "debug"
}
}
}
},
"time-zone": "Asia/Novosibirsk"
}
}
Представленные выше сценарии использования команды show
работают когда операционная система находится в режиме Администрирования.
В режиме Конфигурирования данные сценарии не работают, однако есть способ получить доступ к командам режима Администрирования когда операционная система находится в режиме Конфигурирования.
Подробная информации об использовании команд режима Администрирования из режима Конфигурирования представлена в разделе Доступ к командам режима Администрирования через режим Конфигурирования.
Редактирование рабочей конфигурации#
Для редактирования рабочей конфигурации операционной системы используются команды set
и delete
.
Команды set
и delete
работают, когда операционная система находится в режиме Конфигурирования.
Чтобы установить значение существующего параметра в конфигурации или добавить новый параметр, используется команда:
- • set#
Команда set
имеет иерархическую структуру. Выполняемые команды выстраиваются в последовательную цепочку, например set interface ethernet eth0 address 192.0.2.100/24
.
При этом вся введенная информация, являющаяся избыточной для данного уровня, удаляется из введенной цепочки команд.
Команды относятся к уровню, на котором они выполняются:
Операционная система находится на самом верхнем уровне иерархической структур
fakel@admin# set interface ethernet eth0 address 192.0.2.100/24
[edit]
Пример выше демонстрирует работу команды set interface ethernet eth0 address 192.0.2.100/24
, которая выполняет настройку адреса для сетевого интерфейса eth0 когда операционная система находится на самом верхнем уровне иерархической структуры.
Операционная система находится на уровне иерархической структуры, который отвечает за конфигурацию сетевого интерфейса eth0
admin@fakel# set address 203.0.113.6/24
[edit interfaces ethernet eth0]
Пример выше демонстрирует работу команды set address 192.0.2.100/24
, которая выполняет настройку адреса для сетевого интерфейса eth0 когда операционная система находится на уровне иерархической структуры, который отвечает за конфигурацию сетевого интерфейса eth0.
Обе команды, представленные в примерах выше, идентичны, но выполняются на разных уровнях иерархической структуры.
Чтобы удалить запись из конфигурации, используйте команду:
- • delete#
Выполнение команды delete
также приводит к удалению всех нижестоящих уровней в иерархической структуре.
При удаление записи элемента конфигурации его настройки переводятся к значению по умолчанию.
admin@fakel# delete address 192.0.2.100/24
Пример выше демонстрирует работу команды delete address 192.0.2.100/24
, которая удаляет IP адрес сетевого интерфейса eth0:
Чтобы применить изменения, которые были внесены в конфигурацию системы используйте команду:
- • commit#
Чтобы сохранить изменения, которые были внесены в конфигурацию системы используйте команду:
- • save#
Использование команды save
без дополнительных параметров сохраняет конфигурацию системы в хранилище по умолчанию.
admin@fakel# save
Saving configuration to '/config/config.boot'...
Done
По умолчанию конфигурация системы храниться в файле, расположенном по следующему пути:
/config/config.boot
Если необходимо разместить конфигурационный файл в другом месте, в качества хранилища можно указать локальный путь или адреса SCP, FTP и TFTP серверов.
admin@fakel# save tftp://192.168.0.100/fakel.config.boot
Saving configuration to 'tftp://192.168.0.100/fakel-test.config.boot'...
######################################################################## 100.0%
Done
Пример выше демонстрирует работу команды save tftp://192.168.0.100/fakel.config.boot
, которая сохраняет конфигурацию системы в файл fakel.config.boot на tftp сервере 192.168.0.100.
Для выхода из режима Конфигурирования без применения внесенных изменений в конфигурации системы используйте команду:
- • exit discard``.#
fakel@admin# exit discard
exit
fakel@admin:~$
Команда exit discard
, сбрасывает все изменения, внесенные в рабочую конфигурацию.
Подсказка
При использовании команды exit
для выхода из режима Конфигурирования без применения внесенных изменений, операционная система выдает сообщение с ошибкой.
Чтобы временно применить изменения, которые были внесены в конфигурацию, и установить период времени в минутах, необходимый для проверки корректности полученной конфигурации используйте команду:
- • commit-confirm#
Команда confirm
должна быть выполнена в течение заданного периода времени для окончательного применения конфигурации.
В противном случае операционная система автоматически выполнит перезагрузку и возврат к конфигурации предыдущей версии конфигурации.
По умолчанию используется период времени длительностью в 10 минут.
Пример работы команды commit-confirm:
Нужно настроить межсетевой экран и проверить, что внесенные в конфигурацию изменения, не заблокируют доступ к операционной системе для администратора.
Для этого используйте команду commit-confirm
.
Если после применения, внесенных изменений доступ к межсетевому экрану не заблокирован, используйте команду confirm
, чтобы подтвердить примененные изменения.
В случае потери доступа к межсетевому экрану после использования команды commit-confirm
, будет выполнена перезагрузка и возврат к конфигурации предыдущей версии.
admin@fakel# set interfaces ethernet eth0 firewall local name FromWorld
admin@fakel# commit-confirm
commit confirm will be automatically reboot in 10 minutes unless confirmed
Proceed? [confirm]y
[edit]
admin@fakel# confirm
[edit]
Команда commit-confirm
временно применяет изменения внесенные в конфигурацию системе в результате ввода команды set interfaces ethernet eth0 firewall local name FromWorld
.
Если в течении 10 минут не будет выполнена команда confirm
, в результате перезагрузки устройства будет выполнен возврат к предыдущей версии конфигурации системы.
Чтобы скопировать определенный элемент конфигурации используйте команду:
- • copy#
С помощью команды copy
можно копировать целые ветви иерархической структуры конфигурации.
Пример работы команды copy:
Для межсетевого экрана нужно создать набор правил FromWorld с одним правилом фильтрации, разрешающим трафик из определенной подсети и добавить в этот набор похожее правило, но уже для другой подсети.
Для этого нужно перейти на соответствующий уровень иерархической структуры конфигурации - firewall name FromWorld
, а затем использовать набор команд copy rule 10 to rule 20
для создания нового правила через копирование данных из уже существующего, после чего модифицировать правило с номером 20 необходимым образом.
# Просмотр рабочей конфигурации набора правил FromWorld
admin@fakel# show firewall name FromWorld
default-action drop
rule 10 {
action accept
source {
address 203.0.113.0/24
}
}
[edit]
# Переход на иерархический уровень FromWorld
admin@fakel# edit firewall name FromWorld
[edit firewall name FromWorld]
# Копирование параметров
admin@fakel# copy rule 10 to rule 20
[edit firewall name FromWorld]
# Изменение параметров ip адреса
admin@fakel# set rule 20 source address 198.51.100.0/24
[edit firewall name FromWorld]
# Применение внесенных изменений
admin@fakel# commit
[edit firewall name FromWorld]
Чтобы переименовать определенный элемент конфигурации используйте команду:
- • rename#
С помощью команды rename
можно переименовывать ветви иерархической структуры конфигурации.
admin@fakel# rename rule 10 to rule 5
[edit firewall name FromWorld]
admin@fakel# commit
[edit firewall name FromWorld]
Пример выше демонстрирует работу команды rename rule 10 to rule 5
, которая переименовывает 10-е правило межсетевого экрана.
Для просмотра внесенных изменений в рабочую конфигурацию используйте команду:
- • show#
admin@fakel# show
default-action drop
+rule 5 {
action accept
source {
address 203.0.113.0/24
}
}
rule 20 {
action accept
source {
address 198.51.100.0/24
}
}
Пример выше демонстрирует работу команды show
на уровне иерархической структуры, который отвечает за настройку набора привил межсетевого экрана FromWorld.
Чтобы добавить текстовый комментарий (аннотацию) к выбранной секции конфигурации <config node> используйте команду:
- • comment <config node> "comment text"#
В иерархической структуре конфигурации комментарий добавляется до выбранной секции.
При выводе на экран комментарий заключается в рамки, обозначаемые разделителями /*
(начало комментария) и */
(конец комментария).
Добавление комментариев требует использования команды commit
, как и любые другие изменения, вносимые в конфигурацию.
Для удаления существующего комментария из текущей конфигурации используйте ту же команду, но укажите пустую строку (""
) в качестве параметра.
admin@fakel# comment firewall all-ping "Comment example"
admin@fakel# commit
admin@fakel# show
firewall {
/* Comment example */
all-ping enable
broadcast-ping disable
...
}
Пример выше демонстрирует работу команды comment firewall all-ping "Comment example"
, которая добавляет комментарий к секции firewall.
Примечание
Важно отметить, что комментарий добавляется до выбранной секции конфигурации, то есть при использовании команды show <section>
он не будет отображаться. Например, если добавить комментарий для к секции firewall
, а затем использовать набор команд show firewall
, то на экран будет выведено содержимое данной секции, но не комментарий.
Управление версиями конфигурации#
Операционная система содержит встроенную систему учета версий конфигурации. Эта система автоматически сохраняет копию каждой предыдущей примененной конфигурации - версию конфигурации. Версии конфигурации хранятся локально и используются для отката, однако они также могут быть размещены на внешнем (удаленном) хранилище с целью организации архива резервных копий.
Локальное хранение версий конфигурации#
Версии конфигурации автоматически сохраняются на диске устройства. Можно просмотреть список всех версий, выполнить сравнение версий и откат в к любой версии в случае возникновения проблем с функционированием операционной системы.
Для просмотра списка всех версий конфигурации, размещенных локально на диске устройства используйте команду:
- • show system commit#
Пример работы команды show system commit:
admin@fakel:~$ show system commit
0 2015-03-30 08:53:03 by fakel via cli
1 2015-03-30 08:52:20 by fakel via cli
2 2015-03-26 21:26:01 by root via boot-config-loader
3 2015-03-26 20:43:18 by root via boot-config-loader
4 2015-03-25 11:06:14 by root via boot-config-loader
5 2015-03-25 01:04:28 by root via boot-config-loader
6 2015-03-25 00:16:47 by fakel via cli
7 2015-03-24 23:43:45 by root via boot-config-loader
Чтобы установить ограничение на количество версий конфигурации, сохраняемых локально на диске устройства используйте команду:
- • set system config-management commit-revisions <N>#
Значение параметра N может быть в диапазоне от 0 до 65535. Когда количество версий конфигурации превышает заданное значение, старые версии удаляются. Значение параметра N по умолчанию подразумевает хранение до 100 версий конфигурации локально.
Сравнение версий конфигурации#
Операционная система позволяет сравнивать различные версии конфигурации.
Для вывода на экран списка отличий между выбранными версиями конфигурации используйте команду:
- • compare <saved | N> <M>#
admin@fakel# compare [tab]
Possible completions:
<Enter> Compare working & active configurations
saved Compare working & saved configurations
<N> Compare working with revision N
<N> <M> Compare revision N with M
Revisions:
0 2013-12-17 20:01:37 root by boot-config-loader
1 2013-12-13 15:59:31 root by boot-config-loader
2 2013-12-12 21:56:22 fakel by cli
3 2013-12-12 21:55:11 fakel by cli
4 2013-12-12 21:27:54 fakel by cli
5 2013-12-12 21:23:29 fakel by cli
6 2013-12-12 21:13:59 root by boot-config-loader
7 2013-12-12 16:25:19 fakel by cli
8 2013-12-12 15:44:36 fakel by cli
9 2013-12-12 15:42:07 root by boot-config-loader
10 2013-12-12 15:42:06 root by init
Команда compare
позволяет выполнять следующие действия:
Сравнивать различные типы конфигураций
Сравнивать различные версии конфигурации с помощью команды
compare N M
, где параметры N и M - идентификаторы версий
При выводе на экран результатов сравнения двух версий символом +
обозначаются добавленные в конфигурацию N элементы по сравнению с конфигурацией M, а символом -
обозначаются удаленные из конфигурации элементы соответственно.
Пример работы команды compare:
admin@fakel# compare 0 6
[edit interfaces]
+ dummy dum1 {
+ address 10.189.0.1/31
+ }
[edit interfaces ethernet eth0]
+ vif 99 {
+ address 10.199.0.1/31
+ }
- vif 900 {
- address 192.0.2.4/24
- }
Пример выше демонстрирует работу команды compare 0 6
, которая сравнивает 0 и 6 версии конфигурации операционной системы.
Для вывода на экран результатов сравнения двух версий примененной конфигурации используйте команду:
- # run show system commit diff <number>#
По умолчанию на экран выводятся результаты сравнения с активной конфигурацией.
Пример работы команды run show system commit diff <number>:
admin@fakel# run show system commit diff 4
[edit system]
+ ipv6 {
+ disable-forwarding
+ }
Пример выше демонстрирует работу команды run show system commit diff 4
, которая выводит результат сравнения версии активной конфигурации с конфигурацией 4.
Откат изменений конфигурации#
Для отката изменений конфигурации к версии, указанной в параметре N используйте команду:
- # rollback <N>#
Пример работы команды rollback <N>:
admin@fakel# compare 1
[edit system]
> host-name fakel-1
[edit]
admin@fakel# rollback 1
Proceed with reboot? [confirm][y]
Broadcast message from root@fakel-1 (pts/0) (Tue Dec 17 21:07:45 2013):
The system is going down for reboot NOW!
Ввод команды rollback
приведет к применению указанной версии конфигурации и перезагрузке системы.
Использование внешнего хранилища версий конфигурации#
Операционная система позволяет загружать версию конфигурации на внешнее (удаленное) хранилище после каждого использования команды commit
.
Для сохранения версии конфигурации на внешнее хранилище нужно указать его адрес.
В качестве такого хранилища могут быть использованы TFTP, FTP, SCP и SFTP серверы:
scp://<user>:<passwd>@<host>:/<dir>
sftp://<user>:<passwd>@<host>/<dir>
ftp://<user>:<passwd>@<host>/<dir>
tftp://<host>/<dir>
Таким образом каждый раз, когда конфигурация успешно применяется, файл config.boot копируется по указанному адресу. При этом копии задается новое имя config.boot-hostname.YYYYMMDD_HHMMSS. Копирование может выполняться по нескольким адресам одновременно.
Для того, чтобы задать адрес внешнего (удаленного) хранилище в формате URI используйте команду:
- • set system config-management commit-archive location <URI>#
Примечание
Количество версий конфигурации, хранимых локально на диске устройства, которое может задать администратор с помощью команды set system config-management commit-revisions <N>
не распространяется на внешнее (удаленное) хранилище.
Операционная система не позволяет установить с внешним (удаленным) хранилищем защищенное (SSL/TLS) соединение, так как невозможно подтвердить легитимность данного хоста.
Однако есть обходное решение данной проблемы через добавление отпечатка SSH ключа хоста в файл ~/.ssh/known_hosts
:
admin@fakel# ssh-keyscan <host> >> ~/.ssh/known_hosts
Сохранение и загрузка конфигурации вручную#
Команды save
и load
используются для управления файлами конфигурации вручную.
Чтобы сохранить файл конфигурации используйте команду:
- • save#
Чтобы загрузить конфигурацию из файла используйте команду:
- • load#
Команда load <URI>
используется для загрузки конфигурации, которая в итоге заменит активную конфигурацию.
Для данной команды необходимо определить расположение файла в виде пути до него.
В качестве расположения можно указать локальный путь или адреса SCP, SFTP, FTP, HTTP, HTTPS и TFTP серверов:
admin@fakel# load
Possible completions:
<Enter> Load from system config file
<file> Load from file on local machine
scp://<user>:<passwd>@<host>:/<file> Load from file on remote machine
sftp://<user>:<passwd>@<host>/<file> Load from file on remote machine
ftp://<user>:<passwd>@<host>/<file> Load from file on remote machine
http://<host>/<file> Load from file on remote machine
https://<host>/<file> Load from file on remote machine
tftp://<host>/<file> Load from file on remote machine
Восстановление конфигурации по умолчанию#
Если требуется сбросить рабочую конфигурацию до состояния по умолчанию используется команда load /opt/fakel/etc/config.boot.default
.
При этом операционная система запросит подтверждение данного действия. Для подтверждения действия используется команду commit
.
После подтверждения действия операционная система будет использовать конфигурацию по умолчанию.
Примечание
В процессе сброса конфигурации до состояния по умолчанию удаленное подключение к устройству будет сброшено. Поэтому перед выполнением сброса рекомендуется создать копию конфигурации, внести в нее изменения для обеспечения сетевой связности, а потом загрузить измененную конфигурацию.