Основы работы ============= В ПАК “Фортикс” предусмотрены следующие режимы работы: - **режим администрирования:** позволяет осуществлять первичную настройку, диагностические функции, работу с ключевой информацией и другие функции по обслуживанию устройства; - **режим конфигурации:** позволяет изменять конфигурацию устройства. Для описания процесса конфигурирования устройства применяются следующие понятия: - *running* – действующая конфигурация; - *candidate* – конфигурация-копия действующей конфигурации *running*, используемая для внесения изменений; - *startup* – сохранённая на внутренний носитель конфигурация (по умолчанию запись *running* сохраняется в *startup*), используемая при запуске системы; - *commit* – успешно применённая конфигурация-точка восстановления, используемая для сохранения состояния конфигурации. Конфигурации *commit* хранятся в виде списка точек восстановления, который “сдвигается вниз” при добавлении новой точки восстановления (в случае переполнения списка последняя (наиболее старая) запись удаляется). Список точек восстановления может содержать не более 50 элементов. Конфигурация устройства представлена в виде древовидной схемы на языке YANG (см. RFC 7950). Основы работы с интерфейсом командной строки -------------------------------------------- Для управления системой используется Juniper-подобный интерфейс, команды в котором применяются следующим образом: :: > command parameters |noindent| где - ``command`` – команда; - ``parameters`` – параметры команды (если параметров несколько, они указываются через пробел). Каждый параметр команды может быть: - опциональным (необязательным); - имеющим аргумент; - не имеющим аргумент. Далее по тексту обязательный параметр команды обозначается в ``<>``, необязательный – ``[]``. Для удобства взаимодействия с командной строкой ПАК “Фортикс” доступно использование следующих горячих клавиш: - – автодополнение команды/параметра или вывод возможных вариантов команд/параметров; - – вывод списка доступных на текущем уровне конфигурации команд или параметров. .. _adm: Режим администрирования ----------------------- Процесс администрирования ~~~~~~~~~~~~~~~~~~~~~~~~~ Непосредственно после запуска системы используется режим администрирования, который обозначается символом ``>`` в начале командной строки: :: > command Пример применения команды режима администрирования для просмотра действующей конфигурации *running*: :: > show running Для преобразования вывода команды command-1 с помощью команды command-2 применяется конструкция: :: > command-1 | command-2 .. warning:: Данная конструкция применима не для всех команд. По умолчанию для многих команд применяется опция ``pager`` для постраничного преобразования вывода. Для подавления опции ``pager`` применяется конструкция: :: > command | no-pager Пример подавления опции ``pager`` в выводе команды для просмотра действующей конфигурации *running*: :: > show running | no-pager Для преобразования вывода с использованием ``n``-ого количества команд применяется конструкция: :: > command-1 | command-2 | ... | command-n Пример преобразования вывода с использованием ``n``-ого количества команд для записи информации о версии ядра в файл: :: > show version | grep Kernel | write |noindent| где ```` – полное имя файла или имя файла относительно домашней директории пользователя. Список некоторых команд для преобразования ввода: - ``grep`` – найти (выбрать); - ``sort`` – отсортировать; - ``compare`` – сравнить; - ``silent`` – подавить интерактивность (не спрашивать); - ``write`` – записать. Команды режима администрирования ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ В режиме администрирования в интерфейсе командной строки ПАК “Фортикс” возможно использование следующих команд: 1) Команды для работы с файлами: - ``edit `` – редактировать файл, где ```` – полное имя файла или имя файла относительно домашней директории пользователя; - ``archive [gzip|tar|zip] create `` – создать архив, где ``gzip|tar|zip`` – тип создаваемого архива, по умолчанию – tar, ```` – полное имя создаваемого архива или имя архива относительно домашней директории пользователя, ```` – полное имя архивируемого файла/директории или имя файла/директории относительно домашней директории пользователя; - ``archive [gzip] extract `` – извлечь архив, где ```` – полное имя извлекаемого архива или имя архива относительно домашней директории пользователя, ```` – полное имя директории для извлечённых из архива данных или имя директории относительно домашней директории пользователя (архивы типа ``tar|zip`` извлекаются автоматически); - ``archive list `` – вывести содержимое архива, где ```` – полное имя существующего архива или имя архива относительно домашней директории пользователя; - ``cat `` – вывести на экран содержимое файла типа ``tar|zip``, где ```` – полное имя файла или имя файла относительно домашней директории пользователя; - ``compare `` – сравнить содержимое файлов, где ````, ```` – полные имена сравниваемых файлов или имена файлов относительно домашней директории пользователя, на экран выводится сообщение при наличии отличий; - ``copy `` – скопировать содержимое файла/директории ```` в файл/папку ````, где ````, ```` – полные имена файлов/директорий или имена файлов относительно домашней директории пользователя; - ``echo `` – вывести сообщение в терминал, где ```` – строка; - ``ls `` – вывести размер в байтах, дату и время последнего изменения и имя файла, где\ ```` – полное имя файла или имя файла относительно домашней директории пользователя; - ``mkdir `` – создать директорию, где \` – полное имя директории или имя директории относительно домашней директории пользователя; - ``mv `` – перенести содержимое файла ```` в файл ````, где ````, ```` – полные имена файлов или имена файлов относительно домашней директории пользователя; - ``rm `` – удалить файл, где ```` – полное имя существующего файла или имя файла относительно домашней директории пользователя; - ``tail [follow|lines]`` – вывести конец содержимого файла, где ```` – полное имя существующего файла или имя файла относительно домашней директории пользователя, ``follow`` – режим отслеживания содержимого, ``lines`` – количество последних выводимых строк; - ``who ami`` – вывести имя текущей учётной записи (пользовтаеля). 2) Команды для сетевого взаимодействия: - ``ping |
`` – проверить доступность сетевого узла, где ``|
`` – имя или IPv4/IPv6-адрес существующего узла; - ``traceroute |
`` – выполнить трассировку маршрута до сетевого узла, где ``|
`` – имя или IPv4/IPv6-адрес существующего узла; - ``arping |
`` – проверить доступность сетевого узла, где ``|
`` – имя или IPv4/IPv6-адрес существующего узла; - ``curl `` – загрузить/выгрузить файл с/на указанный URL, где ```` – строка; - ``nslookup |
`` – получить доменную информации о сетевом узле, где ``|
`` – имя или IPv4/IPv6-адрес существующего узла; - ``ssh connect`` – подключиться к сетевому узлу по протоколу SSH (см. подраздел :numref:`{number} {name} `); - ``ssh get|put`` – получить/отправить файл по протоколу SSH с/на сетевой узел (см. подраздел :numref:`{number} {name} `); - ``ssh key generate`` – сгенерировать ключевую пару для аутентификации на SSH-сервере (см. подраздел :numref:`{number} {name} `); - ``tcpdump [interface ] [pcap ]`` – выполнить анализ сетевого трафика, где ```` – имя существующего интерфейса (см. раздел :numref:`{number} {name} `), ```` – pcap-фильтр; - ``telnet |
`` – подключиться к сетевому узлу по протоколу Telnet, где ``|
`` – имя или IPv4/IPv6-адрес существующего узла (см. подраздел :numref:`{number} {name} `); - ``whois `` – получить регистрационную информацию о сетевом узле, где ```` – имя существующего узла. 3) Прочие команды: - ``poweroff`` – выключить ПАК “Фортикс”; - ``reboot`` – перезагрузить ПАК “Фортикс”; - ``clear conntrack []`` – удалить запись из таблицы отслеживания соединений, где\ ```` – строка (см. ниже). В качестве параметра ```` возможно указание одного или нескольких из следующих фильтров: - ``dnat`` – DNAT-соединения; - ``dport `` – соединения с заданным DNAT-портом, где ```` – число от 1 до 65535; - ``dst `` – соединения с заданным адресом назначения, где ```` – IPv4/IPv6-адрес; - ``ipv4|ipv6`` – соединения заданного семейства адресов; - ``proto `` – соединения заданного протокола, где ```` – строка; - ``snat`` – SNAT-соединения; - ``sport `` – соединения с заданным SNAT-портом, где ```` – число от 1 до 65535; - ``src `` – соединения с заданным адресом источника, где ```` – IPv4/IPv6-адрес. Режим конфигурации ------------------ Для перехода в режим конфигурации применяется команда: :: > configure # Режим конфигурации обозначается символом ``#`` в начале командной строки. Для применения команд из режима администрирования в режиме конфигурации перед командой режима администрирования используется префикс ``do``: :: # do command Пример применения команд из режима администрирования в режиме конфигурации для просмотра версии ПО: :: # do show version В режиме конфигурации доступны следующие основные команды: - ``commit`` – применить конфигурацию-копию *candidate* в качестве действующей конфигурации *running*; - ``del `` – удалить элемент конфигурации, где ```` – строка в формате интерфейса командной строки; - ``diff`` – просмотреть разницу между действующей конфигурацией *running* и конфигурацией-копией *candidate*; - ``edit `` – перейти на уровень дерева конфигурации, где ```` – строка в формате интерфейса командной строки; - ``up`` – подняться на уровень выше в дереве конфигурации; - ``end`` – выйти из режима конфигурации; - ``exit`` – в зависимости от текущего уровня в дереве конфигурации подняться на уровень выше (аналогично ``up``) или выйти из режима конфигурации (аналогично ``end``); - ``insert first|last`` – вставить элемент в начало/в конец списка на его уровне конфигурации, где ```` – строка в формате интерфейса командной строки; - ``insert after|before `` – вставить элемент до/после другого элемента, где ```` – строка в формате интерфейса командной строки; - ``rollback `` – заменить конфигурацию-копию *candidate* на указанную конфигурацию-точку восстановления *commit*, где ```` – строка в формате ``commit-yyyy-mm-dd-hh:mm:ss-``, в которой ```` – имя учётной записи, выполнившей команду ``commit`` для сохранения данной конфигурации-точки восстановления (например, ``commit-2025-10-10-20:10:10-root``); - ``set `` – установить элемент, где ```` – строка в формате интерфейса командной строки; - ``show`` – просмотреть конфигурацию-копию *candidate*; - ``top`` – подняться на корневой уровень в дереве конфигурации. Преобразование вывода в режиме конфигурации осуществляется аналогично преобразованию в режиме администрирования. Процесс конфигурирования ~~~~~~~~~~~~~~~~~~~~~~~~ Процесс конфигурирования осуществляется по следующему алгоритму: 1) При внесении изменений администратор автоматически работает с конфигурацией-копией *candidate*, накапливая все необходимые модификации в ней. 2) После формирования конфигурации-копии *candidate* согласно всем необходимым изменениям применяется команда ``commit`` для замены действующей конфигурации *running* на *candidate*. При этом конфигурация, сохраняемая на внутренний носитель, *startup* обновляется автоматически. 3) После применения изменений сохраняется новая точка восстановления *commit*, равнозначная новой текущей конфигурации *running*. Такой процесс управления конфигурацией позволяет администратору постоянно контролировать логическую атомарность и консистентность вносимых изменений, например, при изменении маршрутизации и правил фильтрации одновременно. Процесс управления деревом конфигурации ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Для модификации дерева конфигурации используются следующие основные команды: - ``set`` – установить элемент; - ``del`` – удалить элемент; - ``insert`` – вставить/переместить элемент. Параметры данных команд см. выше. Путь к элементу дерева конфигурации в формате интерфейса командной строки вводится как последовательность “слов”, разделённых пробелами. Пример команды для установления значения ``"main interface"`` для элемента ``description`` (описание) интерфейса ``en0`` типа ``ether``: :: # set interface ether en0 description "main interface" Для настройки сразу нескольких элементов, находящихся на одном уровне конфигурации, используется конструкция one-liner: в команде указываются сразу несколько элементов через пробел на их уровне конфигурации. Пример применения one-liner для перевода интерфейса из примера выше в рабочий режим и настройки получения IPv4-адреса по протоколу DHCP: :: # set interface ether en0 description "main interface" enable ipv4 dhcp .. _impexp: Способы изменения, импорта и экспорта конфигурации ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Команда ``show`` позволяет просматривать конфигурацию в текстовом формате и задавать в качестве её параметра путь к просматриваемому уровню конфигурации. Пример применения команды ``show`` для просмотра конфигурации всех интерфейсов типа ``ether``: :: # show interface ether Для добавления конфигурации в текстовом формате используется команда ``merge``, позволяющая дополнять конфигурацию (не замещать её). Возможны следующие варианты применения команды ``merge``: - дополнить конфигурацию из терминала (командной строки); - дополнить конфигурацию из файла. Так как команда ``merge`` позволяет вносить изменения на текущем уровне конфигурации (при применении команды ``edit``), дополнение конфигурации из терминала с помощью данной команды применимо при копировании фрагментов конфигурации. Пример применения команды ``merge`` для переноса конфигурации интерфейса ``en0`` в конфигурацию интерфейса ``en1``: 1) Вывести конфигурацию интерфейса ``en0``: :: # show interface ether en0 description "main interface" enable ipv4 dhcp [edit] 2) Выделить и скопировать в буфер обмена вывод команды. 3) Перейти на уровень конфигурации интерфейса ``en1`` и применить команду ``merge`` для дополнения конфигурации из терминала: :: # edit interface ether en1 [edit interface ether en1] # merge terminal Paste config and press C-d to ссс, C-c to abort. enable ipv4 dhcp [edit interface ether en1] 4) Вставить содержимое буфера обмена и воспользоваться комбинацией клавиш + для применения изменений к конфигурации-копии *candidate*. 5) При необходимости выполнить команду ``diff`` для просмотра разницы между текущей конфигурацией *running* и конфигурацией-копией *candidate*. Выполнить команду ``commit`` для применения изменений к текущей конфигурации *running*: :: # diff interface { ether en1 { - no-link-detect ipv4 { + dhcp - address 192.168.101.1/24 } } } [edit interface ether en1] # commit .. warning:: Не все настройки конфигурации возможно дополнить с помощью вышеописанного метода из-за особенностей вывода команды ``show``. Например, пароли администраторов при применении команды ``show`` выводятся следующим образом: :: # show system login account admin uid 1001 passwd-hash Подобные настройки перенести через буфер обмена невозможно. Для экспорта конфигурации-копии *candidate* в заданном формате применяется команда: :: # export json|xml [component] |noindent| где - ``json|xml`` – формат экспортируемой конфигурации; - ``component`` – импортируемый уровень конфигурации в формате интерфейса командной строки. По данной команде выводится вся конфигурация или настройки указанного уровня конфигурации при наличии параметра ``[component]``. Для записи конфигурации в файл используется преобразование вывода с помощью команды ``write`` (см. подраздел :numref:`{number} {name} `). Для импорта конфигурации в заданном формате применяется команда: :: # import json|xml |noindent| где - ``json|xml`` – формат файла с импортируемой конфигурации; - ```` – полное имя файла с импортируемой конфигурацией или имя файла относительно домашней директории пользователя. Для импорта конфигурации-точки восстановления заданной версии (даты) применяется команда: :: # import commit |noindent| где ```` – строка в формате ``commit-yyyy-mm-dd-hh:mm:ss-``, в которой ```` – имя учётной записи, выполнившей команду ``commit`` для сохранения данной конфигурации-точки восстановления (например, ``commit-2025-10-10-20:10:10-root``). Для импорта заводской конфигурации применяется команда: :: # import factory-default Сброс к заводской конфигурации возможен только через применение заводской конфигурации *factory-default* посредством команды ``commit``. Никакие комбинации клавиш на корпусе изделия не приведут к сбросу до заводских настроек. Сохранённая конфигурация *startup* хранится в формате xml. .. warning:: Команды ``import``, ``export``, ``merge`` не вносят изменения в текущую конфигурацию *running*, данные команды изменяют конфигурацию-копию *candidate*. Для применения изменений к текущей конфигурации *running* используется команда ``commit``. Ошибки соответствия YANG-схеме ------------------------------ Схема конфигурации ПАК “Фортикс” описана на языке YANG (см. RFC 7950). При применении команды ``commit`` перед внесением изменений в текущую конфигурацию *running*, сформированных в конфигурации-копии *candidate*, осуществляется проверка конфигурации-копии *candidate* на соответствие YANG-схеме. Если конфигурация-копия *candidate* не проходит проверку, выводится информация об ошибке в виде текстового сообщения, содержащего информацию о проблемном участке конфигурации в виде пути XPath к YANG-схеме или пути к элементу конфигурации. Пример сообщения об ошибке соответствия YANG-схеме: :: # diff qos { qdisc { + htb a } } # commit Error: Mandatory node "ceil" instance does not exist. (Data location "/fx-qos:qos/qdisc/htb[name='a']".) Error: Invalid candidate configuration Команда ``commit`` не выполнена, так как не создан обязательный элемент ``ceil`` на участке ``/fx-qos:qos/qdisc/htb[name='a']`` (данный путь соответствует пути ``qos qdisc htb a`` в формате интерфейса командной строки). Сообщения об ошибке имеют следующий формат: *Error: Содержание ошибки (местоположение ошибки).* Значения, принимаемые полем *Содержание ошибки* представлены в таблице :numref:`%s `. .. _table-yang-errors: .. list-table:: Возможные значения поля *Содержание ошибки* :widths: 45 55 :header-rows: 1 - - Сообщение - Значение - - Too few instances. - Недостаточное число элементов на участке . - - Too many instances. - Избыточное число элементов на участке . - - Mandatory choice data do not exist. - Обязательная ветка не задана. - - Mandatory node instance does not exist. - Обязательный элемент не задан. - - When condition not satisfied. - Не выполнено условие в конструкции when. - - Unique data leaf(s) not satisfied in and . - Нарушено требование уникальности элемента(ов) на участках и . - - Must condition not satisfied. - Не выполнено условие в конструкции must. Значения, принимаемые полем *Местоположение ошибки*, представлены в таблице :numref:`%s `. .. _table-error-location: .. list-table:: Возможные значения поля *Местоположение ошибки* :widths: 20 80 :header-rows: 1 - - Сообщение - Значение - - Data location - Путь к элементу конфигурации в формате XPath - - Schema location - Путь к схеме конфигурации в формате XPath - - Path - Путь в формате XPath, который не соответствует ни элементу, ни схеме Для просмотра информации о YANG-схеме ПАК “Фортикс” применяется группа команд ``show system yang`` в режиме администрирования. Пример применения группы команд ``show system yang``: :: > show system yang xpath interface ether en0 /fx-interface:interface/fx-interface-ether:ether[name="en0"] > show system yang scheme /fx-interface:interface/fx-interface-ether:ether fx-interface-ether:ether[name]/ description enable mtu no-multicast ... .. . > show system yang package fx-interface