<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
	<id>https://wiki.entcor.ru/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Entcor</id>
	<title>EWiki - Вклад [ru]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.entcor.ru/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Entcor"/>
	<link rel="alternate" type="text/html" href="https://wiki.entcor.ru/index.php/%D0%A1%D0%BB%D1%83%D0%B6%D0%B5%D0%B1%D0%BD%D0%B0%D1%8F:%D0%92%D0%BA%D0%BB%D0%B0%D0%B4/Entcor"/>
	<updated>2026-06-12T14:07:58Z</updated>
	<subtitle>Вклад</subtitle>
	<generator>MediaWiki 1.45.3</generator>
	<entry>
		<id>https://wiki.entcor.ru/index.php?title=%D0%94%D0%BE%D0%BA%D1%83%D0%BC%D0%B5%D0%BD%D1%82%D0%B0%D1%86%D0%B8%D1%8F_Alarm_Server&amp;diff=491</id>
		<title>Документация Alarm Server</title>
		<link rel="alternate" type="text/html" href="https://wiki.entcor.ru/index.php?title=%D0%94%D0%BE%D0%BA%D1%83%D0%BC%D0%B5%D0%BD%D1%82%D0%B0%D1%86%D0%B8%D1%8F_Alarm_Server&amp;diff=491"/>
		<updated>2026-01-28T02:04:02Z</updated>

		<summary type="html">&lt;p&gt;Entcor: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;html документация для сервиса Alarm server: [http://192.168.2.5/alarm/]&lt;br /&gt;
&lt;br /&gt;
html документация для сервиса e-core: [http://192.168.2.5/core/]&lt;/div&gt;</summary>
		<author><name>Entcor</name></author>
	</entry>
	<entry>
		<id>https://wiki.entcor.ru/index.php?title=%D0%A2%D0%BE%D0%BF%D0%B8%D0%BA%D0%B8_mqtt&amp;diff=401</id>
		<title>Топики mqtt</title>
		<link rel="alternate" type="text/html" href="https://wiki.entcor.ru/index.php?title=%D0%A2%D0%BE%D0%BF%D0%B8%D0%BA%D0%B8_mqtt&amp;diff=401"/>
		<updated>2025-02-28T07:44:13Z</updated>

		<summary type="html">&lt;p&gt;Entcor: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
!&lt;br /&gt;
!Топик&lt;br /&gt;
!Формат&lt;br /&gt;
|-&lt;br /&gt;
|граф sd-wan&lt;br /&gt;
|sd-wan/data&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|сработка правил&lt;br /&gt;
|events/rules&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|внешние узлы&lt;br /&gt;
|mirror/externalNodes&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|очередь внешних узлов&lt;br /&gt;
|mirror/externalNodes/queue/current&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|потоки&lt;br /&gt;
|mirror/flows&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|очередь потоков&lt;br /&gt;
|mirror/flows/queue/current&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|измерения&lt;br /&gt;
|mirror/measures&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|очередь измерений&lt;br /&gt;
|mirror/measures/queue/current&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|узлы карты сети&lt;br /&gt;
|mirror/nodes&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|очередь узлов&lt;br /&gt;
|mirror/nodes/queue/current&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|таблица DHCP&lt;br /&gt;
|e-nms/dhcp/&amp;lt;mac&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|буревестник&lt;br /&gt;
|/device/MKI_alfa/mb1x3/cpu1/&amp;lt;шина+канал&amp;gt;/&amp;lt;id устройства&amp;gt;/reg/&amp;lt;регистр&amp;gt;/&amp;lt;req/resp&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|задачи (tasks)&lt;br /&gt;
|/tasks/&amp;lt;id&amp;gt;&lt;br /&gt;
|{&lt;br /&gt;
id: string;&lt;br /&gt;
&lt;br /&gt;
name: string;&lt;br /&gt;
&lt;br /&gt;
alternativename: string;&lt;br /&gt;
&lt;br /&gt;
user: string,&lt;br /&gt;
&lt;br /&gt;
startRT: Date;&lt;br /&gt;
&lt;br /&gt;
endRT?: Date;&lt;br /&gt;
&lt;br /&gt;
status?: taskstatus;&lt;br /&gt;
&lt;br /&gt;
data?: any;&lt;br /&gt;
&lt;br /&gt;
progress?: any[];&lt;br /&gt;
&lt;br /&gt;
error?: string;&lt;br /&gt;
&lt;br /&gt;
timeoutRT: Date;&lt;br /&gt;
&lt;br /&gt;
version?: number;&lt;br /&gt;
&lt;br /&gt;
additionaldata?: {};&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
Ссылка на схемы: https://drive.google.com/file/d/1PqLCC33zCoV3FTqQ7OKWnMz1g54gLhbM/view?usp=sharing&lt;/div&gt;</summary>
		<author><name>Entcor</name></author>
	</entry>
	<entry>
		<id>https://wiki.entcor.ru/index.php?title=%D0%94%D0%BE%D0%BA%D1%83%D0%BC%D0%B5%D0%BD%D1%82%D0%B0%D1%86%D0%B8%D1%8F_Alarm_Server&amp;diff=361</id>
		<title>Документация Alarm Server</title>
		<link rel="alternate" type="text/html" href="https://wiki.entcor.ru/index.php?title=%D0%94%D0%BE%D0%BA%D1%83%D0%BC%D0%B5%D0%BD%D1%82%D0%B0%D1%86%D0%B8%D1%8F_Alarm_Server&amp;diff=361"/>
		<updated>2025-01-22T07:59:09Z</updated>

		<summary type="html">&lt;p&gt;Entcor: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;html документация для сервиса Alarm server: [http://192.168.2.58/alarm/]&lt;br /&gt;
&lt;br /&gt;
html документация для сервиса e-core: [http://192.168.2.58/core/]&lt;/div&gt;</summary>
		<author><name>Entcor</name></author>
	</entry>
	<entry>
		<id>https://wiki.entcor.ru/index.php?title=%D0%97%D0%B0%D0%B3%D0%BB%D0%B0%D0%B2%D0%BD%D0%B0%D1%8F_%D1%81%D1%82%D1%80%D0%B0%D0%BD%D0%B8%D1%86%D0%B0&amp;diff=360</id>
		<title>Заглавная страница</title>
		<link rel="alternate" type="text/html" href="https://wiki.entcor.ru/index.php?title=%D0%97%D0%B0%D0%B3%D0%BB%D0%B0%D0%B2%D0%BD%D0%B0%D1%8F_%D1%81%D1%82%D1%80%D0%B0%D0%BD%D0%B8%D1%86%D0%B0&amp;diff=360"/>
		<updated>2025-01-22T07:58:09Z</updated>

		<summary type="html">&lt;p&gt;Entcor: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;strong&amp;gt;Разделы:&amp;lt;/strong&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# Документация по Блокиратору [[Blocker]]&lt;br /&gt;
# Документация по системе мониторинга качества измерений [[МКИ|eNode.МКИ]]&lt;br /&gt;
# Документация по системе мониторинга [[nms]]&lt;br /&gt;
# Документация по системе e-core [[e-core]]&lt;br /&gt;
# Документация по SD-WAN [[sdwan]]&lt;br /&gt;
# Документация по командам docker [[Dockercompose]]&lt;br /&gt;
# Сетевые записи [[network]]&lt;br /&gt;
# Настройки разных подсистем [[systems]]&lt;br /&gt;
# [[Список серверов]] proxmox&lt;br /&gt;
# Агент [[host-agent]]&lt;br /&gt;
# [[Pnet|Pnetlab]]&lt;br /&gt;
# [[Установка сертификата]]&lt;br /&gt;
# [[Установка node-js]]&lt;br /&gt;
# [[Установка Docker]]&lt;br /&gt;
# [[Continent]]&lt;br /&gt;
# [[Формирование путей устройств]]&lt;br /&gt;
# [[Backup/Restore MongoDB|Backup\Restore MongoDB]]&lt;br /&gt;
# [[Mirror]]&lt;br /&gt;
# [[Документация Alarm Server|Документация entcor]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Информацию по работе с этой вики можно найти в [[mediawikiwiki:Special:MyLanguage/Help:Contents|справочном руководстве]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Общая информация&lt;br /&gt;
&lt;br /&gt;
# договор на интернет [[Internet settings]]&lt;br /&gt;
&lt;br /&gt;
== Начало работы ==&lt;br /&gt;
&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Configuration_settings Список возможных настроек];&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Manual:FAQ/ru Часто задаваемые вопросы и ответы по MediaWiki];&lt;br /&gt;
* [https://lists.wikimedia.org/postorius/lists/mediawiki-announce.lists.wikimedia.org/ Рассылка уведомлений о выходе новых версий MediaWiki].&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Localisation#Translation_resources Перевод MediaWiki на свой язык]&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Combating_spam Узнайте, как бороться со спамом в вашей вики]&lt;/div&gt;</summary>
		<author><name>Entcor</name></author>
	</entry>
	<entry>
		<id>https://wiki.entcor.ru/index.php?title=Mirror&amp;diff=340</id>
		<title>Mirror</title>
		<link rel="alternate" type="text/html" href="https://wiki.entcor.ru/index.php?title=Mirror&amp;diff=340"/>
		<updated>2024-11-13T05:36:34Z</updated>

		<summary type="html">&lt;p&gt;Entcor: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Файл:Тестирование зеркала.png|мини|938x938пкс]]&lt;/div&gt;</summary>
		<author><name>Entcor</name></author>
	</entry>
	<entry>
		<id>https://wiki.entcor.ru/index.php?title=Mirror&amp;diff=339</id>
		<title>Mirror</title>
		<link rel="alternate" type="text/html" href="https://wiki.entcor.ru/index.php?title=Mirror&amp;diff=339"/>
		<updated>2024-11-13T05:35:56Z</updated>

		<summary type="html">&lt;p&gt;Entcor: Новая страница: «мини»&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Файл:Тестирование зеркала.png|мини]]&lt;/div&gt;</summary>
		<author><name>Entcor</name></author>
	</entry>
	<entry>
		<id>https://wiki.entcor.ru/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:%D0%A2%D0%B5%D1%81%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_%D0%B7%D0%B5%D1%80%D0%BA%D0%B0%D0%BB%D0%B0.png&amp;diff=338</id>
		<title>Файл:Тестирование зеркала.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.entcor.ru/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:%D0%A2%D0%B5%D1%81%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_%D0%B7%D0%B5%D1%80%D0%BA%D0%B0%D0%BB%D0%B0.png&amp;diff=338"/>
		<updated>2024-11-13T05:35:38Z</updated>

		<summary type="html">&lt;p&gt;Entcor: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Тестирование зеркала&lt;/div&gt;</summary>
		<author><name>Entcor</name></author>
	</entry>
	<entry>
		<id>https://wiki.entcor.ru/index.php?title=%D0%94%D0%BE%D1%81%D1%82%D1%83%D0%BF_%D0%BA_API_Continent&amp;diff=311</id>
		<title>Доступ к API Continent</title>
		<link rel="alternate" type="text/html" href="https://wiki.entcor.ru/index.php?title=%D0%94%D0%BE%D1%81%D1%82%D1%83%D0%BF_%D0%BA_API_Continent&amp;diff=311"/>
		<updated>2024-08-02T04:01:43Z</updated>

		<summary type="html">&lt;p&gt;Entcor: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Общее ==&lt;br /&gt;
Описание доступа к API  [[Continent]]&lt;br /&gt;
&lt;br /&gt;
== Мониторинг ==&lt;br /&gt;
Интерфейс подсистемы мониторинга доступен по прямой ссылке на ЦУС https://192.168.23.9 (логин: admin, пароль: Ng3-dcc20). Возможно потребуется прописать маршрут в сеть 192.168.23.0/24 через 192.168.2.150.&lt;br /&gt;
&lt;br /&gt;
Для передачи данных используется websocket соединение wss://192.168.23.9/websockets. В его сообщениях можно найти примеры запросов данных. Например:&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;&lt;br /&gt;
{&amp;quot;admin_uuid&amp;quot;:&amp;quot;cc578ec9-f733-4475-9a04-d8f6649af990&amp;quot;,&amp;quot;cmd&amp;quot;:&amp;quot;node_info&amp;quot;,&amp;quot;ids&amp;quot;:[1000,1001,1002]}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Для тестирования можно создать websocket соединение через Postman. Аутентификация не требуется.&lt;br /&gt;
&lt;br /&gt;
== API конфигурирования ==&lt;br /&gt;
&lt;br /&gt;
=== Обеспечение доступа ===&lt;br /&gt;
Для обеспечения доступа к API необходимо изменить настройки nginx на ЦУС: /var/cont/nginx.conf. В файле настроке надо сделать копию секции &amp;quot;server { listen 444 default_server ssl;&amp;quot;. При этом надо изменить верхнюю строчку на &amp;quot;listen 4431 default_server;&amp;quot; . Так же надо найти секцию:&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
server {&lt;br /&gt;
    listen 4431 default_server ssl;&lt;br /&gt;
    &lt;br /&gt;
        &lt;br /&gt;
            listen 192.168.23.2:4431 ssl;&lt;br /&gt;
        &lt;br /&gt;
            listen 192.168.23.25:4431 ssl;&lt;br /&gt;
        &lt;br /&gt;
            listen 192.168.23.9:4431 ssl;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;и заменить все 4431 на, к примеру, 4432. Или вообще удалить эту секцию.&lt;br /&gt;
&lt;br /&gt;
Затем необходимо загрузить обновленные настройки командой nginx -s reload.&lt;br /&gt;
&lt;br /&gt;
Проверить доступ к API можно командой&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
curl -u admin:Ng3-dcc20  http://192.168.23.9:4431/api-v1-objects/config&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Раздел api-v1-objects ===&lt;br /&gt;
[[:Файл:C4 swagger api-v1-objects.json.txt|Swagger continent api-v1-objects]]&lt;br /&gt;
&lt;br /&gt;
Для выполнения запросов из данной группы сначала необходимо получить идентификатор необходимой конфигурации (активной) запросом: &amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
curl -u admin:Ng3-dcc20  http://192.168.23.9:4431/api-v1-objects/config&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Затем полученный идентификатор можно использовать в URL остальных запросов. К примеру, если идентификатор конфигурации 1:&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
curl -u admin:Ng3-dcc20  http://192.168.23.9:4431/api-v1-objects/config/1/interfaceether&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Префикс всех запросов &#039;&#039;&#039;/api-v1-objects/&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Раздел api-v1-server ===&lt;br /&gt;
[[:Файл:C4 swagger api-v1-server.json.base64.txt|Swagger continent api-v1-server]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Файл закодирован в base64, потому что wiki октазывалась его сохранять, счетая небезопасным. Для декодировки выполнить:&#039;&#039;&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
cat c4_swagger_api-v1-server.json.base64.txt | base64 -d &amp;gt; c4_swagger_api-v1-server.json&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Префикс всех запросов &#039;&#039;&#039;/api-v1-server/&#039;&#039;&#039;&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
curl -u admin:Ng3-dcc20  http://192.168.23.9:4431/api-v1-server/get-time&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Entcor</name></author>
	</entry>
	<entry>
		<id>https://wiki.entcor.ru/index.php?title=%D0%94%D0%BE%D1%81%D1%82%D1%83%D0%BF_%D0%BA_API_Continent&amp;diff=310</id>
		<title>Доступ к API Continent</title>
		<link rel="alternate" type="text/html" href="https://wiki.entcor.ru/index.php?title=%D0%94%D0%BE%D1%81%D1%82%D1%83%D0%BF_%D0%BA_API_Continent&amp;diff=310"/>
		<updated>2024-08-02T03:58:36Z</updated>

		<summary type="html">&lt;p&gt;Entcor: /* Раздел api-v1-objects */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Общее ==&lt;br /&gt;
Описание доступа к API  [[Continent]]&lt;br /&gt;
&lt;br /&gt;
== Мониторинг ==&lt;br /&gt;
Интерфейс подсистемы мониторинга доступен по прямой ссылке на ЦУС https://192.168.23.9 (логин: admin, пароль: Ng3-dcc20). Возможно потребуется прописать маршрут в сеть 192.168.23.0/24 через 192.168.2.150.&lt;br /&gt;
&lt;br /&gt;
Для передачи данных используется websocket соединение wss://192.168.23.9/websockets. В его сообщениях можно найти примеры запросов данных. Например:&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;&lt;br /&gt;
{&amp;quot;admin_uuid&amp;quot;:&amp;quot;cc578ec9-f733-4475-9a04-d8f6649af990&amp;quot;,&amp;quot;cmd&amp;quot;:&amp;quot;node_info&amp;quot;,&amp;quot;ids&amp;quot;:[1000,1001,1002]}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Для тестирования можно создать websocket соединение через Postman. Аутентификация не требуется.&lt;br /&gt;
&lt;br /&gt;
== API конфигурирования ==&lt;br /&gt;
&lt;br /&gt;
=== Обеспечение доступа ===&lt;br /&gt;
Для обеспечения доступа к API необходимо изменить настройки nginx на ЦУС: /var/cont/nginx.conf. В файле настроке надо сделать копию секции &amp;quot;server { listen 444 default_server ssl;&amp;quot;. При этом надо изменить верхнюю строчку на &amp;quot;listen 4431 default_server;&amp;quot; . Так же надо найти секцию:&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
server {&lt;br /&gt;
    listen 4431 default_server ssl;&lt;br /&gt;
    &lt;br /&gt;
        &lt;br /&gt;
            listen 192.168.23.2:4431 ssl;&lt;br /&gt;
        &lt;br /&gt;
            listen 192.168.23.25:4431 ssl;&lt;br /&gt;
        &lt;br /&gt;
            listen 192.168.23.9:4431 ssl;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;и заменить все 4431 на, к примеру, 4432. Или вообще удалить эту секцию.&lt;br /&gt;
&lt;br /&gt;
Затем необходимо загрузить обновленные настройки командой nginx -s reload.&lt;br /&gt;
&lt;br /&gt;
Проверить доступ к API можно командой&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
curl -u admin:Ng3-dcc20  http://192.168.23.9:4431/api-v1-objects/config&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Раздел api-v1-objects ===&lt;br /&gt;
[[:Файл:C4 swagger api-v1-objects.json.txt|Swagger continent api-v1-objects]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;(Файл закодирован в base64, потому что wiki октазывалась его сохранять, счетая небезопасным.)&#039;&#039; &lt;br /&gt;
Для выполнения запросов из данной группы сначала необходимо получить идентификатор необходимой конфигурации (активной) запросом: &amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
curl -u admin:Ng3-dcc20  http://192.168.23.9:4431/api-v1-objects/config&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Затем полученный идентификатор можно использовать в URL остальных запросов. К примеру, если идентификатор конфигурации 1:&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
curl -u admin:Ng3-dcc20  http://192.168.23.9:4431/api-v1-objects/config/1/interfaceether&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Префикс всех запросов &#039;&#039;&#039;/api-v1-objects/&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Раздел api-v1-server ===&lt;br /&gt;
[[:Файл:C4 swagger api-v1-server.json.base64.txt|Swagger continent api-v1-server]]&lt;br /&gt;
&lt;br /&gt;
Префикс всех запросов &#039;&#039;&#039;/api-v1-server/&#039;&#039;&#039;&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
curl -u admin:Ng3-dcc20  http://192.168.23.9:4431/api-v1-server/get-time&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Entcor</name></author>
	</entry>
	<entry>
		<id>https://wiki.entcor.ru/index.php?title=%D0%94%D0%BE%D1%81%D1%82%D1%83%D0%BF_%D0%BA_API_Continent&amp;diff=309</id>
		<title>Доступ к API Continent</title>
		<link rel="alternate" type="text/html" href="https://wiki.entcor.ru/index.php?title=%D0%94%D0%BE%D1%81%D1%82%D1%83%D0%BF_%D0%BA_API_Continent&amp;diff=309"/>
		<updated>2024-08-02T03:57:00Z</updated>

		<summary type="html">&lt;p&gt;Entcor: /* Раздел api-v1-server */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Общее ==&lt;br /&gt;
Описание доступа к API  [[Continent]]&lt;br /&gt;
&lt;br /&gt;
== Мониторинг ==&lt;br /&gt;
Интерфейс подсистемы мониторинга доступен по прямой ссылке на ЦУС https://192.168.23.9 (логин: admin, пароль: Ng3-dcc20). Возможно потребуется прописать маршрут в сеть 192.168.23.0/24 через 192.168.2.150.&lt;br /&gt;
&lt;br /&gt;
Для передачи данных используется websocket соединение wss://192.168.23.9/websockets. В его сообщениях можно найти примеры запросов данных. Например:&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;&lt;br /&gt;
{&amp;quot;admin_uuid&amp;quot;:&amp;quot;cc578ec9-f733-4475-9a04-d8f6649af990&amp;quot;,&amp;quot;cmd&amp;quot;:&amp;quot;node_info&amp;quot;,&amp;quot;ids&amp;quot;:[1000,1001,1002]}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Для тестирования можно создать websocket соединение через Postman. Аутентификация не требуется.&lt;br /&gt;
&lt;br /&gt;
== API конфигурирования ==&lt;br /&gt;
&lt;br /&gt;
=== Обеспечение доступа ===&lt;br /&gt;
Для обеспечения доступа к API необходимо изменить настройки nginx на ЦУС: /var/cont/nginx.conf. В файле настроке надо сделать копию секции &amp;quot;server { listen 444 default_server ssl;&amp;quot;. При этом надо изменить верхнюю строчку на &amp;quot;listen 4431 default_server;&amp;quot; . Так же надо найти секцию:&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
server {&lt;br /&gt;
    listen 4431 default_server ssl;&lt;br /&gt;
    &lt;br /&gt;
        &lt;br /&gt;
            listen 192.168.23.2:4431 ssl;&lt;br /&gt;
        &lt;br /&gt;
            listen 192.168.23.25:4431 ssl;&lt;br /&gt;
        &lt;br /&gt;
            listen 192.168.23.9:4431 ssl;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;и заменить все 4431 на, к примеру, 4432. Или вообще удалить эту секцию.&lt;br /&gt;
&lt;br /&gt;
Затем необходимо загрузить обновленные настройки командой nginx -s reload.&lt;br /&gt;
&lt;br /&gt;
Проверить доступ к API можно командой&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
curl -u admin:Ng3-dcc20  http://192.168.23.9:4431/api-v1-objects/config&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Раздел api-v1-objects ===&lt;br /&gt;
[[:Файл:C4 swagger api-v1-objects.json.txt|Swagger continent api-v1-objects]] &lt;br /&gt;
Для выполнения запросов из данной группы сначала необходимо получить идентификатор необходимой конфигурации (активной) запросом: &amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
curl -u admin:Ng3-dcc20  http://192.168.23.9:4431/api-v1-objects/config&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Затем полученный идентификатор можно использовать в URL остальных запросов. К примеру, если идентификатор конфигурации 1:&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
curl -u admin:Ng3-dcc20  http://192.168.23.9:4431/api-v1-objects/config/1/interfaceether&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Префикс всех запросов &#039;&#039;&#039;/api-v1-objects/&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Раздел api-v1-server ===&lt;br /&gt;
[[:Файл:C4 swagger api-v1-server.json.base64.txt|Swagger continent api-v1-server]]&lt;br /&gt;
&lt;br /&gt;
Префикс всех запросов &#039;&#039;&#039;/api-v1-server/&#039;&#039;&#039;&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
curl -u admin:Ng3-dcc20  http://192.168.23.9:4431/api-v1-server/get-time&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Entcor</name></author>
	</entry>
	<entry>
		<id>https://wiki.entcor.ru/index.php?title=%D0%94%D0%BE%D1%81%D1%82%D1%83%D0%BF_%D0%BA_API_Continent&amp;diff=308</id>
		<title>Доступ к API Continent</title>
		<link rel="alternate" type="text/html" href="https://wiki.entcor.ru/index.php?title=%D0%94%D0%BE%D1%81%D1%82%D1%83%D0%BF_%D0%BA_API_Continent&amp;diff=308"/>
		<updated>2024-08-02T03:56:47Z</updated>

		<summary type="html">&lt;p&gt;Entcor: /* Раздел api-v1-server */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Общее ==&lt;br /&gt;
Описание доступа к API  [[Continent]]&lt;br /&gt;
&lt;br /&gt;
== Мониторинг ==&lt;br /&gt;
Интерфейс подсистемы мониторинга доступен по прямой ссылке на ЦУС https://192.168.23.9 (логин: admin, пароль: Ng3-dcc20). Возможно потребуется прописать маршрут в сеть 192.168.23.0/24 через 192.168.2.150.&lt;br /&gt;
&lt;br /&gt;
Для передачи данных используется websocket соединение wss://192.168.23.9/websockets. В его сообщениях можно найти примеры запросов данных. Например:&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;&lt;br /&gt;
{&amp;quot;admin_uuid&amp;quot;:&amp;quot;cc578ec9-f733-4475-9a04-d8f6649af990&amp;quot;,&amp;quot;cmd&amp;quot;:&amp;quot;node_info&amp;quot;,&amp;quot;ids&amp;quot;:[1000,1001,1002]}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Для тестирования можно создать websocket соединение через Postman. Аутентификация не требуется.&lt;br /&gt;
&lt;br /&gt;
== API конфигурирования ==&lt;br /&gt;
&lt;br /&gt;
=== Обеспечение доступа ===&lt;br /&gt;
Для обеспечения доступа к API необходимо изменить настройки nginx на ЦУС: /var/cont/nginx.conf. В файле настроке надо сделать копию секции &amp;quot;server { listen 444 default_server ssl;&amp;quot;. При этом надо изменить верхнюю строчку на &amp;quot;listen 4431 default_server;&amp;quot; . Так же надо найти секцию:&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
server {&lt;br /&gt;
    listen 4431 default_server ssl;&lt;br /&gt;
    &lt;br /&gt;
        &lt;br /&gt;
            listen 192.168.23.2:4431 ssl;&lt;br /&gt;
        &lt;br /&gt;
            listen 192.168.23.25:4431 ssl;&lt;br /&gt;
        &lt;br /&gt;
            listen 192.168.23.9:4431 ssl;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;и заменить все 4431 на, к примеру, 4432. Или вообще удалить эту секцию.&lt;br /&gt;
&lt;br /&gt;
Затем необходимо загрузить обновленные настройки командой nginx -s reload.&lt;br /&gt;
&lt;br /&gt;
Проверить доступ к API можно командой&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
curl -u admin:Ng3-dcc20  http://192.168.23.9:4431/api-v1-objects/config&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Раздел api-v1-objects ===&lt;br /&gt;
[[:Файл:C4 swagger api-v1-objects.json.txt|Swagger continent api-v1-objects]] &lt;br /&gt;
Для выполнения запросов из данной группы сначала необходимо получить идентификатор необходимой конфигурации (активной) запросом: &amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
curl -u admin:Ng3-dcc20  http://192.168.23.9:4431/api-v1-objects/config&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Затем полученный идентификатор можно использовать в URL остальных запросов. К примеру, если идентификатор конфигурации 1:&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
curl -u admin:Ng3-dcc20  http://192.168.23.9:4431/api-v1-objects/config/1/interfaceether&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Префикс всех запросов &#039;&#039;&#039;/api-v1-objects/&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Раздел api-v1-server ===&lt;br /&gt;
[[:Файл:C4 swagger api-v1-server.json.base64.txt|Swagger continent api-v1-server]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Префикс всех запросов &#039;&#039;&#039;/api-v1-server/&#039;&#039;&#039;&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
curl -u admin:Ng3-dcc20  http://192.168.23.9:4431/api-v1-server/get-time&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Entcor</name></author>
	</entry>
	<entry>
		<id>https://wiki.entcor.ru/index.php?title=%D0%94%D0%BE%D1%81%D1%82%D1%83%D0%BF_%D0%BA_API_Continent&amp;diff=307</id>
		<title>Доступ к API Continent</title>
		<link rel="alternate" type="text/html" href="https://wiki.entcor.ru/index.php?title=%D0%94%D0%BE%D1%81%D1%82%D1%83%D0%BF_%D0%BA_API_Continent&amp;diff=307"/>
		<updated>2024-08-02T03:56:21Z</updated>

		<summary type="html">&lt;p&gt;Entcor: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Общее ==&lt;br /&gt;
Описание доступа к API  [[Continent]]&lt;br /&gt;
&lt;br /&gt;
== Мониторинг ==&lt;br /&gt;
Интерфейс подсистемы мониторинга доступен по прямой ссылке на ЦУС https://192.168.23.9 (логин: admin, пароль: Ng3-dcc20). Возможно потребуется прописать маршрут в сеть 192.168.23.0/24 через 192.168.2.150.&lt;br /&gt;
&lt;br /&gt;
Для передачи данных используется websocket соединение wss://192.168.23.9/websockets. В его сообщениях можно найти примеры запросов данных. Например:&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;&lt;br /&gt;
{&amp;quot;admin_uuid&amp;quot;:&amp;quot;cc578ec9-f733-4475-9a04-d8f6649af990&amp;quot;,&amp;quot;cmd&amp;quot;:&amp;quot;node_info&amp;quot;,&amp;quot;ids&amp;quot;:[1000,1001,1002]}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Для тестирования можно создать websocket соединение через Postman. Аутентификация не требуется.&lt;br /&gt;
&lt;br /&gt;
== API конфигурирования ==&lt;br /&gt;
&lt;br /&gt;
=== Обеспечение доступа ===&lt;br /&gt;
Для обеспечения доступа к API необходимо изменить настройки nginx на ЦУС: /var/cont/nginx.conf. В файле настроке надо сделать копию секции &amp;quot;server { listen 444 default_server ssl;&amp;quot;. При этом надо изменить верхнюю строчку на &amp;quot;listen 4431 default_server;&amp;quot; . Так же надо найти секцию:&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
server {&lt;br /&gt;
    listen 4431 default_server ssl;&lt;br /&gt;
    &lt;br /&gt;
        &lt;br /&gt;
            listen 192.168.23.2:4431 ssl;&lt;br /&gt;
        &lt;br /&gt;
            listen 192.168.23.25:4431 ssl;&lt;br /&gt;
        &lt;br /&gt;
            listen 192.168.23.9:4431 ssl;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;и заменить все 4431 на, к примеру, 4432. Или вообще удалить эту секцию.&lt;br /&gt;
&lt;br /&gt;
Затем необходимо загрузить обновленные настройки командой nginx -s reload.&lt;br /&gt;
&lt;br /&gt;
Проверить доступ к API можно командой&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
curl -u admin:Ng3-dcc20  http://192.168.23.9:4431/api-v1-objects/config&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Раздел api-v1-objects ===&lt;br /&gt;
[[:Файл:C4 swagger api-v1-objects.json.txt|Swagger continent api-v1-objects]] &lt;br /&gt;
Для выполнения запросов из данной группы сначала необходимо получить идентификатор необходимой конфигурации (активной) запросом: &amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
curl -u admin:Ng3-dcc20  http://192.168.23.9:4431/api-v1-objects/config&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Затем полученный идентификатор можно использовать в URL остальных запросов. К примеру, если идентификатор конфигурации 1:&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
curl -u admin:Ng3-dcc20  http://192.168.23.9:4431/api-v1-objects/config/1/interfaceether&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Префикс всех запросов &#039;&#039;&#039;/api-v1-objects/&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Раздел api-v1-server ===&lt;br /&gt;
[[:Файл:C4 swagger api-v1-objects.json.txt|Swagger continent api-v1-server]]&lt;br /&gt;
&lt;br /&gt;
Префикс всех запросов &#039;&#039;&#039;/api-v1-server/&#039;&#039;&#039;&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
curl -u admin:Ng3-dcc20  http://192.168.23.9:4431/api-v1-server/get-time&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Entcor</name></author>
	</entry>
	<entry>
		<id>https://wiki.entcor.ru/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:C4_swagger_api-v1-server.json.base64.txt&amp;diff=306</id>
		<title>Файл:C4 swagger api-v1-server.json.base64.txt</title>
		<link rel="alternate" type="text/html" href="https://wiki.entcor.ru/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:C4_swagger_api-v1-server.json.base64.txt&amp;diff=306"/>
		<updated>2024-08-02T03:52:28Z</updated>

		<summary type="html">&lt;p&gt;Entcor: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Swagger continent api-v1-server&lt;/div&gt;</summary>
		<author><name>Entcor</name></author>
	</entry>
	<entry>
		<id>https://wiki.entcor.ru/index.php?title=%D0%94%D0%BE%D1%81%D1%82%D1%83%D0%BF_%D0%BA_API_Continent&amp;diff=305</id>
		<title>Доступ к API Continent</title>
		<link rel="alternate" type="text/html" href="https://wiki.entcor.ru/index.php?title=%D0%94%D0%BE%D1%81%D1%82%D1%83%D0%BF_%D0%BA_API_Continent&amp;diff=305"/>
		<updated>2024-08-02T03:10:48Z</updated>

		<summary type="html">&lt;p&gt;Entcor: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Общее ==&lt;br /&gt;
Описание доступа к API  [[Continent]]&lt;br /&gt;
&lt;br /&gt;
== Мониторинг ==&lt;br /&gt;
Интерфейс подсистемы мониторинга доступен по прямой ссылке на ЦУС https://192.168.23.9 (логин: admin, пароль: Ng3-dcc20). Возможно потребуется прописать маршрут в сеть 192.168.23.0/24 через 192.168.2.150.&lt;br /&gt;
&lt;br /&gt;
Для передачи данных используется websocket соединение wss://192.168.23.9/websockets. В его сообщениях можно найти примеры запросов данных. Например:&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;&lt;br /&gt;
{&amp;quot;admin_uuid&amp;quot;:&amp;quot;cc578ec9-f733-4475-9a04-d8f6649af990&amp;quot;,&amp;quot;cmd&amp;quot;:&amp;quot;node_info&amp;quot;,&amp;quot;ids&amp;quot;:[1000,1001,1002]}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Для тестирования можно создать websocket соединение через Postman. Аутентификация не требуется.&lt;br /&gt;
&lt;br /&gt;
== API конфигурирования ==&lt;br /&gt;
&lt;br /&gt;
=== Обеспечение доступа ===&lt;br /&gt;
Для обеспечения доступа к API необходимо изменить настройки nginx на ЦУС: /var/cont/nginx.conf. В файле настроке надо сделать копию секции &amp;quot;server { listen 444 default_server ssl;&amp;quot;. При этом надо изменить верхнюю строчку на &amp;quot;listen 4431 default_server;&amp;quot; . Так же надо найти секцию:&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
server {&lt;br /&gt;
    listen 4431 default_server ssl;&lt;br /&gt;
    &lt;br /&gt;
        &lt;br /&gt;
            listen 192.168.23.2:4431 ssl;&lt;br /&gt;
        &lt;br /&gt;
            listen 192.168.23.25:4431 ssl;&lt;br /&gt;
        &lt;br /&gt;
            listen 192.168.23.9:4431 ssl;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;и заменить все 4431 на, к примеру, 4432. Или вообще удалить эту секцию.&lt;br /&gt;
&lt;br /&gt;
Затем необходимо загрузить обновленные настройки командой nginx -s reload.&lt;br /&gt;
&lt;br /&gt;
Проверить доступ к API можно командой&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
curl -u admin:Ng3-dcc20  http://192.168.23.9:4431/api-v1-objects/config&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Раздел api-v1-objects ===&lt;br /&gt;
[[:Файл:C4 swagger api-v1-objects.json.txt|Swagger continent api-v1-objects]] &lt;br /&gt;
Для выполнения запросов из данной группы сначала необходимо получить идентификатор необходимой конфигурации (активной) запросом: &amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
curl -u admin:Ng3-dcc20  http://192.168.23.9:4431/api-v1-objects/config&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Затем полученный идентификатор можно использовать в URL остальных запросов. К примеру, если идентификатор конфигурации 1:&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
curl -u admin:Ng3-dcc20  http://192.168.23.9:4431/api-v1-objects/config/1/interfaceether&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Префикс всех запросов &#039;&#039;&#039;/api-v1-objects/&#039;&#039;&#039;&lt;/div&gt;</summary>
		<author><name>Entcor</name></author>
	</entry>
	<entry>
		<id>https://wiki.entcor.ru/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:C4_swagger_api-v1-objects.json.txt&amp;diff=304</id>
		<title>Файл:C4 swagger api-v1-objects.json.txt</title>
		<link rel="alternate" type="text/html" href="https://wiki.entcor.ru/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:C4_swagger_api-v1-objects.json.txt&amp;diff=304"/>
		<updated>2024-08-02T03:08:04Z</updated>

		<summary type="html">&lt;p&gt;Entcor: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Entcor</name></author>
	</entry>
	<entry>
		<id>https://wiki.entcor.ru/index.php?title=%D0%94%D0%BE%D1%81%D1%82%D1%83%D0%BF_%D0%BA_API_Continent&amp;diff=303</id>
		<title>Доступ к API Continent</title>
		<link rel="alternate" type="text/html" href="https://wiki.entcor.ru/index.php?title=%D0%94%D0%BE%D1%81%D1%82%D1%83%D0%BF_%D0%BA_API_Continent&amp;diff=303"/>
		<updated>2024-08-02T03:03:39Z</updated>

		<summary type="html">&lt;p&gt;Entcor: /* Swagger api-v1-objects */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Общее ==&lt;br /&gt;
Описание доступа к API  [[Continent]]&lt;br /&gt;
&lt;br /&gt;
== Мониторинг ==&lt;br /&gt;
Интерфейс подсистемы мониторинга доступен по прямой ссылке на ЦУС https://192.168.23.9 (логин: admin, пароль: Ng3-dcc20). Возможно потребуется прописать маршрут в сеть 192.168.23.0/24 через 192.168.2.150.&lt;br /&gt;
&lt;br /&gt;
Для передачи данных используется websocket соединение wss://192.168.23.9/websockets. В его сообщениях можно найти примеры запросов данных. Например:&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;&lt;br /&gt;
{&amp;quot;admin_uuid&amp;quot;:&amp;quot;cc578ec9-f733-4475-9a04-d8f6649af990&amp;quot;,&amp;quot;cmd&amp;quot;:&amp;quot;node_info&amp;quot;,&amp;quot;ids&amp;quot;:[1000,1001,1002]}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Для тестирования можно создать websocket соединение через Postman. Аутентификация не требуется.&lt;br /&gt;
&lt;br /&gt;
== API конфигурирования ==&lt;br /&gt;
&lt;br /&gt;
=== Обеспечение доступа ===&lt;br /&gt;
Для обеспечения доступа к API необходимо изменить настройки nginx на ЦУС: /var/cont/nginx.conf. В файле настроке надо сделать копию секции &amp;quot;server { listen 444 default_server ssl;&amp;quot;. При этом надо изменить верхнюю строчку на &amp;quot;listen 4431 default_server;&amp;quot; . Так же надо найти секцию:&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
server {&lt;br /&gt;
    listen 4431 default_server ssl;&lt;br /&gt;
    &lt;br /&gt;
        &lt;br /&gt;
            listen 192.168.23.2:4431 ssl;&lt;br /&gt;
        &lt;br /&gt;
            listen 192.168.23.25:4431 ssl;&lt;br /&gt;
        &lt;br /&gt;
            listen 192.168.23.9:4431 ssl;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;и заменить все 4431 на, к примеру, 4432. Или вообще удалить эту секцию.&lt;br /&gt;
&lt;br /&gt;
Затем необходимо загрузить обновленные настройки командой nginx -s reload.&lt;br /&gt;
&lt;br /&gt;
Проверить доступ к API можно командой&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
curl -u admin:Ng3-dcc20  http://192.168.23.9:4431/api-v1-objects/config&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Раздел api-v1-objects ===&lt;br /&gt;
[[Continent api-v1-objects swagger|Swagger continent api-v1-objects]] &lt;br /&gt;
Для выполнения запросов из данной группы сначала необходимо получить идентификатор необходимой конфигурации (активной) запросом: &amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
curl -u admin:Ng3-dcc20  http://192.168.23.9:4431/api-v1-objects/config&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Затем полученный идентификатор можно использовать в URL остальных запросов. К примеру, если идентификатор конфигурации 1:&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
curl -u admin:Ng3-dcc20  http://192.168.23.9:4431/api-v1-objects/config/1/interfaceether&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Префикс всех запросов &#039;&#039;&#039;/api-v1-objects/&#039;&#039;&#039;&lt;/div&gt;</summary>
		<author><name>Entcor</name></author>
	</entry>
	<entry>
		<id>https://wiki.entcor.ru/index.php?title=%D0%94%D0%BE%D1%81%D1%82%D1%83%D0%BF_%D0%BA_API_Continent&amp;diff=302</id>
		<title>Доступ к API Continent</title>
		<link rel="alternate" type="text/html" href="https://wiki.entcor.ru/index.php?title=%D0%94%D0%BE%D1%81%D1%82%D1%83%D0%BF_%D0%BA_API_Continent&amp;diff=302"/>
		<updated>2024-08-02T03:02:35Z</updated>

		<summary type="html">&lt;p&gt;Entcor: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Общее ==&lt;br /&gt;
Описание доступа к API  [[Continent]]&lt;br /&gt;
&lt;br /&gt;
== Мониторинг ==&lt;br /&gt;
Интерфейс подсистемы мониторинга доступен по прямой ссылке на ЦУС https://192.168.23.9 (логин: admin, пароль: Ng3-dcc20). Возможно потребуется прописать маршрут в сеть 192.168.23.0/24 через 192.168.2.150.&lt;br /&gt;
&lt;br /&gt;
Для передачи данных используется websocket соединение wss://192.168.23.9/websockets. В его сообщениях можно найти примеры запросов данных. Например:&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;&lt;br /&gt;
{&amp;quot;admin_uuid&amp;quot;:&amp;quot;cc578ec9-f733-4475-9a04-d8f6649af990&amp;quot;,&amp;quot;cmd&amp;quot;:&amp;quot;node_info&amp;quot;,&amp;quot;ids&amp;quot;:[1000,1001,1002]}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Для тестирования можно создать websocket соединение через Postman. Аутентификация не требуется.&lt;br /&gt;
&lt;br /&gt;
== API конфигурирования ==&lt;br /&gt;
&lt;br /&gt;
=== Обеспечение доступа ===&lt;br /&gt;
Для обеспечения доступа к API необходимо изменить настройки nginx на ЦУС: /var/cont/nginx.conf. В файле настроке надо сделать копию секции &amp;quot;server { listen 444 default_server ssl;&amp;quot;. При этом надо изменить верхнюю строчку на &amp;quot;listen 4431 default_server;&amp;quot; . Так же надо найти секцию:&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
server {&lt;br /&gt;
    listen 4431 default_server ssl;&lt;br /&gt;
    &lt;br /&gt;
        &lt;br /&gt;
            listen 192.168.23.2:4431 ssl;&lt;br /&gt;
        &lt;br /&gt;
            listen 192.168.23.25:4431 ssl;&lt;br /&gt;
        &lt;br /&gt;
            listen 192.168.23.9:4431 ssl;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;и заменить все 4431 на, к примеру, 4432. Или вообще удалить эту секцию.&lt;br /&gt;
&lt;br /&gt;
Затем необходимо загрузить обновленные настройки командой nginx -s reload.&lt;br /&gt;
&lt;br /&gt;
Проверить доступ к API можно командой&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
curl -u admin:Ng3-dcc20  http://192.168.23.9:4431/api-v1-objects/config&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Swagger api-v1-objects ===&lt;br /&gt;
[[Continent api-v1-objects swagger]]&lt;br /&gt;
Для выполнения запросов из данной группы сначала необходимо получить идентификатор необходимой конфигурации (активной) запросом: &amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
curl -u admin:Ng3-dcc20  http://192.168.23.9:4431/api-v1-objects/config&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Затем полученный идентификатор можно использовать в URL остальных запросов. К примеру, если идентификатор конфигурации 1:&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
curl -u admin:Ng3-dcc20  http://192.168.23.9:4431/api-v1-objects/config/1/interfaceether&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Префикс всех запросов &#039;&#039;&#039;/api-v1-objects/&#039;&#039;&#039;&lt;/div&gt;</summary>
		<author><name>Entcor</name></author>
	</entry>
	<entry>
		<id>https://wiki.entcor.ru/index.php?title=%D0%94%D0%BE%D1%81%D1%82%D1%83%D0%BF_%D0%BA_API_Continent&amp;diff=301</id>
		<title>Доступ к API Continent</title>
		<link rel="alternate" type="text/html" href="https://wiki.entcor.ru/index.php?title=%D0%94%D0%BE%D1%81%D1%82%D1%83%D0%BF_%D0%BA_API_Continent&amp;diff=301"/>
		<updated>2024-08-02T03:02:23Z</updated>

		<summary type="html">&lt;p&gt;Entcor: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Общее ==&lt;br /&gt;
Описание доступа к API  [[Continent]]&lt;br /&gt;
&lt;br /&gt;
== Мониторинг ==&lt;br /&gt;
Интерфейс подсистемы мониторинга доступен по прямой ссылке на ЦУС https://192.168.23.9 (логин: admin, пароль: Ng3-dcc20). Возможно потребуется прописать маршрут в сеть 192.168.23.0/24 через 192.168.2.150.&lt;br /&gt;
&lt;br /&gt;
Для передачи данных используется websocket соединение wss://192.168.23.9/websockets. В его сообщениях можно найти примеры запросов данных. Например:&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;&lt;br /&gt;
{&amp;quot;admin_uuid&amp;quot;:&amp;quot;cc578ec9-f733-4475-9a04-d8f6649af990&amp;quot;,&amp;quot;cmd&amp;quot;:&amp;quot;node_info&amp;quot;,&amp;quot;ids&amp;quot;:[1000,1001,1002]}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Для тестирования можно создать websocket соединение через Postman. Аутентификация не требуется.&lt;br /&gt;
&lt;br /&gt;
== API конфигурирования ==&lt;br /&gt;
&lt;br /&gt;
=== Обеспечение доступа ===&lt;br /&gt;
Для обеспечения доступа к API необходимо изменить настройки nginx на ЦУС: /var/cont/nginx.conf. В файле настроке надо сделать копию секции &amp;quot;server { listen 444 default_server ssl;&amp;quot;. При этом надо изменить верхнюю строчку на &amp;quot;listen 4431 default_server;&amp;quot; . Так же надо найти секцию:&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
server {&lt;br /&gt;
    listen 4431 default_server ssl;&lt;br /&gt;
    &lt;br /&gt;
        &lt;br /&gt;
            listen 192.168.23.2:4431 ssl;&lt;br /&gt;
        &lt;br /&gt;
            listen 192.168.23.25:4431 ssl;&lt;br /&gt;
        &lt;br /&gt;
            listen 192.168.23.9:4431 ssl;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;и заменить все 4431 на, к примеру, 4432. Или вообще удалить эту секцию.&lt;br /&gt;
&lt;br /&gt;
Затем необходимо загрузить обновленные настройки командой nginx -s reload.&lt;br /&gt;
&lt;br /&gt;
Проверить доступ к API можно командой&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
curl -u admin:Ng3-dcc20  http://192.168.23.9:4431/api-v1-objects/config&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Swagger api-v1-objects ===&lt;br /&gt;
[[Continent api-v1-objects swagger]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Для выполнения запросов из данной группы сначала необходимо получить идентификатор необходимой конфигурации (активной) запросом: &amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
curl -u admin:Ng3-dcc20  http://192.168.23.9:4431/api-v1-objects/config&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Затем полученный идентификатор можно использовать в URL остальных запросов. К примеру, если идентификатор конфигурации 1:&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
curl -u admin:Ng3-dcc20  http://192.168.23.9:4431/api-v1-objects/config/1/interfaceether&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Префикс всех запросов &#039;&#039;&#039;/api-v1-objects/&#039;&#039;&#039;&lt;/div&gt;</summary>
		<author><name>Entcor</name></author>
	</entry>
	<entry>
		<id>https://wiki.entcor.ru/index.php?title=%D0%98%D0%BD%D1%82%D0%B5%D0%B3%D1%80%D0%B0%D1%86%D0%B8%D1%8F_enode_%D0%B8_continent&amp;diff=300</id>
		<title>Интеграция enode и continent</title>
		<link rel="alternate" type="text/html" href="https://wiki.entcor.ru/index.php?title=%D0%98%D0%BD%D1%82%D0%B5%D0%B3%D1%80%D0%B0%D1%86%D0%B8%D1%8F_enode_%D0%B8_continent&amp;diff=300"/>
		<updated>2024-08-02T03:01:03Z</updated>

		<summary type="html">&lt;p&gt;Entcor: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Host agent, как сервис ==&lt;br /&gt;
&lt;br /&gt;
# Копируем host agent в папку /root&lt;br /&gt;
# Меняем конфигурацию. В качестве agentId указываем идентификатор УБ. Его можно получить командой uname -n. Пример:&amp;lt;syntaxhighlight lang=&amp;quot;yaml&amp;quot;&amp;gt;&lt;br /&gt;
agentId:&lt;br /&gt;
    node-1000&lt;br /&gt;
servers:&lt;br /&gt;
  - 192.168.23.1&lt;br /&gt;
inspector:&lt;br /&gt;
    active: true&lt;br /&gt;
    netInfo: true&lt;br /&gt;
    netProcessesInfo: false&lt;br /&gt;
    dockerInfo: false&lt;br /&gt;
    resourcesInfo: false&lt;br /&gt;
    statisticsPeriodSec: 5&lt;br /&gt;
    resourcesPeriodSec: 60&lt;br /&gt;
    printStat: false&lt;br /&gt;
    sendStat: true&lt;br /&gt;
    statPort: 80&lt;br /&gt;
firewall:&lt;br /&gt;
    active: true&lt;br /&gt;
    initFromFile: false&lt;br /&gt;
    isDeniedByDefault: false&lt;br /&gt;
sdwan: &lt;br /&gt;
    active: false&lt;br /&gt;
    nodeType: 2&lt;br /&gt;
    connectionsAmount: 3&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# Настраиваем сервис upstart. Для этого создаем файл /etc/init/enode.conf, содержащий:&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
description &amp;quot;enode host agent&amp;quot;&lt;br /&gt;
author &amp;quot;entcore&amp;quot;&lt;br /&gt;
start on stopped start-ttys and rclocal_finished and runlevel [3]&lt;br /&gt;
stop on runlevel [012456]&lt;br /&gt;
pre-start exec sleep 60&lt;br /&gt;
script&lt;br /&gt;
	iptables -P OUTPUT ACCEPT&lt;br /&gt;
	iptables -t mangle -P PREROUTING  ACCEPT&lt;br /&gt;
	cd /root/distr/amd64&lt;br /&gt;
	exec /root/distr/amd64/host_agent_linux --config /root/distr/amd64/config.yaml &amp;gt;/var/log/enode_ha.log 2&amp;gt;&amp;amp;1 &lt;br /&gt;
end script&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# Для управления сервисом используем команды:&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
initctl start enode&lt;br /&gt;
initctl stop enode&lt;br /&gt;
initctl status enode&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Запуск сервиса будет длиться минуту. Это специальная задержка нужна что бы при загрузке ОС host agent запустился только после полной инициализации системы. Иначе наши изменения в цепочках iptables будут затерты. Данное поведение можно изменить в файле /etc/init/enode.conf&lt;br /&gt;
# Логи в файле /var/log/enode_ha.log&lt;br /&gt;
&lt;br /&gt;
== Настройки iptables ==&lt;br /&gt;
По-умолчанию, в continent заблокированы исходящие пакеты (цепочка OUTPUT), что не дает взаимодействовать агенту и серверу. Это можно изменить командой &#039;&#039;&#039;iptables -P OUTPUT ACCEPT.&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
Сервис enode исполняет эту команду перед запуском агента, но если изменить и применить конфигурацию через ЦУС, то настройки iptables восстановятся и придется исполнять эту команду вручную. &#039;&#039;Как это обойти пока не понятно.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Так же для bpf маршрутизации может потребоваться выполнить команду &#039;&#039;&#039;iptables -t mangle -P PREROUTING  ACCEPT&#039;&#039;&#039;&lt;/div&gt;</summary>
		<author><name>Entcor</name></author>
	</entry>
	<entry>
		<id>https://wiki.entcor.ru/index.php?title=%D0%94%D0%BE%D1%81%D1%82%D1%83%D0%BF_%D0%BA_API_Continent&amp;diff=299</id>
		<title>Доступ к API Continent</title>
		<link rel="alternate" type="text/html" href="https://wiki.entcor.ru/index.php?title=%D0%94%D0%BE%D1%81%D1%82%D1%83%D0%BF_%D0%BA_API_Continent&amp;diff=299"/>
		<updated>2024-08-02T02:59:53Z</updated>

		<summary type="html">&lt;p&gt;Entcor: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Общее ==&lt;br /&gt;
Описание доступа к API  [[Continent]]&lt;br /&gt;
&lt;br /&gt;
== Мониторинг ==&lt;br /&gt;
Интерфейс подсистемы мониторинга доступен по прямой ссылке на ЦУС https://192.168.23.9 (логин: admin, пароль: Ng3-dcc20). Возможно потребуется прописать маршрут в сеть 192.168.23.0/24 через 192.168.2.150.&lt;br /&gt;
&lt;br /&gt;
Для передачи данных используется websocket соединение wss://192.168.23.9/websockets. В его сообщениях можно найти примеры запросов данных. Например:&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;&lt;br /&gt;
{&amp;quot;admin_uuid&amp;quot;:&amp;quot;cc578ec9-f733-4475-9a04-d8f6649af990&amp;quot;,&amp;quot;cmd&amp;quot;:&amp;quot;node_info&amp;quot;,&amp;quot;ids&amp;quot;:[1000,1001,1002]}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Для тестирования можно создать websocket соединение через Postman. Аутентификация не требуется.&lt;br /&gt;
&lt;br /&gt;
== API конфигурирования ==&lt;br /&gt;
&lt;br /&gt;
=== Обеспечение доступа ===&lt;br /&gt;
Для обеспечения доступа к API необходимо изменить настройки nginx на ЦУС: /var/cont/nginx.conf. В файле настроке надо сделать копию секции &amp;quot;server { listen 444 default_server ssl;&amp;quot;. При этом надо изменить верхнюю строчку на &amp;quot;listen 4431 default_server;&amp;quot; . Так же надо найти секцию:&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
server {&lt;br /&gt;
    listen 4431 default_server ssl;&lt;br /&gt;
    &lt;br /&gt;
        &lt;br /&gt;
            listen 192.168.23.2:4431 ssl;&lt;br /&gt;
        &lt;br /&gt;
            listen 192.168.23.25:4431 ssl;&lt;br /&gt;
        &lt;br /&gt;
            listen 192.168.23.9:4431 ssl;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;и заменить все 4431 на, к примеру, 4432. Или вообще удалить эту секцию.&lt;br /&gt;
&lt;br /&gt;
Затем необходимо загрузить обновленные настройки командой nginx -s reload.&lt;br /&gt;
&lt;br /&gt;
Проверить доступ к API можно командой&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
curl -u admin:Ng3-dcc20  http://192.168.23.9:4431/api-v1-objects/config&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Swagger api-v1-objects ===&lt;br /&gt;
Для выполнения запросов из данной группы сначала необходимо получить идентификатор необходимой конфигурации (активной) запросом: &amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
curl -u admin:Ng3-dcc20  http://192.168.23.9:4431/api-v1-objects/config&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Затем полученный идентификатор можно использовать в URL остальных запросов. К примеру, если идентификатор конфигурации 1:&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
curl -u admin:Ng3-dcc20  http://192.168.23.9:4431/api-v1-objects/config/1/interfaceether&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Префикс всех запросов &#039;&#039;&#039;/api-v1-objects/&#039;&#039;&#039;&lt;/div&gt;</summary>
		<author><name>Entcor</name></author>
	</entry>
	<entry>
		<id>https://wiki.entcor.ru/index.php?title=%D0%94%D0%BE%D1%81%D1%82%D1%83%D0%BF_%D0%BA_API_Continent&amp;diff=298</id>
		<title>Доступ к API Continent</title>
		<link rel="alternate" type="text/html" href="https://wiki.entcor.ru/index.php?title=%D0%94%D0%BE%D1%81%D1%82%D1%83%D0%BF_%D0%BA_API_Continent&amp;diff=298"/>
		<updated>2024-08-02T02:58:18Z</updated>

		<summary type="html">&lt;p&gt;Entcor: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Мониторинг ==&lt;br /&gt;
Интерфейс подсистемы мониторинга доступен по прямой ссылке на ЦУС https://192.168.23.9 (логин: admin, пароль: Ng3-dcc20). Возможно потребуется прописать маршрут в сеть 192.168.23.0/24 через 192.168.2.150.&lt;br /&gt;
&lt;br /&gt;
Для передачи данных используется websocket соединение wss://192.168.23.9/websockets. В его сообщениях можно найти примеры запросов данных. Например:&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;&lt;br /&gt;
{&amp;quot;admin_uuid&amp;quot;:&amp;quot;cc578ec9-f733-4475-9a04-d8f6649af990&amp;quot;,&amp;quot;cmd&amp;quot;:&amp;quot;node_info&amp;quot;,&amp;quot;ids&amp;quot;:[1000,1001,1002]}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Для тестирования можно создать websocket соединение через Postman. Аутентификация не требуется.&lt;br /&gt;
&lt;br /&gt;
== API конфигурирования ==&lt;br /&gt;
&lt;br /&gt;
=== Обеспечение доступа ===&lt;br /&gt;
Для обеспечения доступа к API необходимо изменить настройки nginx на ЦУС: /var/cont/nginx.conf. В файле настроке надо сделать копию секции &amp;quot;server { listen 444 default_server ssl;&amp;quot;. При этом надо изменить верхнюю строчку на &amp;quot;listen 4431 default_server;&amp;quot; . Так же надо найти секцию:&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
server {&lt;br /&gt;
    listen 4431 default_server ssl;&lt;br /&gt;
    &lt;br /&gt;
        &lt;br /&gt;
            listen 192.168.23.2:4431 ssl;&lt;br /&gt;
        &lt;br /&gt;
            listen 192.168.23.25:4431 ssl;&lt;br /&gt;
        &lt;br /&gt;
            listen 192.168.23.9:4431 ssl;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;и заменить все 4431 на, к примеру, 4432. Или вообще удалить эту секцию.&lt;br /&gt;
&lt;br /&gt;
Затем необходимо загрузить обновленные настройки командой nginx -s reload.&lt;br /&gt;
&lt;br /&gt;
Проверить доступ к API можно командой&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
curl -u admin:Ng3-dcc20  http://192.168.23.9:4431/api-v1-objects/config&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Swagger api-v1-objects ===&lt;br /&gt;
Для выполнения запросов из данной группы сначала необходимо получить идентификатор необходимой конфигурации (активной) запросом: &amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
curl -u admin:Ng3-dcc20  http://192.168.23.9:4431/api-v1-objects/config&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Затем полученный идентификатор можно использовать в URL остальных запросов. К примеру, если идентификатор конфигурации 1:&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
curl -u admin:Ng3-dcc20  http://192.168.23.9:4431/api-v1-objects/config/1/interfaceether&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Префикс всех запросов &#039;&#039;&#039;/api-v1-objects/&#039;&#039;&#039;&lt;/div&gt;</summary>
		<author><name>Entcor</name></author>
	</entry>
	<entry>
		<id>https://wiki.entcor.ru/index.php?title=%D0%94%D0%BE%D1%81%D1%82%D1%83%D0%BF_%D0%BA_API_Continent&amp;diff=297</id>
		<title>Доступ к API Continent</title>
		<link rel="alternate" type="text/html" href="https://wiki.entcor.ru/index.php?title=%D0%94%D0%BE%D1%81%D1%82%D1%83%D0%BF_%D0%BA_API_Continent&amp;diff=297"/>
		<updated>2024-08-02T02:42:44Z</updated>

		<summary type="html">&lt;p&gt;Entcor: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Мониторинг ==&lt;br /&gt;
Интерфейс подсистемы мониторинга доступен по прямой ссылке на ЦУС https://192.168.23.9 (логин: admin, пароль: Ng3-dcc20). Возможно потребуется прописать маршрут в сеть 192.168.23.0/24 через 192.168.2.150.&lt;br /&gt;
&lt;br /&gt;
Для передачи данных используется websocket соединение wss://192.168.23.9/websockets. В его сообщениях можно найти примеры запросов данных. Например:&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;&lt;br /&gt;
{&amp;quot;admin_uuid&amp;quot;:&amp;quot;cc578ec9-f733-4475-9a04-d8f6649af990&amp;quot;,&amp;quot;cmd&amp;quot;:&amp;quot;node_info&amp;quot;,&amp;quot;ids&amp;quot;:[1000,1001,1002]}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Для тестирования можно создать websocket соединение через Postman. Аутентификация не требуется.&lt;br /&gt;
&lt;br /&gt;
== API конфигурирования ==&lt;br /&gt;
&lt;br /&gt;
=== Обеспечение доступа ===&lt;br /&gt;
Для обеспечения доступа к API необходимо изменить настройки nginx на ЦУС: /var/cont/nginx.conf. В файле настроке надо сделать копию секции &amp;quot;server { listen 444 default_server ssl;&amp;quot;. При этом надо изменить верхнюю строчку на &amp;quot;listen 4431 default_server;&amp;quot; . Так же надо найти секцию:&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
server {&lt;br /&gt;
    listen 4431 default_server ssl;&lt;br /&gt;
    &lt;br /&gt;
        &lt;br /&gt;
            listen 192.168.23.2:4431 ssl;&lt;br /&gt;
        &lt;br /&gt;
            listen 192.168.23.25:4431 ssl;&lt;br /&gt;
        &lt;br /&gt;
            listen 192.168.23.9:4431 ssl;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;и заменить все 4431 на, к примеру, 4432. Или вообще удалить эту секцию.&lt;br /&gt;
&lt;br /&gt;
Затем необходимо загрузить обновленные настройки командой nginx -s reload.&lt;br /&gt;
&lt;br /&gt;
Проверить доступ к API можно командой&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
curl -u admin:Ng3-dcc20  http://192.168.23.9:4431/api-v1-objects/config&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Entcor</name></author>
	</entry>
	<entry>
		<id>https://wiki.entcor.ru/index.php?title=%D0%94%D0%BE%D1%81%D1%82%D1%83%D0%BF_%D0%BA_API_Continent&amp;diff=296</id>
		<title>Доступ к API Continent</title>
		<link rel="alternate" type="text/html" href="https://wiki.entcor.ru/index.php?title=%D0%94%D0%BE%D1%81%D1%82%D1%83%D0%BF_%D0%BA_API_Continent&amp;diff=296"/>
		<updated>2024-08-02T02:22:23Z</updated>

		<summary type="html">&lt;p&gt;Entcor: Новая страница: «== Мониторинг == Интерфейс подсистемы мониторинга доступен по прямой ссылке на ЦУС https://192.168.23.9 (логин: admin, пароль: Ng3-dcc20). Возможно потребуется прописать маршрут в сеть 192.168.23.0/24 через 192.168.2.150.  Для передачи данных используется websocket соединение wss://192.168.23.9/webs...»&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Мониторинг ==&lt;br /&gt;
Интерфейс подсистемы мониторинга доступен по прямой ссылке на ЦУС https://192.168.23.9 (логин: admin, пароль: Ng3-dcc20). Возможно потребуется прописать маршрут в сеть 192.168.23.0/24 через 192.168.2.150.&lt;br /&gt;
&lt;br /&gt;
Для передачи данных используется websocket соединение wss://192.168.23.9/websockets. В его сообщениях можно найти примеры запросов данных. Например:&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;&lt;br /&gt;
{&amp;quot;admin_uuid&amp;quot;:&amp;quot;cc578ec9-f733-4475-9a04-d8f6649af990&amp;quot;,&amp;quot;cmd&amp;quot;:&amp;quot;node_info&amp;quot;,&amp;quot;ids&amp;quot;:[1000,1001,1002]}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Для тестирования можно создать websocket соединение через Postman. Аутентификация не требуется.&lt;/div&gt;</summary>
		<author><name>Entcor</name></author>
	</entry>
	<entry>
		<id>https://wiki.entcor.ru/index.php?title=Continent&amp;diff=295</id>
		<title>Continent</title>
		<link rel="alternate" type="text/html" href="https://wiki.entcor.ru/index.php?title=Continent&amp;diff=295"/>
		<updated>2024-08-02T02:08:17Z</updated>

		<summary type="html">&lt;p&gt;Entcor: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[https://www.securitycode.ru/products/kontinent-4/?tab=support Документация]&lt;br /&gt;
&lt;br /&gt;
[https://www.securitycode.ru/download_center/?section=stands&amp;amp;version=null&amp;amp;product=%D0%9A%D0%BE%D0%BD%D1%82%D0%B8%D0%BD%D0%B5%D0%BD%D1%82%204 Скачать]&lt;br /&gt;
&lt;br /&gt;
[[Инструкции по Continent]]&lt;br /&gt;
&lt;br /&gt;
[[Интеграция enode и continent]]&lt;br /&gt;
&lt;br /&gt;
[[Доступ к API Continent]]&lt;br /&gt;
&lt;br /&gt;
[[Производительность enode и continent]]&lt;/div&gt;</summary>
		<author><name>Entcor</name></author>
	</entry>
	<entry>
		<id>https://wiki.entcor.ru/index.php?title=%D0%98%D0%BD%D1%82%D0%B5%D0%B3%D1%80%D0%B0%D1%86%D0%B8%D1%8F_enode_%D0%B8_continent&amp;diff=291</id>
		<title>Интеграция enode и continent</title>
		<link rel="alternate" type="text/html" href="https://wiki.entcor.ru/index.php?title=%D0%98%D0%BD%D1%82%D0%B5%D0%B3%D1%80%D0%B0%D1%86%D0%B8%D1%8F_enode_%D0%B8_continent&amp;diff=291"/>
		<updated>2024-06-21T08:32:40Z</updated>

		<summary type="html">&lt;p&gt;Entcor: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Host agent, как сервис ==&lt;br /&gt;
&lt;br /&gt;
# Копируем host agent в папку /root&lt;br /&gt;
# Меняем конфигурацию. В качестве agentId указываем идентификатор УБ. Его можно получить командой uname -n. Пример:&amp;lt;syntaxhighlight lang=&amp;quot;yaml&amp;quot;&amp;gt;&lt;br /&gt;
agentId:&lt;br /&gt;
    node-1000&lt;br /&gt;
servers:&lt;br /&gt;
  - 192.168.23.1&lt;br /&gt;
inspector:&lt;br /&gt;
    active: true&lt;br /&gt;
    netInfo: true&lt;br /&gt;
    netProcessesInfo: false&lt;br /&gt;
    dockerInfo: false&lt;br /&gt;
    resourcesInfo: false&lt;br /&gt;
    statisticsPeriodSec: 5&lt;br /&gt;
    resourcesPeriodSec: 60&lt;br /&gt;
    printStat: false&lt;br /&gt;
    sendStat: true&lt;br /&gt;
    statPort: 80&lt;br /&gt;
firewall:&lt;br /&gt;
    active: true&lt;br /&gt;
    initFromFile: false&lt;br /&gt;
    isDeniedByDefault: false&lt;br /&gt;
sdwan: &lt;br /&gt;
    active: false&lt;br /&gt;
    nodeType: 2&lt;br /&gt;
    connectionsAmount: 3&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# Настраиваем сервис upstart. Для этого создаем файл /etc/init/enode.conf, содержащий:&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
description &amp;quot;enode host agent&amp;quot;&lt;br /&gt;
author &amp;quot;entcore&amp;quot;&lt;br /&gt;
start on stopped start-ttys and rclocal_finished and runlevel [3]&lt;br /&gt;
stop on runlevel [012456]&lt;br /&gt;
pre-start exec sleep 60&lt;br /&gt;
script&lt;br /&gt;
	iptables -P OUTPUT ACCEPT&lt;br /&gt;
	iptables -t mangle -P PREROUTING  ACCEPT&lt;br /&gt;
	cd /root/distr/amd64&lt;br /&gt;
	exec /root/distr/amd64/host_agent_linux --config /root/distr/amd64/config.yaml &amp;gt;/var/log/enode_ha.log 2&amp;gt;&amp;amp;1 &lt;br /&gt;
end script&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# Для управления сервисом используем команды:&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
initctl start enode&lt;br /&gt;
initctl stop enode&lt;br /&gt;
initctl status enode&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Запуск сервиса будет длиться минуту. Это специальная задержка нужна что бы при загрузке ОС host agent запустился только после полной инициализации системы. Иначе наши изменения в цепочках iptables будут затерты. Данное поведение можно изменить в файле /etc/init/enode.conf&lt;br /&gt;
# Логи в файле /var/log/enode_ha.log&lt;br /&gt;
&lt;br /&gt;
== Настройки iptables ==&lt;br /&gt;
По-умолчанию, в continent заблокированы исходящие пакеты (цепочка OUTPUT). Это не дает взаимодействовать агенту и серверу. Это можно изменить командой &#039;&#039;&#039;iptables -P OUTPUT ACCEPT.&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
Сервис enode исполняет эту команду перед запуском агента, но если изменить и применить конфигурацию через ЦУС, то настройки iptables восстановятся и придется исполнять эту команду вручную. &#039;&#039;Как это обойти пока не понятно.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Так же для bpf маршрутизации может потребоваться выполнить команду &#039;&#039;&#039;iptables -t mangle -P PREROUTING  ACCEPT&#039;&#039;&#039;&lt;/div&gt;</summary>
		<author><name>Entcor</name></author>
	</entry>
	<entry>
		<id>https://wiki.entcor.ru/index.php?title=%D0%9F%D1%80%D0%BE%D0%B8%D0%B7%D0%B2%D0%BE%D0%B4%D0%B8%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D0%BE%D1%81%D1%82%D1%8C_enode_%D0%B8_continent&amp;diff=290</id>
		<title>Производительность enode и continent</title>
		<link rel="alternate" type="text/html" href="https://wiki.entcor.ru/index.php?title=%D0%9F%D1%80%D0%BE%D0%B8%D0%B7%D0%B2%D0%BE%D0%B4%D0%B8%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D0%BE%D1%81%D1%82%D1%8C_enode_%D0%B8_continent&amp;diff=290"/>
		<updated>2024-06-21T08:28:58Z</updated>

		<summary type="html">&lt;p&gt;Entcor: Новая страница: «== Скачивание файл 512МБт по HTTP (wget) == {| class=&amp;quot;wikitable&amp;quot; |+ !Вариант !Время, c !Больше на % |- |mesh |33 |0 |- |hub&amp;amp;spoke |46 |40 |- |hostagent |53 |60 |}»&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Скачивание файл 512МБт по HTTP (wget) ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
!Вариант&lt;br /&gt;
!Время, c&lt;br /&gt;
!Больше на %&lt;br /&gt;
|-&lt;br /&gt;
|mesh&lt;br /&gt;
|33&lt;br /&gt;
|0&lt;br /&gt;
|-&lt;br /&gt;
|hub&amp;amp;spoke&lt;br /&gt;
|46&lt;br /&gt;
|40&lt;br /&gt;
|-&lt;br /&gt;
|hostagent&lt;br /&gt;
|53&lt;br /&gt;
|60&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Entcor</name></author>
	</entry>
	<entry>
		<id>https://wiki.entcor.ru/index.php?title=Continent&amp;diff=289</id>
		<title>Continent</title>
		<link rel="alternate" type="text/html" href="https://wiki.entcor.ru/index.php?title=Continent&amp;diff=289"/>
		<updated>2024-06-21T08:24:38Z</updated>

		<summary type="html">&lt;p&gt;Entcor: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[https://www.securitycode.ru/products/kontinent-4/?tab=support Документация]&lt;br /&gt;
&lt;br /&gt;
[https://www.securitycode.ru/download_center/?section=stands&amp;amp;version=null&amp;amp;product=%D0%9A%D0%BE%D0%BD%D1%82%D0%B8%D0%BD%D0%B5%D0%BD%D1%82%204 Скачать]&lt;br /&gt;
&lt;br /&gt;
[[Инструкции по Continent]]&lt;br /&gt;
&lt;br /&gt;
[[Интеграция enode и continent]]&lt;br /&gt;
&lt;br /&gt;
[[Производительность enode и continent]]&lt;/div&gt;</summary>
		<author><name>Entcor</name></author>
	</entry>
	<entry>
		<id>https://wiki.entcor.ru/index.php?title=%D0%98%D0%BD%D1%82%D0%B5%D0%B3%D1%80%D0%B0%D1%86%D0%B8%D1%8F_enode_%D0%B8_continent&amp;diff=286</id>
		<title>Интеграция enode и continent</title>
		<link rel="alternate" type="text/html" href="https://wiki.entcor.ru/index.php?title=%D0%98%D0%BD%D1%82%D0%B5%D0%B3%D1%80%D0%B0%D1%86%D0%B8%D1%8F_enode_%D0%B8_continent&amp;diff=286"/>
		<updated>2024-06-20T01:55:07Z</updated>

		<summary type="html">&lt;p&gt;Entcor: Новая страница: «== Host agent, как сервис ==  # Копируем host agent в папку /root # Меняем конфигурацию. В качестве agentId указываем идентификатор УБ. Его можно получить командой uname -n. Пример:&amp;lt;syntaxhighlight lang=&amp;quot;yaml&amp;quot;&amp;gt; agentId:     node-1000 servers:   - 192.168.23.1 inspector:     active: true     netInfo: true     netProcessesInfo: false     dockerInfo: false...»&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Host agent, как сервис ==&lt;br /&gt;
&lt;br /&gt;
# Копируем host agent в папку /root&lt;br /&gt;
# Меняем конфигурацию. В качестве agentId указываем идентификатор УБ. Его можно получить командой uname -n. Пример:&amp;lt;syntaxhighlight lang=&amp;quot;yaml&amp;quot;&amp;gt;&lt;br /&gt;
agentId:&lt;br /&gt;
    node-1000&lt;br /&gt;
servers:&lt;br /&gt;
  - 192.168.23.1&lt;br /&gt;
inspector:&lt;br /&gt;
    active: true&lt;br /&gt;
    netInfo: true&lt;br /&gt;
    netProcessesInfo: false&lt;br /&gt;
    dockerInfo: false&lt;br /&gt;
    resourcesInfo: false&lt;br /&gt;
    statisticsPeriodSec: 5&lt;br /&gt;
    resourcesPeriodSec: 60&lt;br /&gt;
    printStat: false&lt;br /&gt;
    sendStat: true&lt;br /&gt;
    statPort: 80&lt;br /&gt;
firewall:&lt;br /&gt;
    active: true&lt;br /&gt;
    initFromFile: false&lt;br /&gt;
    isDeniedByDefault: false&lt;br /&gt;
sdwan: &lt;br /&gt;
    active: false&lt;br /&gt;
    nodeType: 2&lt;br /&gt;
    connectionsAmount: 3&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# Настраиваем сервис upstart. Для этого создаем файл /etc/init/enode.conf, содержащий:&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
description &amp;quot;enode host agent&amp;quot;&lt;br /&gt;
author &amp;quot;entcore&amp;quot;&lt;br /&gt;
start on stopped start-ttys and rclocal_finished and runlevel [3]&lt;br /&gt;
stop on runlevel [012456]&lt;br /&gt;
pre-start exec sleep 60&lt;br /&gt;
script&lt;br /&gt;
	iptables -P OUTPUT ACCEPT&lt;br /&gt;
	exec /root/distr/amd64/host_agent_linux --config /root/distr/amd64/config.yaml &amp;gt;/var/log/enode_ha.log 2&amp;gt;&amp;amp;1 &lt;br /&gt;
end script&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# Для управления сервисом используем команды:&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
initctl start enode&lt;br /&gt;
initctl stop enode&lt;br /&gt;
initctl status enode&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Запуск сервиса будет длиться минуту. Это специальная задержка нужна что бы при загрузке ОС host agent запустился только после полной инициализации системы. Иначе наши изменения в цепочках iptables будут затерты. Данное поведение можно изменить в файле /etc/init/enode.conf&lt;br /&gt;
# Логи в файле /var/log/enode_ha.log&lt;br /&gt;
&lt;br /&gt;
== Настройки iptables ==&lt;br /&gt;
По-умолчанию, в continent заблокированы исходящие пакеты (цепочка OUTPUT). Это не дает взаимодействовать агенту и серверу. Это можно изменить командой &#039;&#039;&#039;iptables -P OUTPUT ACCEPT.&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
Сервис enode исполняет эту команду перед запуском агента, но если изменить и применить конфигурацию через ЦУС, то настройки iptables восстановятся и придется исполнять эту команду вручную. &#039;&#039;Как это обойти пока не понятно.&#039;&#039;&lt;/div&gt;</summary>
		<author><name>Entcor</name></author>
	</entry>
	<entry>
		<id>https://wiki.entcor.ru/index.php?title=Continent&amp;diff=285</id>
		<title>Continent</title>
		<link rel="alternate" type="text/html" href="https://wiki.entcor.ru/index.php?title=Continent&amp;diff=285"/>
		<updated>2024-06-20T01:11:15Z</updated>

		<summary type="html">&lt;p&gt;Entcor: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[https://www.securitycode.ru/products/kontinent-4/?tab=support Документация]&lt;br /&gt;
&lt;br /&gt;
[https://www.securitycode.ru/download_center/?section=stands&amp;amp;version=null&amp;amp;product=%D0%9A%D0%BE%D0%BD%D1%82%D0%B8%D0%BD%D0%B5%D0%BD%D1%82%204 Скачать]&lt;br /&gt;
&lt;br /&gt;
[[Инструкции по Continent]]&lt;br /&gt;
&lt;br /&gt;
[[Интеграция enode и continent]]&lt;/div&gt;</summary>
		<author><name>Entcor</name></author>
	</entry>
	<entry>
		<id>https://wiki.entcor.ru/index.php?title=Continent&amp;diff=284</id>
		<title>Continent</title>
		<link rel="alternate" type="text/html" href="https://wiki.entcor.ru/index.php?title=Continent&amp;diff=284"/>
		<updated>2024-06-20T01:08:52Z</updated>

		<summary type="html">&lt;p&gt;Entcor: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[https://www.securitycode.ru/products/kontinent-4/?tab=support Документация]&lt;br /&gt;
&lt;br /&gt;
[https://www.securitycode.ru/download_center/?section=stands&amp;amp;version=null&amp;amp;product=%D0%9A%D0%BE%D0%BD%D1%82%D0%B8%D0%BD%D0%B5%D0%BD%D1%82%204 Скачать]&lt;br /&gt;
&lt;br /&gt;
[[Инструкции по Continent]]&lt;br /&gt;
&lt;br /&gt;
Интеграция enode и continent&lt;/div&gt;</summary>
		<author><name>Entcor</name></author>
	</entry>
	<entry>
		<id>https://wiki.entcor.ru/index.php?title=%D0%97%D0%B0%D0%B4%D0%B0%D1%87%D0%B8_(%D0%BD%D0%B0_%D0%BF%D1%80%D0%BE%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D1%83)&amp;diff=283</id>
		<title>Задачи (на проработку)</title>
		<link rel="alternate" type="text/html" href="https://wiki.entcor.ru/index.php?title=%D0%97%D0%B0%D0%B4%D0%B0%D1%87%D0%B8_(%D0%BD%D0%B0_%D0%BF%D1%80%D0%BE%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D1%83)&amp;diff=283"/>
		<updated>2024-06-19T01:53:11Z</updated>

		<summary type="html">&lt;p&gt;Entcor: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Производительность:&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
- Алгоритм классификации пакетов (перебор правил)  &lt;br /&gt;
&lt;br /&gt;
- Для хранения правил использовать структуры, как в ipset  &lt;br /&gt;
&lt;br /&gt;
- Cache вердиктов fw (conntrack)  &lt;br /&gt;
&lt;br /&gt;
- Вердикт на обратный трафик на основе conntrack (сейчас требуется обратное правило)  &lt;br /&gt;
&lt;br /&gt;
- Часть правил хранить в userspace и подгружать только по необходимости в BPF. Отдельно заполнять таблицу с описанимем пакетов, не попадающих под правила, чтобы постоянно не лезть в userspace  &lt;br /&gt;
&lt;br /&gt;
- Ограничение по количеству правил (не хватает стека?) &lt;br /&gt;
&lt;br /&gt;
- Переход на ringbuffer (kernel &amp;gt;= 5.8) или BPF_MAP_TYPE_LRU_HASH (https://github.com/cloudflare/ebpf_exporter) или BPF_MAP_TYPE_PERCPU_HASH (https://justin.azoff.dev/blog/bpf_map_get_next_key-pitfalls/) &lt;br /&gt;
&lt;br /&gt;
- Подписка вместо опроса (docker, devices, info) &lt;br /&gt;
&lt;br /&gt;
- ip адреса передавать как числа (можно ли тип number в JS?) &lt;br /&gt;
&lt;br /&gt;
- Формат передачи статистики (не HTTP?) (перехода на Push режим в части данных)  &lt;br /&gt;
&lt;br /&gt;
- Передавать статистику не как JSON или сокращаеть его максимально. Сейчас очень большие объемы лишних данных (ключей) передаем  &lt;br /&gt;
&lt;br /&gt;
- Нужно автоматическое нагрузочное тестирование  &lt;br /&gt;
&lt;br /&gt;
- Удалить отладочную информацию (stripped)   &lt;br /&gt;
&lt;br /&gt;
https://www.codingexplorations.com/blog/reducing-binary-size-in-go-strip-unnecessary-data-with-ldflags-w-s  &lt;br /&gt;
&lt;br /&gt;
https://words.filippo.io/shrink-your-go-binaries-with-this-one-weird-trick/&lt;br /&gt;
  &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Распределенная система / надежность:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
- Обрабатывать потерю связи HA с внешними сервисами (сейчас возможно зависание всего цикла отправки из-за недоступности http) &lt;br /&gt;
&lt;br /&gt;
- Агент в оффлайне &lt;br /&gt;
&lt;br /&gt;
- Формирование отказоустойчивый модели зукипепов - возможно распределенной &lt;br /&gt;
&lt;br /&gt;
- Запуск на старом ядре с контролем его версии. При стром ядре запускаем анент, но кернел спейс запуститься не моожет. Пусть юзер часть запустится и отрапартнует пакетом на сервер о старом ядре &lt;br /&gt;
&lt;br /&gt;
- деградация функций    &lt;br /&gt;
&lt;br /&gt;
- сохранение в файл конфигурации и правил    &lt;br /&gt;
&lt;br /&gt;
- после пересоздания контейнера с zookeeper, работающие HA не могут соединиться с ним. Помогает только перезагрузка HA     &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Качество кода и сборки:&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
- Один репозиторий на ha, blocker и winHA&lt;br /&gt;
&lt;br /&gt;
- Использовать макросы для разбора сетевых заголовков (https://github.com/cloudflare/ebpf_exporter/blob/master/examples/xdp.bpf.c)&lt;br /&gt;
&lt;br /&gt;
- Авто тесты (модульные и функциональные)&lt;br /&gt;
&lt;br /&gt;
- be типы для bigendian&lt;br /&gt;
&lt;br /&gt;
- использовать go context для завершения программы (пример https://github.com/pouriyajamshidi/flat)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Администрирование (наблюдаемость, управляемость):&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
- Логирование сервисов под linux и windows (отдельный лог файл, текст сообщений хранить в отдельном файле, логировать коды https://learn.microsoft.com/en-us/windows/win32/eventlog/message-files, так же использовать категории, изучить best practice) , syslog&lt;br /&gt;
&lt;br /&gt;
- контроль агентом утилизации ресурсов&lt;br /&gt;
&lt;br /&gt;
- доставка конфигурации до host agenta&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Безопасность:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
- Размер IP, TCP, UDP(?) заголовков не фиксирован. Возможны опциональные поля. Это надо учитывать. Особенно для firewall и bloccker.&lt;br /&gt;
&lt;br /&gt;
- Защищенный Канал до агента&lt;br /&gt;
&lt;br /&gt;
- Валидация агента плюс его этп&lt;br /&gt;
&lt;br /&gt;
- CAP_BPF&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Поддержка сетевых технологий:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
- Добавлять неизвестные(неразобранные) пакеты в статистику (есть потеря части информации) &lt;br /&gt;
&lt;br /&gt;
- Поддержка VLAN &lt;br /&gt;
&lt;br /&gt;
- Поддержка IPv6 &lt;br /&gt;
&lt;br /&gt;
- Использование совместно с QoS и агригированными интерфейсами &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Баги:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
- возможно переполнение счетчика с количеством байт, надо использовать структуру с двумя счетчиками (https://elixir.bootlin.com/linux/v5.17.6/source/samples/bpf/sockex2_kern.c#L213) &lt;br /&gt;
&lt;br /&gt;
- многопоточность не обрабатывается (для правил, опции и статистики), может приводить к редким невоспроизоводимым проблемам&lt;br /&gt;
&lt;br /&gt;
- bpf_skb_pull_data (загрузка всего пакета) Проверить, что skb-&amp;gt;len равно размеру всего пакета &lt;br /&gt;
&lt;br /&gt;
- перехватывать панику во всех горутинах, иначе программа падает и не отписывается &lt;br /&gt;
&lt;br /&gt;
- Корректное завершение при сбоях (освобождение ресурсов)  &lt;br /&gt;
&lt;br /&gt;
- Обрабатывать превышение размеров eBPF HASH_MAP  &lt;br /&gt;
&lt;br /&gt;
- Валидация входных данных  &lt;br /&gt;
&lt;br /&gt;
- Обработка ошибок, логирование  &lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;Сырое (не разобранное):&#039;&#039;&#039; ==&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
SD-WAN: &lt;br /&gt;
&lt;br /&gt;
- Редирект пакетов, VPN&lt;br /&gt;
&lt;br /&gt;
- Корректное переключение на другой канал (разрыв соединений по старому каналу?)&lt;/div&gt;</summary>
		<author><name>Entcor</name></author>
	</entry>
	<entry>
		<id>https://wiki.entcor.ru/index.php?title=%D0%97%D0%B0%D0%B4%D0%B0%D1%87%D0%B8_(%D0%BD%D0%B0_%D0%BF%D1%80%D0%BE%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D1%83)&amp;diff=282</id>
		<title>Задачи (на проработку)</title>
		<link rel="alternate" type="text/html" href="https://wiki.entcor.ru/index.php?title=%D0%97%D0%B0%D0%B4%D0%B0%D1%87%D0%B8_(%D0%BD%D0%B0_%D0%BF%D1%80%D0%BE%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D1%83)&amp;diff=282"/>
		<updated>2024-06-18T00:58:24Z</updated>

		<summary type="html">&lt;p&gt;Entcor: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Производительность:&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
- Алгоритм классификации пакетов (перебор правил)  &lt;br /&gt;
&lt;br /&gt;
- Для хранения правил использовать структуры, как в ipset  &lt;br /&gt;
&lt;br /&gt;
- Cache вердиктов fw (conntrack)  &lt;br /&gt;
&lt;br /&gt;
- Вердикт на обратный трафик на основе conntrack (сейчас требуется обратное правило)  &lt;br /&gt;
&lt;br /&gt;
- Часть правил хранить в userspace и подгружать только по необходимости в BPF. Отдельно заполнять таблицу с описанимем пакетов, не попадающих под правила, чтобы постоянно не лезть в userspace  &lt;br /&gt;
&lt;br /&gt;
- Ограничение по количеству правил (не хватает стека?) &lt;br /&gt;
&lt;br /&gt;
- Переход на ringbuffer (kernel &amp;gt;= 5.8) или BPF_MAP_TYPE_LRU_HASH (https://github.com/cloudflare/ebpf_exporter) или BPF_MAP_TYPE_PERCPU_HASH (https://justin.azoff.dev/blog/bpf_map_get_next_key-pitfalls/) &lt;br /&gt;
&lt;br /&gt;
- Подписка вместо опроса (docker, devices, info) &lt;br /&gt;
&lt;br /&gt;
- ip адреса передавать как числа (можно ли тип number в JS?) &lt;br /&gt;
&lt;br /&gt;
- Формат передачи статистики (не HTTP?) (перехода на Push режим в части данных)  &lt;br /&gt;
&lt;br /&gt;
- Нужно автоматическое нагрузочное тестирование  &lt;br /&gt;
&lt;br /&gt;
- Удалить отладочную информацию (stripped)   &lt;br /&gt;
&lt;br /&gt;
https://www.codingexplorations.com/blog/reducing-binary-size-in-go-strip-unnecessary-data-with-ldflags-w-s  &lt;br /&gt;
&lt;br /&gt;
https://words.filippo.io/shrink-your-go-binaries-with-this-one-weird-trick/&lt;br /&gt;
  &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Распределенная система / надежность:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
- Обрабатывать потерю связи HA с внешними сервисами (сейчас возможно зависание всего цикла отправки из-за недоступности http) &lt;br /&gt;
&lt;br /&gt;
- Агент в оффлайне &lt;br /&gt;
&lt;br /&gt;
- Формирование отказоустойчивый модели зукипепов - возможно распределенной &lt;br /&gt;
&lt;br /&gt;
- Запуск на старом ядре с контролем его версии. При стром ядре запускаем анент, но кернел спейс запуститься не моожет. Пусть юзер часть запустится и отрапартнует пакетом на сервер о старом ядре &lt;br /&gt;
&lt;br /&gt;
- деградация функций    &lt;br /&gt;
&lt;br /&gt;
- сохранение в файл конфигурации и правил    &lt;br /&gt;
&lt;br /&gt;
- после пересоздания контейнера с zookeeper, работающие HA не могут соединиться с ним. Помогает только перезагрузка HA     &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Качество кода и сборки:&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
- Один репозиторий на ha, blocker и winHA&lt;br /&gt;
&lt;br /&gt;
- Использовать макросы для разбора сетевых заголовков (https://github.com/cloudflare/ebpf_exporter/blob/master/examples/xdp.bpf.c)&lt;br /&gt;
&lt;br /&gt;
- Авто тесты (модульные и функциональные)&lt;br /&gt;
&lt;br /&gt;
- be типы для bigendian&lt;br /&gt;
&lt;br /&gt;
- использовать go context для завершения программы (пример https://github.com/pouriyajamshidi/flat)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Администрирование (наблюдаемость, управляемость):&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
- Логирование сервисов под linux и windows (отдельный лог файл, текст сообщений хранить в отдельном файле, логировать коды https://learn.microsoft.com/en-us/windows/win32/eventlog/message-files, так же использовать категории, изучить best practice) , syslog&lt;br /&gt;
&lt;br /&gt;
- контроль агентом утилизации ресурсов&lt;br /&gt;
&lt;br /&gt;
- доставка конфигурации до host agenta&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Безопасность:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
- Размер IP, TCP, UDP(?) заголовков не фиксирован. Возможны опциональные поля. Это надо учитывать. Особенно для firewall и bloccker.&lt;br /&gt;
&lt;br /&gt;
- Защищенный Канал до агента&lt;br /&gt;
&lt;br /&gt;
- Валидация агента плюс его этп&lt;br /&gt;
&lt;br /&gt;
- CAP_BPF&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Поддержка сетевых технологий:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
- Добавлять неизвестные(неразобранные) пакеты в статистику (есть потеря части информации) &lt;br /&gt;
&lt;br /&gt;
- Поддержка VLAN &lt;br /&gt;
&lt;br /&gt;
- Поддержка IPv6 &lt;br /&gt;
&lt;br /&gt;
- Использование совместно с QoS и агригированными интерфейсами &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Баги:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
- возможно переполнение счетчика с количеством байт, надо использовать структуру с двумя счетчиками (https://elixir.bootlin.com/linux/v5.17.6/source/samples/bpf/sockex2_kern.c#L213) &lt;br /&gt;
&lt;br /&gt;
- многопоточность не обрабатывается (для правил, опции и статистики), может приводить к редким невоспроизоводимым проблемам&lt;br /&gt;
&lt;br /&gt;
- bpf_skb_pull_data (загрузка всего пакета) Проверить, что skb-&amp;gt;len равно размеру всего пакета &lt;br /&gt;
&lt;br /&gt;
- перехватывать панику во всех горутинах, иначе программа падает и не отписывается &lt;br /&gt;
&lt;br /&gt;
- Корректное завершение при сбоях (освобождение ресурсов)  &lt;br /&gt;
&lt;br /&gt;
- Обрабатывать превышение размеров eBPF HASH_MAP  &lt;br /&gt;
&lt;br /&gt;
- Валидация входных данных  &lt;br /&gt;
&lt;br /&gt;
- Обработка ошибок, логирование  &lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;Сырое (не разобранное):&#039;&#039;&#039; ==&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
SD-WAN: &lt;br /&gt;
&lt;br /&gt;
- Редирект пакетов, VPN&lt;br /&gt;
&lt;br /&gt;
- Корректное переключение на другой канал (разрыв соединений по старому каналу?)&lt;/div&gt;</summary>
		<author><name>Entcor</name></author>
	</entry>
	<entry>
		<id>https://wiki.entcor.ru/index.php?title=%D0%97%D0%B0%D0%B4%D0%B0%D1%87%D0%B8_(%D0%BD%D0%B0_%D0%BF%D1%80%D0%BE%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D1%83)&amp;diff=281</id>
		<title>Задачи (на проработку)</title>
		<link rel="alternate" type="text/html" href="https://wiki.entcor.ru/index.php?title=%D0%97%D0%B0%D0%B4%D0%B0%D1%87%D0%B8_(%D0%BD%D0%B0_%D0%BF%D1%80%D0%BE%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D1%83)&amp;diff=281"/>
		<updated>2024-06-17T02:19:09Z</updated>

		<summary type="html">&lt;p&gt;Entcor: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Производительность:&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
- Алгоритм классификации пакетов (перебор правил)  &lt;br /&gt;
&lt;br /&gt;
- Cache вердиктов fw (conntrack)  &lt;br /&gt;
&lt;br /&gt;
- Вердикт на обратный трафик на основе conntrack (сейчас требуется обратное правило)  &lt;br /&gt;
&lt;br /&gt;
- Часть правил хранить в userspace и подгружать только по необходимости в BPF. Отдельно заполнять таблицу с описанимем пакетов, не попадающих под правила, чтобы постоянно не лезть в userspace  &lt;br /&gt;
&lt;br /&gt;
- Ограничение по количеству правил (не хватает стека?) &lt;br /&gt;
&lt;br /&gt;
- Переход на ringbuffer (kernel &amp;gt;= 5.8) или BPF_MAP_TYPE_LRU_HASH (https://github.com/cloudflare/ebpf_exporter) или BPF_MAP_TYPE_PERCPU_HASH (https://justin.azoff.dev/blog/bpf_map_get_next_key-pitfalls/) &lt;br /&gt;
&lt;br /&gt;
- Подписка вместо опроса (docker, devices, info) &lt;br /&gt;
&lt;br /&gt;
- ip адреса передавать как числа (можно ли тип number в JS?) &lt;br /&gt;
&lt;br /&gt;
- Формат передачи статистики (не HTTP?) (перехода на Push режим в части данных)  &lt;br /&gt;
&lt;br /&gt;
- Нужно автоматическое нагрузочное тестирование  &lt;br /&gt;
&lt;br /&gt;
- Удалить отладочную информацию (stripped)   &lt;br /&gt;
&lt;br /&gt;
https://www.codingexplorations.com/blog/reducing-binary-size-in-go-strip-unnecessary-data-with-ldflags-w-s  &lt;br /&gt;
&lt;br /&gt;
https://words.filippo.io/shrink-your-go-binaries-with-this-one-weird-trick/&lt;br /&gt;
  &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Распределенная система / надежность:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
- Обрабатывать потерю связи HA с внешними сервисами (сейчас возможно зависание всего цикла отправки из-за недоступности http) &lt;br /&gt;
&lt;br /&gt;
- Агент в оффлайне &lt;br /&gt;
&lt;br /&gt;
- Формирование отказоустойчивый модели зукипепов - возможно распределенной &lt;br /&gt;
&lt;br /&gt;
- Запуск на старом ядре с контролем его версии. При стром ядре запускаем анент, но кернел спейс запуститься не моожет. Пусть юзер часть запустится и отрапартнует пакетом на сервер о старом ядре &lt;br /&gt;
&lt;br /&gt;
- деградация функций    &lt;br /&gt;
&lt;br /&gt;
- сохранение в файл конфигурации и правил    &lt;br /&gt;
&lt;br /&gt;
- после пересоздания контейнера с zookeeper, работающие HA не могут соединиться с ним. Помогает только перезагрузка HA     &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Качество кода и сборки:&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
- Один репозиторий на ha, blocker и winHA&lt;br /&gt;
&lt;br /&gt;
- Использовать макросы для разбора сетевых заголовков (https://github.com/cloudflare/ebpf_exporter/blob/master/examples/xdp.bpf.c)&lt;br /&gt;
&lt;br /&gt;
- Авто тесты (модульные и функциональные)&lt;br /&gt;
&lt;br /&gt;
- be типы для bigendian&lt;br /&gt;
&lt;br /&gt;
- использовать go context для завершения программы (пример https://github.com/pouriyajamshidi/flat)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Администрирование (наблюдаемость, управляемость):&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
- Логирование сервисов под linux и windows (отдельный лог файл, текст сообщений хранить в отдельном файле, логировать коды https://learn.microsoft.com/en-us/windows/win32/eventlog/message-files, так же использовать категории, изучить best practice) , syslog&lt;br /&gt;
&lt;br /&gt;
- контроль агентом утилизации ресурсов&lt;br /&gt;
&lt;br /&gt;
- доставка конфигурации до host agenta&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Безопасность:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
- Размер IP, TCP, UDP(?) заголовков не фиксирован. Возможны опциональные поля. Это надо учитывать. Особенно для firewall и bloccker.&lt;br /&gt;
&lt;br /&gt;
- Защищенный Канал до агента&lt;br /&gt;
&lt;br /&gt;
- Валидация агента плюс его этп&lt;br /&gt;
&lt;br /&gt;
- CAP_BPF&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Поддержка сетевых технологий:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
- Добавлять неизвестные(неразобранные) пакеты в статистику (есть потеря части информации) &lt;br /&gt;
&lt;br /&gt;
- Поддержка VLAN &lt;br /&gt;
&lt;br /&gt;
- Поддержка IPv6 &lt;br /&gt;
&lt;br /&gt;
- Использование совместно с QoS и агригированными интерфейсами &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Баги:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
- возможно переполнение счетчика с количеством байт, надо использовать структуру с двумя счетчиками (https://elixir.bootlin.com/linux/v5.17.6/source/samples/bpf/sockex2_kern.c#L213) &lt;br /&gt;
&lt;br /&gt;
- многопоточность не обрабатывается (для правил, опции и статистики), может приводить к редким невоспроизоводимым проблемам&lt;br /&gt;
&lt;br /&gt;
- bpf_skb_pull_data (загрузка всего пакета) Проверить, что skb-&amp;gt;len равно размеру всего пакета &lt;br /&gt;
&lt;br /&gt;
- перехватывать панику во всех горутинах, иначе программа падает и не отписывается &lt;br /&gt;
&lt;br /&gt;
- Корректное завершение при сбоях (освобождение ресурсов)  &lt;br /&gt;
&lt;br /&gt;
- Обрабатывать превышение размеров eBPF HASH_MAP  &lt;br /&gt;
&lt;br /&gt;
- Валидация входных данных  &lt;br /&gt;
&lt;br /&gt;
- Обработка ошибок, логирование  &lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;Сырое (не разобранное):&#039;&#039;&#039; ==&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
SD-WAN: &lt;br /&gt;
&lt;br /&gt;
- Редирект пакетов, VPN&lt;br /&gt;
&lt;br /&gt;
- Корректное переключение на другой канал (разрыв соединений по старому каналу?)&lt;/div&gt;</summary>
		<author><name>Entcor</name></author>
	</entry>
	<entry>
		<id>https://wiki.entcor.ru/index.php?title=%D0%97%D0%B0%D0%B4%D0%B0%D1%87%D0%B8_(%D0%BD%D0%B0_%D0%BF%D1%80%D0%BE%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D1%83)&amp;diff=280</id>
		<title>Задачи (на проработку)</title>
		<link rel="alternate" type="text/html" href="https://wiki.entcor.ru/index.php?title=%D0%97%D0%B0%D0%B4%D0%B0%D1%87%D0%B8_(%D0%BD%D0%B0_%D0%BF%D1%80%D0%BE%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D1%83)&amp;diff=280"/>
		<updated>2024-06-17T02:18:56Z</updated>

		<summary type="html">&lt;p&gt;Entcor: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Производительность:&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
- Алгоритм классификации пакетов (перебор правил)  &lt;br /&gt;
&lt;br /&gt;
- Cache вердиктов fw (conntrack)  &lt;br /&gt;
&lt;br /&gt;
- Вердикт на обратный трафик на основе conntrack (сейчас требуется обратное правило)  &lt;br /&gt;
&lt;br /&gt;
- Часть правил хранить в userspace и подгружать только по необходимости в BPF. Отдельно заполнять таблицу с описанимем пакетов, не попадающих под правила, чтобы постоянно не лезть в userspace  &lt;br /&gt;
&lt;br /&gt;
- Ограничение по количеству правил (не хватает стека?) &lt;br /&gt;
&lt;br /&gt;
- Переход на ringbuffer (kernel &amp;gt;= 5.8) или BPF_MAP_TYPE_LRU_HASH (https://github.com/cloudflare/ebpf_exporter) или BPF_MAP_TYPE_PERCPU_HASH (https://justin.azoff.dev/blog/bpf_map_get_next_key-pitfalls/) &lt;br /&gt;
&lt;br /&gt;
- Подписка вместо опроса (docker, devices, info) &lt;br /&gt;
&lt;br /&gt;
- ip адреса передавать как числа (можно ли тип number в JS?) &lt;br /&gt;
&lt;br /&gt;
- Формат передачи статистики (не HTTP?) (перехода на Push режим в части данных)  &lt;br /&gt;
&lt;br /&gt;
- Нужно автоматическое нагрузочное тестирование  &lt;br /&gt;
&lt;br /&gt;
- Удалить отладочную информацию (stripped)   &lt;br /&gt;
&lt;br /&gt;
https://www.codingexplorations.com/blog/reducing-binary-size-in-go-strip-unnecessary-data-with-ldflags-w-s  &lt;br /&gt;
&lt;br /&gt;
https://words.filippo.io/shrink-your-go-binaries-with-this-one-weird-trick/&lt;br /&gt;
  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Распределенная система / надежность:&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
- Обрабатывать потерю связи HA с внешними сервисами (сейчас возможно зависание всего цикла отправки из-за недоступности http) &lt;br /&gt;
&lt;br /&gt;
- Агент в оффлайне &lt;br /&gt;
&lt;br /&gt;
- Формирование отказоустойчивый модели зукипепов - возможно распределенной &lt;br /&gt;
&lt;br /&gt;
- Запуск на старом ядре с контролем его версии. При стром ядре запускаем анент, но кернел спейс запуститься не моожет. Пусть юзер часть запустится и отрапартнует пакетом на сервер о старом ядре &lt;br /&gt;
&lt;br /&gt;
- деградация функций    &lt;br /&gt;
&lt;br /&gt;
- сохранение в файл конфигурации и правил    &lt;br /&gt;
&lt;br /&gt;
- после пересоздания контейнера с zookeeper, работающие HA не могут соединиться с ним. Помогает только перезагрузка HA     &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Качество кода и сборки:&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
- Один репозиторий на ha, blocker и winHA&lt;br /&gt;
&lt;br /&gt;
- Использовать макросы для разбора сетевых заголовков (https://github.com/cloudflare/ebpf_exporter/blob/master/examples/xdp.bpf.c)&lt;br /&gt;
&lt;br /&gt;
- Авто тесты (модульные и функциональные)&lt;br /&gt;
&lt;br /&gt;
- be типы для bigendian&lt;br /&gt;
&lt;br /&gt;
- использовать go context для завершения программы (пример https://github.com/pouriyajamshidi/flat)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Администрирование (наблюдаемость, управляемость):&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
- Логирование сервисов под linux и windows (отдельный лог файл, текст сообщений хранить в отдельном файле, логировать коды https://learn.microsoft.com/en-us/windows/win32/eventlog/message-files, так же использовать категории, изучить best practice) , syslog&lt;br /&gt;
&lt;br /&gt;
- контроль агентом утилизации ресурсов&lt;br /&gt;
&lt;br /&gt;
- доставка конфигурации до host agenta&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Безопасность:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
- Размер IP, TCP, UDP(?) заголовков не фиксирован. Возможны опциональные поля. Это надо учитывать. Особенно для firewall и bloccker.&lt;br /&gt;
&lt;br /&gt;
- Защищенный Канал до агента&lt;br /&gt;
&lt;br /&gt;
- Валидация агента плюс его этп&lt;br /&gt;
&lt;br /&gt;
- CAP_BPF&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Поддержка сетевых технологий:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
- Добавлять неизвестные(неразобранные) пакеты в статистику (есть потеря части информации) &lt;br /&gt;
&lt;br /&gt;
- Поддержка VLAN &lt;br /&gt;
&lt;br /&gt;
- Поддержка IPv6 &lt;br /&gt;
&lt;br /&gt;
- Использование совместно с QoS и агригированными интерфейсами &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Баги:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
- возможно переполнение счетчика с количеством байт, надо использовать структуру с двумя счетчиками (https://elixir.bootlin.com/linux/v5.17.6/source/samples/bpf/sockex2_kern.c#L213) &lt;br /&gt;
&lt;br /&gt;
- многопоточность не обрабатывается (для правил, опции и статистики), может приводить к редким невоспроизоводимым проблемам&lt;br /&gt;
&lt;br /&gt;
- bpf_skb_pull_data (загрузка всего пакета) Проверить, что skb-&amp;gt;len равно размеру всего пакета &lt;br /&gt;
&lt;br /&gt;
- перехватывать панику во всех горутинах, иначе программа падает и не отписывается &lt;br /&gt;
&lt;br /&gt;
- Корректное завершение при сбоях (освобождение ресурсов)  &lt;br /&gt;
&lt;br /&gt;
- Обрабатывать превышение размеров eBPF HASH_MAP  &lt;br /&gt;
&lt;br /&gt;
- Валидация входных данных  &lt;br /&gt;
&lt;br /&gt;
- Обработка ошибок, логирование  &lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;Сырое (не разобранное):&#039;&#039;&#039; ==&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
SD-WAN: &lt;br /&gt;
&lt;br /&gt;
- Редирект пакетов, VPN&lt;br /&gt;
&lt;br /&gt;
- Корректное переключение на другой канал (разрыв соединений по старому каналу?)&lt;/div&gt;</summary>
		<author><name>Entcor</name></author>
	</entry>
	<entry>
		<id>https://wiki.entcor.ru/index.php?title=%D0%97%D0%B0%D0%B4%D0%B0%D1%87%D0%B8_(%D0%BD%D0%B0_%D0%BF%D1%80%D0%BE%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D1%83)&amp;diff=279</id>
		<title>Задачи (на проработку)</title>
		<link rel="alternate" type="text/html" href="https://wiki.entcor.ru/index.php?title=%D0%97%D0%B0%D0%B4%D0%B0%D1%87%D0%B8_(%D0%BD%D0%B0_%D0%BF%D1%80%D0%BE%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D1%83)&amp;diff=279"/>
		<updated>2024-06-07T03:39:43Z</updated>

		<summary type="html">&lt;p&gt;Entcor: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Производительность:&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
- Алгоритм классификации пакетов (перебор правил)  &lt;br /&gt;
&lt;br /&gt;
- Cache вердиктов fw (conntrack)  &lt;br /&gt;
&lt;br /&gt;
- Вердикт на обратный трафик на основе conntrack (сейчас требуется обратное правило)  &lt;br /&gt;
&lt;br /&gt;
- Часть правил хранить в userspace и подгружать только по необходимости в BPF. Отдельно заполнять таблицу с описанимем пакетов, не попадающих под правила, чтобы постоянно не лезть в userspace  &lt;br /&gt;
&lt;br /&gt;
- Ограничение по количеству правил (не хватает стека?) &lt;br /&gt;
&lt;br /&gt;
- Переход на ringbuffer (kernel &amp;gt;= 5.8) или BPF_MAP_TYPE_LRU_HASH (https://github.com/cloudflare/ebpf_exporter) или BPF_MAP_TYPE_PERCPU_HASH (https://justin.azoff.dev/blog/bpf_map_get_next_key-pitfalls/) &lt;br /&gt;
&lt;br /&gt;
- Подписка вместо опроса (docker, devices, info) &lt;br /&gt;
&lt;br /&gt;
- ip адреса передавать как числа (можно ли тип number в JS?) &lt;br /&gt;
&lt;br /&gt;
- Формат передачи статистики (не HTTP?) (перехода на Push режим в части данных)  &lt;br /&gt;
&lt;br /&gt;
- Нужно автоматическое нагрузочное тестирование  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Распределенная система / надежность:&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
- Обрабатывать потерю связи HA с внешними сервисами (сейчас возможно зависание всего цикла отправки из-за недоступности http) &lt;br /&gt;
&lt;br /&gt;
- Агент в оффлайне &lt;br /&gt;
&lt;br /&gt;
- Формирование отказоустойчивый модели зукипепов - возможно распределенной &lt;br /&gt;
&lt;br /&gt;
- Запуск на старом ядре с контролем его версии. При стром ядре запускаем анент, но кернел спейс запуститься не моожет. Пусть юзер часть запустится и отрапартнует пакетом на сервер о старом ядре &lt;br /&gt;
&lt;br /&gt;
- деградация функций    &lt;br /&gt;
&lt;br /&gt;
- сохранение в файл конфигурации и правил    &lt;br /&gt;
&lt;br /&gt;
- после пересоздания контейнера с zookeeper, работающие HA не могут соединиться с ним. Помогает только перезагрузка HA     &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Качество кода и сборки:&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
- Один репозиторий на ha, blocker и winHA&lt;br /&gt;
&lt;br /&gt;
- Использовать макросы для разбора сетевых заголовков (https://github.com/cloudflare/ebpf_exporter/blob/master/examples/xdp.bpf.c)&lt;br /&gt;
&lt;br /&gt;
- Авто тесты (модульные и функциональные)&lt;br /&gt;
&lt;br /&gt;
- be типы для bigendian&lt;br /&gt;
&lt;br /&gt;
- использовать go context для завершения программы (пример https://github.com/pouriyajamshidi/flat)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Администрирование (наблюдаемость, управляемость):&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
- Логирование сервисов под linux и windows (отдельный лог файл, текст сообщений хранить в отдельном файле, логировать коды https://learn.microsoft.com/en-us/windows/win32/eventlog/message-files, так же использовать категории, изучить best practice) , syslog&lt;br /&gt;
&lt;br /&gt;
- контроль агентом утилизации ресурсов&lt;br /&gt;
&lt;br /&gt;
- доставка конфигурации до host agenta&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Безопасность:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
- Размер IP, TCP, UDP(?) заголовков не фиксирован. Возможны опциональные поля. Это надо учитывать. Особенно для firewall и bloccker.&lt;br /&gt;
&lt;br /&gt;
- Защищенный Канал до агента&lt;br /&gt;
&lt;br /&gt;
- Валидация агента плюс его этп&lt;br /&gt;
&lt;br /&gt;
- CAP_BPF&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Поддержка сетевых технологий:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
- Добавлять неизвестные(неразобранные) пакеты в статистику (есть потеря части информации) &lt;br /&gt;
&lt;br /&gt;
- Поддержка VLAN &lt;br /&gt;
&lt;br /&gt;
- Поддержка IPv6 &lt;br /&gt;
&lt;br /&gt;
- Использование совместно с QoS и агригированными интерфейсами &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Баги:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
- возможно переполнение счетчика с количеством байт, надо использовать структуру с двумя счетчиками (https://elixir.bootlin.com/linux/v5.17.6/source/samples/bpf/sockex2_kern.c#L213) &lt;br /&gt;
&lt;br /&gt;
- многопоточность не обрабатывается (для правил, опции и статистики), может приводить к редким невоспроизоводимым проблемам&lt;br /&gt;
&lt;br /&gt;
- bpf_skb_pull_data (загрузка всего пакета) Проверить, что skb-&amp;gt;len равно размеру всего пакета &lt;br /&gt;
&lt;br /&gt;
- перехватывать панику во всех горутинах, иначе программа падает и не отписывается &lt;br /&gt;
&lt;br /&gt;
- Корректное завершение при сбоях (освобождение ресурсов)  &lt;br /&gt;
&lt;br /&gt;
- Обрабатывать превышение размеров eBPF HASH_MAP  &lt;br /&gt;
&lt;br /&gt;
- Валидация входных данных  &lt;br /&gt;
&lt;br /&gt;
- Обработка ошибок, логирование  &lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;Сырое (не разобранное):&#039;&#039;&#039; ==&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
SD-WAN: &lt;br /&gt;
&lt;br /&gt;
- Редирект пакетов, VPN&lt;br /&gt;
&lt;br /&gt;
- Корректное переключение на другой канал (разрыв соединений по старому каналу?)&lt;/div&gt;</summary>
		<author><name>Entcor</name></author>
	</entry>
	<entry>
		<id>https://wiki.entcor.ru/index.php?title=%D0%97%D0%B0%D0%B4%D0%B0%D1%87%D0%B8_(%D0%BD%D0%B0_%D0%BF%D1%80%D0%BE%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D1%83)&amp;diff=276</id>
		<title>Задачи (на проработку)</title>
		<link rel="alternate" type="text/html" href="https://wiki.entcor.ru/index.php?title=%D0%97%D0%B0%D0%B4%D0%B0%D1%87%D0%B8_(%D0%BD%D0%B0_%D0%BF%D1%80%D0%BE%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D1%83)&amp;diff=276"/>
		<updated>2024-05-31T06:09:06Z</updated>

		<summary type="html">&lt;p&gt;Entcor: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Производительность:&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
- Алгоритм классификации пакетов (перебор правил)  &lt;br /&gt;
&lt;br /&gt;
- Cache вердиктов fw (conntrack)  &lt;br /&gt;
&lt;br /&gt;
- Вердикт на обратный трафик на основе conntrack (сейчас требуется обратное правило)  &lt;br /&gt;
&lt;br /&gt;
- Ограничение по количеству правил (не хватает стека?) &lt;br /&gt;
&lt;br /&gt;
- Переход на ringbuffer (kernel &amp;gt;= 5.8) или BPF_MAP_TYPE_LRU_HASH (https://github.com/cloudflare/ebpf_exporter) или BPF_MAP_TYPE_PERCPU_HASH (https://justin.azoff.dev/blog/bpf_map_get_next_key-pitfalls/) &lt;br /&gt;
&lt;br /&gt;
- Подписка вместо опроса (docker, devices, info) &lt;br /&gt;
&lt;br /&gt;
- ip адреса передавать как числа (можно ли тип number в JS?) &lt;br /&gt;
&lt;br /&gt;
- Формат передачи статистики (не HTTP?) (перехода на Push режим в части данных)  &lt;br /&gt;
&lt;br /&gt;
- Нужно автоматическое нагрузочное тестирование  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Распределенная система / надежность:&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
- Обрабатывать потерю связи HA с внешними сервисами (сейчас возможно зависание всего цикла отправки из-за недоступности http) &lt;br /&gt;
&lt;br /&gt;
- Агент в оффлайне &lt;br /&gt;
&lt;br /&gt;
- Формирование отказоустойчивый модели зукипепов - возможно распределенной &lt;br /&gt;
&lt;br /&gt;
- Запуск на старом ядре с контролем его версии. При стром ядре запускаем анент, но кернел спейс запуститься не моожет. Пусть юзер часть запустится и отрапартнует пакетом на сервер о старом ядре &lt;br /&gt;
&lt;br /&gt;
- деградация функций    &lt;br /&gt;
&lt;br /&gt;
- сохранение в файл конфигурации и правил    &lt;br /&gt;
&lt;br /&gt;
- после пересоздания контейнера с zookeeper, работающие HA не могут соединиться с ним. Помогает только перезагрузка HA     &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Качество кода и сборки:&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
- Один репозиторий на ha, blocker и winHA&lt;br /&gt;
&lt;br /&gt;
- Использовать макросы для разбора сетевых заголовков (https://github.com/cloudflare/ebpf_exporter/blob/master/examples/xdp.bpf.c)&lt;br /&gt;
&lt;br /&gt;
- Авто тесты (модульные и функциональные)&lt;br /&gt;
&lt;br /&gt;
- be типы для bigendian&lt;br /&gt;
&lt;br /&gt;
- использовать go context для завершения программы (пример https://github.com/pouriyajamshidi/flat)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Администрирование (наблюдаемость, управляемость):&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
- Логирование сервисов под linux и windows (отдельный лог файл, текст сообщений хранить в отдельном файле, логировать коды https://learn.microsoft.com/en-us/windows/win32/eventlog/message-files, так же использовать категории, изучить best practice) , syslog&lt;br /&gt;
&lt;br /&gt;
- контроль агентом утилизации ресурсов&lt;br /&gt;
&lt;br /&gt;
- доставка конфигурации до host agenta&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Безопасность:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
- Размер IP, TCP, UDP(?) заголовков не фиксирован. Возможны опциональные поля. Это надо учитывать. Особенно для firewall и bloccker.&lt;br /&gt;
&lt;br /&gt;
- Защищенный Канал до агента&lt;br /&gt;
&lt;br /&gt;
- Валидация агента плюс его этп&lt;br /&gt;
&lt;br /&gt;
- CAP_BPF&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Поддержка сетевых технологий:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
- Добавлять неизвестные(неразобранные) пакеты в статистику (есть потеря части информации) &lt;br /&gt;
&lt;br /&gt;
- Поддержка VLAN &lt;br /&gt;
&lt;br /&gt;
- Поддержка IPv6 &lt;br /&gt;
&lt;br /&gt;
- Использование совместно с QoS и агригированными интерфейсами &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Баги:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
- возможно переполнение счетчика с количеством байт, надо использовать структуру с двумя счетчиками (https://elixir.bootlin.com/linux/v5.17.6/source/samples/bpf/sockex2_kern.c#L213) &lt;br /&gt;
&lt;br /&gt;
- многопоточность не обрабатывается (для правил, опции и статистики), может приводить к редким невоспроизоводимым проблемам&lt;br /&gt;
&lt;br /&gt;
- bpf_skb_pull_data (загрузка всего пакета) Проверить, что skb-&amp;gt;len равно размеру всего пакета &lt;br /&gt;
&lt;br /&gt;
- перехватывать панику во всех горутинах, иначе программа падает и не отписывается &lt;br /&gt;
&lt;br /&gt;
- Корректное завершение при сбоях (освобождение ресурсов)  &lt;br /&gt;
&lt;br /&gt;
- Обрабатывать превышение размеров eBPF HASH_MAP  &lt;br /&gt;
&lt;br /&gt;
- Валидация входных данных  &lt;br /&gt;
&lt;br /&gt;
- Обработка ошибок, логирование  &lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;Сырое (не разобранное):&#039;&#039;&#039; ==&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
SD-WAN: &lt;br /&gt;
&lt;br /&gt;
- Редирект пакетов, VPN&lt;br /&gt;
&lt;br /&gt;
- Корректное переключение на другой канал (разрыв соединений по старому каналу?)&lt;/div&gt;</summary>
		<author><name>Entcor</name></author>
	</entry>
	<entry>
		<id>https://wiki.entcor.ru/index.php?title=%D0%98%D0%BD%D1%81%D1%82%D1%80%D1%83%D0%BA%D1%86%D0%B8%D0%B8_%D0%BF%D0%BE_Continent&amp;diff=253</id>
		<title>Инструкции по Continent</title>
		<link rel="alternate" type="text/html" href="https://wiki.entcor.ru/index.php?title=%D0%98%D0%BD%D1%81%D1%82%D1%80%D1%83%D0%BA%D1%86%D0%B8%D0%B8_%D0%BF%D0%BE_Continent&amp;diff=253"/>
		<updated>2024-05-23T09:21:39Z</updated>

		<summary type="html">&lt;p&gt;Entcor: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Общее ==&lt;br /&gt;
Инструкции для [[Continent]]&lt;br /&gt;
&lt;br /&gt;
== Фиксация MAC адресов в PNetLab ==&lt;br /&gt;
&#039;&#039;&#039;ВАЖНО: Подключение флешки, как и другие манипуляции с настройками машин PNetLab и их &amp;lt;u&amp;gt;связями&amp;lt;/u&amp;gt;, заново генерируют MAC адреса для сетевых карт. Это приводит к изменению названий сетевых интерфейсов и ломает настройки сети в Continent. Что бы это избежать, необходимо заполнить поле First MAC в настройках каждой виртуальной машины уникальными значениями.&#039;&#039;&#039;&lt;br /&gt;
[[Файл:First MAC.png|слева]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Cоответсвие MAC адресов и названий интерфейсов храняться в файле /etc/udev/rules.d/70-persistent-net.rules ([https://serverfault.com/questions/981952/centos-7-how-to-get-interface-name-by-macaddress/982045#982045 ссылка])&lt;br /&gt;
&lt;br /&gt;
== Поиск соответствия сетевых интерфейсов в Linux схеме в PNetLab ==&lt;br /&gt;
Все связи с каждой стороны обозначены как eX. Число X соответствует последнему числу в MAC адресе сетевого интерфейса.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Mac - link.png]]&lt;br /&gt;
&lt;br /&gt;
== Сохранение виртуальных машин в PNetLab ==&lt;br /&gt;
Виртуальные машины в PNetLab работают в рамках сессии. Если сессия будет по какой-то причине остановлена, то все виртуальные машины будут сброшены до базового состояния. &lt;br /&gt;
&lt;br /&gt;
Что бы этого не произошло состояние виртуальных машин надо периодически сохранять. [https://pnetlab.com/pages/documentation?slug=commit-image-docker-and-qemu Инструкция по сохранению.]&lt;br /&gt;
&lt;br /&gt;
==== Сначал создаем копию виртуальных машин ====&lt;br /&gt;
&lt;br /&gt;
# Останавливаем машину&lt;br /&gt;
# В контекстном меню машины нажимаем Node Commit&lt;br /&gt;
# Выбираем Take snapshot ....&lt;br /&gt;
# В настройках машины указываем в качестве образа наш snapshot&lt;br /&gt;
# В контекстном меню  нажимаем Wipe&lt;br /&gt;
# Теперь наша машина работают со своим образом, но который основан на базовом образе, т.е. не занимает лишнее место.&lt;br /&gt;
&lt;br /&gt;
==== Сохраняем изменения в собственный образ ====&lt;br /&gt;
&lt;br /&gt;
# Остановить машину&lt;br /&gt;
# В контекстном меню машины нажимаем Node Commit&lt;br /&gt;
# Выбираем Commit to original&lt;br /&gt;
&lt;br /&gt;
== Монтирование виртуального диска в хостовую ОС ==&lt;br /&gt;
&lt;br /&gt;
=== Предусловия: ===&lt;br /&gt;
# Установлены пакеты qemu-utils и lvm2&lt;br /&gt;
&lt;br /&gt;
=== Монтирование: ===&lt;br /&gt;
# Загрузить модуль ядра nbd&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo modprobe nbd max_part=8&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;В виртульной машине PNetLab эта команда может вызывать ошибку. Тогда необходимо загрузить модуль командой:&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
insmod /lib/modules/$(uname -r)/kernel/drivers/block/nbd.ko max_part=8&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# Отключить виртуальную машину  &#039;&#039;&#039;(ВАЖНО: виртульную машину можно будет включить только после отключения диска из хостовой ОС!)&#039;&#039;&#039;&lt;br /&gt;
# Подключить виртуальный диск&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
sudo qemu-nbd -c /dev/nbd1 &amp;lt;путь к виртуальному диску vdi или qcow2&amp;gt;&lt;br /&gt;
sudo mount /dev/mapper/vg00-lv_root /mnt&lt;br /&gt;
sudo mount /dev/nbd1p1 /mnt/boot # при необходимости доступа к boot разделу&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Команда &#039;&#039;&#039;lsblk&#039;&#039;&#039; показывает подключенные диски.&lt;br /&gt;
&lt;br /&gt;
Если возникнут проблемы монтирования ntfs разделов можно выполнить:&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
ntfsfix /dev/nbd1p2&lt;br /&gt;
mount -t ntfs-3g -o remove_hiberfile /dev/nbd1p2 /mnt&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;https://unix.stackexchange.com/a/236145&lt;br /&gt;
&lt;br /&gt;
=== Отключение ===&lt;br /&gt;
# Отключить диск&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
sudo umount /mnt/boot # если был примонтирован&lt;br /&gt;
sudo umount /mnt&lt;br /&gt;
sudo vgchange -a n vg00&lt;br /&gt;
sudo qemu-nbd -d /dev/nbd1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# Включить виртуальную машину&lt;br /&gt;
# Выгрузить модуль ядра nbd, если в нем больше нет необходимости&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
modprobe -r nbd&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Монтирование виртуальной флешки в Continent на PNetLab ==&lt;br /&gt;
&lt;br /&gt;
=== Предусловия: ===&lt;br /&gt;
# Установлен пакет qemu-utils&lt;br /&gt;
&lt;br /&gt;
=== Создание виртуальной флешки ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
sudo modprobe nbd max_part=8&lt;br /&gt;
#или insmod /lib/modules/$(uname -r)/kernel/drivers/block/nbd.ko max_part=8&lt;br /&gt;
qemu-img create -f raw myflash.img 512M&lt;br /&gt;
sudo qemu-nbd -c /dev/nbd2 -f raw ./myflash.img&lt;br /&gt;
fdisk /dev/nbd2&lt;br /&gt;
# ввести n&lt;br /&gt;
# соглашаться со всеми значениями по-умолчанию&lt;br /&gt;
# ввести w&lt;br /&gt;
sudo mkfs -t vfat /dev/nbd2p1&lt;br /&gt;
&lt;br /&gt;
sudo qemu-nbd -d /dev/nbd2&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Подключение флешки в виртуальную машину с Continent ===&lt;br /&gt;
&#039;&#039;&#039;ВАЖНО: Следующий действия могут сломать виртуальную машину с Continent (см. инструкцию &amp;quot;Фиксация MAC адресов в PNetLab&amp;quot;)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
# ВАЖНО: Убедиться, что флешка не подключена к другой виртуальной машине или хосту!&lt;br /&gt;
# В настройки виртуальной машины PNetLab в поле Qemu Options добавить:&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
-drive if=none,id=stick,format=raw,file=&amp;lt;ПУТЬ К ФАЙЛУ С ВИРТУАЛЬНОЙ ФЛЕШКОЙ&amp;gt; -device nec-usb-xhci,id=xhci -device usb-storage,bus=xhci.0,drive=stick&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;[[Файл:PNetLab settings.png|слева]]&lt;br /&gt;
# Перезагрузить Continent&lt;br /&gt;
&lt;br /&gt;
== Получение root доступа к Continent 4 на виртуальной машине ==&lt;br /&gt;
&lt;br /&gt;
# Отключить виртуальную машину с Continent&lt;br /&gt;
# Примонтировать виртуальный диск к хостовой машине (см. Монтирование виртуального диска в хостовую ОС)&lt;br /&gt;
# Заменить файл /mnt/boot/integrity на программу, которая всегда безусловно возвращает 0.&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
int main(int argc, char **argv) {&lt;br /&gt;
   return 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;[[Медиа:Integrity.txt]]  (файл сохранить под именем integrity и дать права на запуск командой chmod +x integrity)&lt;br /&gt;
# В файл настроек ограниченной консоли /etc/clish/misc.xml добавить bash. Для примера можно скопировать раздел настроек для команды uptime и заменить uptime на bash. В атрибут help написать Back door. &lt;br /&gt;
# Отключить диск, включить виртуальную машину с Continent. Через локальное меню Continent запустить ограниченную консоль (Инструменты - Диагностика - Командная строка) и выполнить команду bash. Получаем полный доступ к Linux под root.&lt;br /&gt;
&lt;br /&gt;
=== Доступ по SSH ===&lt;br /&gt;
&lt;br /&gt;
#В /etc/passwd у пользователя admin меняем консоль на /bin/bash&lt;br /&gt;
# Включаем ssh доступ, в соответствии с интсрукцией &amp;quot;Руководство администратора. Управление комплексом&amp;quot;&lt;br /&gt;
# Заходим на Continent по ssh и вополняем sudo bash&lt;br /&gt;
&lt;br /&gt;
== Перекомпиляция ядра на виртуальной машине Continent ==&lt;br /&gt;
&lt;br /&gt;
# Получить root доступ Continent (см. Получение root доступа к Continent 4 на виртуальной машине)&lt;br /&gt;
# Примонтировать виртуальный диск к хостовой машине (см. Монтирование виртуального диска в хостовую ОС)&lt;br /&gt;
# В виртуальной машине в каталоге /boot по названию файлов определяем базовую версию ядра (например 5.10.210). Cкачиваем исходный код ядра нужной версии https://mirrors.edge.kernel.org/pub/linux/kernel/ . Устанавливаем необходимые для компиляции библиотеки. &amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo apt update&lt;br /&gt;
sudo apt install build-essential libncurses-dev bison flex libssl-dev libelf-dev fakeroot&lt;br /&gt;
sudo apt install dwarves&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# Копируем из виртуальной машины в папку с ядром  файл /boot/config-XXXX под именем .config. Добавляем/изменяем параметры ядра в конфигурационном файле:&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
CONFIG_BPF_SYSCALL=y&lt;br /&gt;
CONFIG_BPF_UNPRIV_DEFAULT_OFF=y&lt;br /&gt;
CONFIG_BPF_JIT_ALWAYS_ON=y&lt;br /&gt;
CONFIG_DEBUG_INFO_BTF=y&lt;br /&gt;
CONFIG_DEBUG_INFO_REDUCED=y&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# Компилируем ядро командой make -j&amp;lt;количество параллельных потоков&amp;gt;. -Проверяем успешность компиляции:&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo $? #должен вернуться 0 в случае отсутсвия ошибок&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# Устанавливаем новое ядро в Continent &amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo make INSTALL_MOD_PATH=/mnt modules_install&lt;br /&gt;
sudo make INSTALL_PATH=/mnt/boot install&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;https://www.nathansweet.me/2017/02/03/build-linux-for-virtualbox&lt;br /&gt;
#Добавляем новое ядро в grub  В файле /boot/grub/grub.conf дублируем строки загрузки основного ядра, заменяя название старого ядра на новое. &lt;br /&gt;
#Увеличиваем раздел /tmp  в Continent до 1Гбт   Текущего размера раздела tmp не хватает для проведения дальнейший операций, поэтому необходимо сначала уменьшить один из больших разделов, например /var, а затем увеличить раздел /tmp из освобожденного места.   Список текущих разделов можно посмотреть командой lsblk  https://ostechnix.com/resize-lvm-partitions-linux/&lt;br /&gt;
#Отключаем виртуальный диск, запускаем Continent, заходим в консоль под root&lt;br /&gt;
#ОПЦИОНАЛЬНО: ссылаемся в нашем ядре на модули ContinentOS&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cd /lib/modules&lt;br /&gt;
mv 5.10.210 _5.10.210&lt;br /&gt;
ln -s 5.10.210-2.continent.x86_64 5.10.210&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
#Формируем initramfs&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cd /boot&lt;br /&gt;
dracut initramfs-&amp;lt;версия ядра&amp;gt;.x86_64.img &amp;lt;версия ядра&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
#Перезагружаем Continent и выбираем в загрузчике новое ядро.&lt;/div&gt;</summary>
		<author><name>Entcor</name></author>
	</entry>
	<entry>
		<id>https://wiki.entcor.ru/index.php?title=%D0%98%D0%BD%D1%81%D1%82%D1%80%D1%83%D0%BA%D1%86%D0%B8%D0%B8_%D0%BF%D0%BE_Continent&amp;diff=252</id>
		<title>Инструкции по Continent</title>
		<link rel="alternate" type="text/html" href="https://wiki.entcor.ru/index.php?title=%D0%98%D0%BD%D1%81%D1%82%D1%80%D1%83%D0%BA%D1%86%D0%B8%D0%B8_%D0%BF%D0%BE_Continent&amp;diff=252"/>
		<updated>2024-05-23T03:58:50Z</updated>

		<summary type="html">&lt;p&gt;Entcor: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Общее ==&lt;br /&gt;
Инструкции для [[Continent]]&lt;br /&gt;
&lt;br /&gt;
== Фиксация MAC адресов в PNetLab ==&lt;br /&gt;
&#039;&#039;&#039;ВАЖНО: Подключение флешки, как и другие манипуляции с настройками машин PNetLab и их &amp;lt;u&amp;gt;связями&amp;lt;/u&amp;gt;, заново генерируют MAC адреса для сетевых карт. Это приводит к изменению названий сетевых интерфейсов и ломает настройки сети в Continent. Что бы это избежать, необходимо заполнить поле First MAC в настройках каждой виртуальной машины уникальными значениями.&#039;&#039;&#039;&lt;br /&gt;
[[Файл:First MAC.png|слева]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Cоответсвие MAC адресов и названий интерфейсов храняться в файле /etc/udev/rules.d/70-persistent-net.rules ([https://serverfault.com/questions/981952/centos-7-how-to-get-interface-name-by-macaddress/982045#982045 ссылка])&lt;br /&gt;
&lt;br /&gt;
== Поиск соответствия сетевых интерфейсов в Linux схеме в PNetLab ==&lt;br /&gt;
Все связи с каждой стороны обозначены как eX. Число X соответствует последнему числу в MAC адресе сетевого интерфейса.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Mac - link.png]]&lt;br /&gt;
&lt;br /&gt;
== Сохранение виртуальных машин в PNetLab ==&lt;br /&gt;
Виртуальные машины в PNetLab работают в рамках сессии. Если сессия будет по какой-то причине остановлена, то все виртуальные машины будут сброшены до базового состояния. &lt;br /&gt;
&lt;br /&gt;
Что бы этого не произошло состояние виртуальных машин надо периодически сохранять. [https://pnetlab.com/pages/documentation?slug=commit-image-docker-and-qemu Инструкция по сохранению.]&lt;br /&gt;
&lt;br /&gt;
==== Сначал создаем копию виртуальных машин ====&lt;br /&gt;
&lt;br /&gt;
# Останавливаем машину&lt;br /&gt;
# В контекстном меню машины нажимаем Node Commit&lt;br /&gt;
# Выбираем Take snapshot ....&lt;br /&gt;
# В настройках машины указываем в качестве образа наш snapshot&lt;br /&gt;
# В контекстном меню  нажимаем Wipe&lt;br /&gt;
# Теперь наша машина работают со своим образом, но который основан на базовом образе, т.е. не занимает лишнее место.&lt;br /&gt;
&lt;br /&gt;
==== Сохраняем изменения в собственный образ ====&lt;br /&gt;
&lt;br /&gt;
# Остановить машину&lt;br /&gt;
# В контекстном меню машины нажимаем Node Commit&lt;br /&gt;
# Выбираем Commit to original&lt;br /&gt;
&lt;br /&gt;
== Монтирование виртуального диска в хостовую ОС ==&lt;br /&gt;
&lt;br /&gt;
=== Предусловия: ===&lt;br /&gt;
# Установлены пакеты qemu-utils и lvm2&lt;br /&gt;
&lt;br /&gt;
=== Монтирование: ===&lt;br /&gt;
# Загрузить модуль ядра nbd&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo modprobe nbd max_part=8&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;В виртульной машине PNetLab эта команда может вызывать ошибку. Тогда необходимо загрузить модуль командой:&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
insmod /lib/modules/$(uname -r)/kernel/drivers/block/nbd.ko max_part=8&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# Отключить виртуальную машину  &#039;&#039;&#039;(ВАЖНО: виртульную машину можно будет включить только после отключения диска из хостовой ОС!)&#039;&#039;&#039;&lt;br /&gt;
# Подключить виртуальный диск&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
sudo qemu-nbd -c /dev/nbd1 &amp;lt;путь к виртуальному диску vdi или qcow2&amp;gt;&lt;br /&gt;
sudo mount /dev/mapper/vg00-lv_root /mnt&lt;br /&gt;
sudo mount /dev/nbd1p1 /mnt/boot # при необходимости доступа к boot разделу&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Команда &#039;&#039;&#039;lsblk&#039;&#039;&#039; показывает подключенные диски.&lt;br /&gt;
&lt;br /&gt;
Если возникнут проблемы монтирования ntfs разделов можно выполнить:&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
ntfsfix /dev/nbd1p2&lt;br /&gt;
mount -t ntfs-3g -o remove_hiberfile /dev/nbd1p2 /mnt&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;https://unix.stackexchange.com/a/236145&lt;br /&gt;
&lt;br /&gt;
=== Отключение ===&lt;br /&gt;
# Отключить диск&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
sudo umount /mnt/boot # если был примонтирован&lt;br /&gt;
sudo umount /mnt&lt;br /&gt;
sudo vgchange -a n vg00&lt;br /&gt;
sudo qemu-nbd -d /dev/nbd1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# Включить виртуальную машину&lt;br /&gt;
# Выгрузить модуль ядра nbd, если в нем больше нет необходимости&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
modprobe -r nbd&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Монтирование виртуальной флешки в Continent на PNetLab ==&lt;br /&gt;
&lt;br /&gt;
=== Предусловия: ===&lt;br /&gt;
# Установлен пакет qemu-utils&lt;br /&gt;
&lt;br /&gt;
=== Создание виртуальной флешки ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
sudo modprobe nbd max_part=8&lt;br /&gt;
#или insmod /lib/modules/$(uname -r)/kernel/drivers/block/nbd.ko max_part=8&lt;br /&gt;
qemu-img create -f raw myflash.img 512M&lt;br /&gt;
sudo qemu-nbd -c /dev/nbd2 -f raw ./myflash.img&lt;br /&gt;
fdisk /dev/nbd2&lt;br /&gt;
# ввести n&lt;br /&gt;
# соглашаться со всеми значениями по-умолчанию&lt;br /&gt;
# ввести w&lt;br /&gt;
sudo mkfs -t vfat /dev/nbd2p1&lt;br /&gt;
&lt;br /&gt;
sudo qemu-nbd -d /dev/nbd2&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Подключение флешки в виртуальную машину с Continent ===&lt;br /&gt;
&#039;&#039;&#039;ВАЖНО: Следующий действия могут сломать виртуальную машину с Continent (см. инструкцию &amp;quot;Фиксация MAC адресов в PNetLab&amp;quot;)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
# ВАЖНО: Убедиться, что флешка не подключена к другой виртуальной машине или хосту!&lt;br /&gt;
# В настройки виртуальной машины PNetLab в поле Qemu Options добавить:&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
-drive if=none,id=stick,format=raw,file=&amp;lt;ПУТЬ К ФАЙЛУ С ВИРТУАЛЬНОЙ ФЛЕШКОЙ&amp;gt; -device nec-usb-xhci,id=xhci -device usb-storage,bus=xhci.0,drive=stick&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;[[Файл:PNetLab settings.png|слева]]&lt;br /&gt;
# Перезагрузить Continent&lt;br /&gt;
&lt;br /&gt;
== Получение root доступа к Continent 4 на виртуальной машине ==&lt;br /&gt;
&lt;br /&gt;
# Отключить виртуальную машину с Continent&lt;br /&gt;
# Примонтировать виртуальный диск к хостовой машине (см. Монтирование виртуального диска в хостовую ОС)&lt;br /&gt;
# Заменить файл /mnt/boot/integrity на программу, которая всегда безусловно возвращает 0.&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
int main(int argc, char **argv) {&lt;br /&gt;
   return 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;[[Медиа:Integrity.txt]]  (файл сохранить под именем integrity и дать права на запуск командой chmod +x integrity)&lt;br /&gt;
# В файл настроек ограниченной консоли /etc/clish/misc.xml добавить bash. Для примера можно скопировать раздел настроек для команды uptime и заменить uptime на bash. В атрибут help написать Back door. &lt;br /&gt;
# Отключить диск, включить виртуальную машину с Continent. Через локальное меню Continent запустить ограниченную консоль (Инструменты - Диагностика - Командная строка) и выполнить команду bash. Получаем полный доступ к Linux под root.&lt;br /&gt;
&lt;br /&gt;
== Перекомпиляция ядра на виртуальной машине Continent ==&lt;br /&gt;
&lt;br /&gt;
# Получить root доступ Continent (см. Получение root доступа к Continent 4 на виртуальной машине)&lt;br /&gt;
# Примонтировать виртуальный диск к хостовой машине (см. Монтирование виртуального диска в хостовую ОС)&lt;br /&gt;
# В виртуальной машине в каталоге /boot по названию файлов определяем базовую версию ядра (например 5.10.210). Cкачиваем исходный код ядра нужной версии https://mirrors.edge.kernel.org/pub/linux/kernel/ . Устанавливаем необходимые для компиляции библиотеки. &amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo apt update&lt;br /&gt;
sudo apt install build-essential libncurses-dev bison flex libssl-dev libelf-dev fakeroot&lt;br /&gt;
sudo apt install dwarves&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# Копируем из виртуальной машины в папку с ядром  файл /boot/config-XXXX под именем .config. Добавляем/изменяем параметры ядра в конфигурационном файле:&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
CONFIG_BPF_SYSCALL=y&lt;br /&gt;
CONFIG_BPF_UNPRIV_DEFAULT_OFF=y&lt;br /&gt;
CONFIG_BPF_JIT_ALWAYS_ON=y&lt;br /&gt;
CONFIG_DEBUG_INFO_BTF=y&lt;br /&gt;
CONFIG_DEBUG_INFO_REDUCED=y&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# Компилируем ядро командой make -j&amp;lt;количество параллельных потоков&amp;gt;. -Проверяем успешность компиляции:&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo $? #должен вернуться 0 в случае отсутсвия ошибок&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# Устанавливаем новое ядро в Continent &amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo make INSTALL_MOD_PATH=/mnt modules_install&lt;br /&gt;
sudo make INSTALL_PATH=/mnt/boot install&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;https://www.nathansweet.me/2017/02/03/build-linux-for-virtualbox&lt;br /&gt;
#Добавляем новое ядро в grub  В файле /boot/grub/grub.conf дублируем строки загрузки основного ядра, заменяя название старого ядра на новое. &lt;br /&gt;
#Увеличиваем раздел /tmp  в Continent до 1Гбт   Текущего размера раздела tmp не хватает для проведения дальнейший операций, поэтому необходимо сначала уменьшить один из больших разделов, например /var, а затем увеличить раздел /tmp из освобожденного места.   Список текущих разделов можно посмотреть командой lsblk  https://ostechnix.com/resize-lvm-partitions-linux/&lt;br /&gt;
#Отключаем виртуальный диск, запускаем Continent, заходим в консоль под root&lt;br /&gt;
#ОПЦИОНАЛЬНО: ссылаемся в нашем ядре на модули ContinentOS&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cd /lib/modules&lt;br /&gt;
mv 5.10.210 _5.10.210&lt;br /&gt;
ln -s 5.10.210-2.continent.x86_64 5.10.210&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
#Формируем initramfs&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cd /boot&lt;br /&gt;
dracut initramfs-&amp;lt;версия ядра&amp;gt;.x86_64.img &amp;lt;версия ядра&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
#Перезагружаем Continent и выбираем в загрузчике новое ядро.&lt;/div&gt;</summary>
		<author><name>Entcor</name></author>
	</entry>
	<entry>
		<id>https://wiki.entcor.ru/index.php?title=%D0%98%D0%BD%D1%81%D1%82%D1%80%D1%83%D0%BA%D1%86%D0%B8%D0%B8_%D0%BF%D0%BE_Continent&amp;diff=245</id>
		<title>Инструкции по Continent</title>
		<link rel="alternate" type="text/html" href="https://wiki.entcor.ru/index.php?title=%D0%98%D0%BD%D1%81%D1%82%D1%80%D1%83%D0%BA%D1%86%D0%B8%D0%B8_%D0%BF%D0%BE_Continent&amp;diff=245"/>
		<updated>2024-05-23T01:13:10Z</updated>

		<summary type="html">&lt;p&gt;Entcor: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Общее ==&lt;br /&gt;
Инструкции для [[Continent]]&lt;br /&gt;
&lt;br /&gt;
== Фиксация MAC адресов в PNetLab ==&lt;br /&gt;
&#039;&#039;&#039;ВАЖНО: Подключение флешки, как и другие манипуляции с настройками машин PNetLab и их &amp;lt;u&amp;gt;связями&amp;lt;/u&amp;gt;, заново генерируют MAC адреса для сетевых карт. Это приводит к изменению названий сетевых интерфейсов и ломает настройки сети в Continent. Что бы это избежать, необходимо заполнить поле First MAC в настройках каждой виртуальной машины уникальными значениями.&#039;&#039;&#039;&lt;br /&gt;
[[Файл:First MAC.png|слева]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Cоответсвие MAC адресов и названий интерфейсов храняться в файле /etc/udev/rules.d/70-persistent-net.rules ([https://serverfault.com/questions/981952/centos-7-how-to-get-interface-name-by-macaddress/982045#982045 ссылка])&lt;br /&gt;
&lt;br /&gt;
== Поиск соответствия сетевых интерфейсов в Linux схеме в PNetLab ==&lt;br /&gt;
Все связи с каждой стороны обозначены как eX. Число X соответствует последнему числу в MAC адресе сетевого интерфейса.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Mac - link.png]]&lt;br /&gt;
&lt;br /&gt;
== Сохранение виртуальных машин в PNetLab ==&lt;br /&gt;
Виртуальные машины в PNetLab работают в рамках сессии. Если сессия будет по какой-то причине остановлена, то все виртуальные машины будут сброшены до базового состояния. &lt;br /&gt;
&lt;br /&gt;
Что бы этого не произошло состояние виртуальных машин надо периодически сохранять. [https://pnetlab.com/pages/documentation?slug=commit-image-docker-and-qemu Инструкция по сохранению.]&lt;br /&gt;
&lt;br /&gt;
==== Сначал создаем копию виртуальных машин ====&lt;br /&gt;
&lt;br /&gt;
# Останавливаем машину&lt;br /&gt;
# В контекстном меню машины нажимаем Node Commit&lt;br /&gt;
# Выбираем Take snapshot ....&lt;br /&gt;
# В настройках машины указываем в качестве образа наш snapshot&lt;br /&gt;
# В контекстном меню  нажимаем Wipe&lt;br /&gt;
# Теперь наша машина работают со своим образом, но который основан на базовом образе, т.е. не занимает лишнее место.&lt;br /&gt;
&lt;br /&gt;
==== Сохраняем изменения в собственный образ ====&lt;br /&gt;
&lt;br /&gt;
# Остановить машину&lt;br /&gt;
# В контекстном меню машины нажимаем Node Commit&lt;br /&gt;
# Выбираем Commit to original&lt;br /&gt;
&lt;br /&gt;
== Монтирование виртуального диска в хостовую ОС ==&lt;br /&gt;
&lt;br /&gt;
=== Предусловия: ===&lt;br /&gt;
# Установлены пакеты qemu-utils и lvm2&lt;br /&gt;
&lt;br /&gt;
=== Монтирование: ===&lt;br /&gt;
# Загрузить модуль ядра nbd&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo modprobe nbd max_part=8&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;В виртульной машине PNetLab эта команда может вызывать ошибку. Тогда необходимо загрузить модуль командой:&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
insmod /lib/modules/$(uname -r)/kernel/drivers/block/nbd.ko max_part=8&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# Отключить виртуальную машину  &#039;&#039;&#039;(ВАЖНО: виртульную машину можно будет включить только после отключения диска из хостовой ОС!)&#039;&#039;&#039;&lt;br /&gt;
# Подключить виртуальный диск&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
sudo qemu-nbd -c /dev/nbd1 &amp;lt;путь к виртуальному диску vdi или qcow2&amp;gt;&lt;br /&gt;
sudo mount /dev/mapper/vg00-lv_root /mnt&lt;br /&gt;
sudo mount /dev/nbd1p1 /mnt/boot # при необходимости доступа к boot разделу&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Команда &#039;&#039;&#039;lsblk&#039;&#039;&#039; показывает подключенные диски.&lt;br /&gt;
&lt;br /&gt;
Если возникнут проблемы монтирования ntfs разделов можно выполнить:&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
ntfsfix /dev/nbd1p2&lt;br /&gt;
mount -t ntfs-3g -o remove_hiberfile /dev/nbd1p2 /mnt&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;https://unix.stackexchange.com/a/236145&lt;br /&gt;
&lt;br /&gt;
=== Отключение ===&lt;br /&gt;
# Отключить диск&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
sudo umount /mnt/boot # если был примонтирован&lt;br /&gt;
sudo umount /mnt&lt;br /&gt;
sudo vgchange -a n vg00&lt;br /&gt;
sudo qemu-nbd -d /dev/nbd1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# Включить виртуальную машину&lt;br /&gt;
# Выгрузить модуль ядра nbd, если в нем больше нет необходимости&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
modprobe -r nbd&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Монтирование виртуальной флешки в Continent на PNetLab ==&lt;br /&gt;
&lt;br /&gt;
=== Предусловия: ===&lt;br /&gt;
# Установлен пакет qemu-utils&lt;br /&gt;
&lt;br /&gt;
=== Создание виртуальной флешки ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
sudo modprobe nbd max_part=8&lt;br /&gt;
#или insmod /lib/modules/$(uname -r)/kernel/drivers/block/nbd.ko max_part=8&lt;br /&gt;
qemu-img create -f raw myflash.img 512M&lt;br /&gt;
sudo qemu-nbd -c /dev/nbd2 -f raw ./myflash.img&lt;br /&gt;
fdisk /dev/nbd2&lt;br /&gt;
# ввести n&lt;br /&gt;
# соглашаться со всеми значениями по-умолчанию&lt;br /&gt;
# ввести w&lt;br /&gt;
sudo mkfs -t vfat /dev/nbd2p1&lt;br /&gt;
&lt;br /&gt;
sudo qemu-nbd -d /dev/nbd2&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Подключение флешки в виртуальную машину с Continent ===&lt;br /&gt;
&#039;&#039;&#039;ВАЖНО: Следующий действия могут сломать виртуальную машину с Continent (см. инструкцию &amp;quot;Фиксация MAC адресов в PNetLab&amp;quot;)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
# ВАЖНО: Убедиться, что флешка не подключена к другой виртуальной машине или хосту!&lt;br /&gt;
# В настройки виртуальной машины PNetLab в поле Qemu Options добавить:&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
-drive if=none,id=stick,format=raw,file=&amp;lt;ПУТЬ К ФАЙЛУ С ВИРТУАЛЬНОЙ ФЛЕШКОЙ&amp;gt; -device nec-usb-xhci,id=xhci -device usb-storage,bus=xhci.0,drive=stick&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;[[Файл:PNetLab settings.png|слева]]&lt;br /&gt;
# Перезагрузить Continent&lt;br /&gt;
&lt;br /&gt;
== Получение root доступа к Continent 4 на виртуальной машине ==&lt;br /&gt;
&lt;br /&gt;
# Отключить виртуальную машину с Continent&lt;br /&gt;
# Примонтировать виртуальный диск к хостовой машине (см. Монтирование виртуального диска в хостовую ОС)&lt;br /&gt;
# Заменить файл /mnt/boot/integrity на программу, которая всегда безусловно возвращает 0.&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
int main(int argc, char **argv) {&lt;br /&gt;
   return 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;[[Медиа:Integrity.txt]]  (файл сохранить под именем integrity и дать права на запуск командой chmod +x integrity)&lt;br /&gt;
# В файл настроек ограниченной консоли /etc/clish/misc.xml добавить bash. Для примера можно скопировать раздел настроек для команды uptime и заменить uptime на bash. В атрибут help написать Back door. &lt;br /&gt;
# Отключить диск, включить виртуальную машину с Continent. Через локальное меню Continent запустить ограниченную консоль (Инструменты - Диагностика - Командная строка) и выполнить команду bash. Получаем полный доступ к Linux под root.&lt;br /&gt;
&lt;br /&gt;
== Перекомпиляция ядра на виртуальной машине Continent ==&lt;br /&gt;
&lt;br /&gt;
# Получить root доступ Continent (см. Получение root доступа к Continent 4 на виртуальной машине)&lt;br /&gt;
# Примонтировать виртуальный диск к хостовой машине (см. Монтирование виртуального диска в хостовую ОС)&lt;br /&gt;
# В виртуальной машине в каталоге /boot по названию файлов определяем базовую версию ядра (например 5.10.210). Cкачиваем исходный код ядра нужной версии https://mirrors.edge.kernel.org/pub/linux/kernel/ . Устанавливаем необходимые для компиляции библиотеки. &amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo apt update&lt;br /&gt;
sudo apt install build-essential libncurses-dev bison flex libssl-dev libelf-dev fakeroot&lt;br /&gt;
sudo apt install dwarves&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# Копируем из виртуальной машины в папку с ядром  файл /boot/config-XXXX под именем .config. Добавляем/изменяем параметры ядра в конфигурационном файле:&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
CONFIG_BPF_SYSCALL=y&lt;br /&gt;
CONFIG_BPF_UNPRIV_DEFAULT_OFF=y&lt;br /&gt;
CONFIG_BPF_JIT_ALWAYS_ON=y&lt;br /&gt;
CONFIG_DEBUG_INFO_BTF=y&lt;br /&gt;
CONFIG_DEBUG_INFO_REDUCED=y&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# Компилируем ядро командой make -j&amp;lt;количество параллельных потоков&amp;gt;. -Проверяем успешность компиляции:&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo $? #должен вернуться 0 в случае отсутсвия ошибок&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# Устанавливаем новое ядро в Continent &amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo make INSTALL_MOD_PATH=/mnt modules_install&lt;br /&gt;
sudo make INSTALL_PATH=/mnt/boot install&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;https://www.nathansweet.me/2017/02/03/build-linux-for-virtualbox&lt;br /&gt;
#Добавляем новое ядро в grub  В файле /boot/grub/grub.conf дублируем строки загрузки основного ядра, заменяя название старого ядра на новое. &lt;br /&gt;
#Увеличиваем раздел /tmp  в Continent до 1Гбт   Текущего размера раздела tmp не хватает для проведения дальнейший операций, поэтому необходимо сначала уменьшить один из больших разделов, например /var, а затем увеличить раздел /tmp из освобожденного места.   Список текущих разделов можно посмотреть командой lsblk  https://ostechnix.com/resize-lvm-partitions-linux/&lt;br /&gt;
#Отключаем виртуальный диск, запускаем Continent, заходим в консоль под root&lt;br /&gt;
#Формируем initramfs&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cd /boot&lt;br /&gt;
dracut initramfs-&amp;lt;версия ядра&amp;gt;.x86_64.img &amp;lt;версия ядра&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
#Перезагружаем Continent и выбираем в загрузчике новое ядро.&lt;/div&gt;</summary>
		<author><name>Entcor</name></author>
	</entry>
	<entry>
		<id>https://wiki.entcor.ru/index.php?title=%D0%98%D0%BD%D1%81%D1%82%D1%80%D1%83%D0%BA%D1%86%D0%B8%D0%B8_%D0%BF%D0%BE_Continent&amp;diff=228</id>
		<title>Инструкции по Continent</title>
		<link rel="alternate" type="text/html" href="https://wiki.entcor.ru/index.php?title=%D0%98%D0%BD%D1%81%D1%82%D1%80%D1%83%D0%BA%D1%86%D0%B8%D0%B8_%D0%BF%D0%BE_Continent&amp;diff=228"/>
		<updated>2024-05-20T01:46:14Z</updated>

		<summary type="html">&lt;p&gt;Entcor: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Общее ==&lt;br /&gt;
Инструкции для [[Continent]]&lt;br /&gt;
&lt;br /&gt;
== Фиксация MAC адресов в PNetLab ==&lt;br /&gt;
&#039;&#039;&#039;ВАЖНО: Подключение флешки, как и другие манипуляции с настройками машин PNetLab и их &amp;lt;u&amp;gt;связями&amp;lt;/u&amp;gt;, заново генерируют MAC адреса для сетевых карт. Это приводит к изменению названий сетевых интерфейсов и ломает настройки сети в Continent. Что бы это избежать, необходимо заполнить поле First MAC в настройках каждой виртуальной машины уникальными значениями.&#039;&#039;&#039;&lt;br /&gt;
[[Файл:First MAC.png|слева]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Cоответсвие MAC адресов и названий интерфейсов храняться в файле /etc/udev/rules.d/70-persistent-net.rules ([https://serverfault.com/questions/981952/centos-7-how-to-get-interface-name-by-macaddress/982045#982045 ссылка])&lt;br /&gt;
&lt;br /&gt;
== Поиск соответствия сетевых интерфейсов в Linux схеме в PNetLab ==&lt;br /&gt;
Все связи с каждой стороны обозначены как eX. Число X соответствует последнему числу в MAC адресе сетевого интерфейса.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Mac - link.png]]&lt;br /&gt;
&lt;br /&gt;
== Сохранение виртуальных машин в PNetLab ==&lt;br /&gt;
Виртуальные машины в PNetLab работают в рамках сессии. Если сессия будет по какой-то причине остановлена, то все виртуальные машины будут сброшены до базового состояния. &lt;br /&gt;
&lt;br /&gt;
Что бы этого не произошло состояние виртуальных машин надо периодически сохранять. [https://pnetlab.com/pages/documentation?slug=commit-image-docker-and-qemu Инструкция по сохранению.]&lt;br /&gt;
&lt;br /&gt;
==== Сначал создаем копию виртуальных машин ====&lt;br /&gt;
&lt;br /&gt;
# Останавливаем машину&lt;br /&gt;
# В контекстном меню машины нажимаем Node Commit&lt;br /&gt;
# Выбираем Take snapshot ....&lt;br /&gt;
# В настройках машины указываем в качестве образа наш snapshot&lt;br /&gt;
# В контекстном меню  нажимаем Wipe&lt;br /&gt;
# Теперь наша машина работают со своим образом, но который основан на базовом образе, т.е. не занимает лишнее место.&lt;br /&gt;
&lt;br /&gt;
==== Сохраняем изменения в собственный образ ====&lt;br /&gt;
&lt;br /&gt;
# Остановить машину&lt;br /&gt;
# В контекстном меню машины нажимаем Node Commit&lt;br /&gt;
# Выбираем Commit to original&lt;br /&gt;
&lt;br /&gt;
== Монтирование виртуального диска в хостовую ОС ==&lt;br /&gt;
&lt;br /&gt;
=== Предусловия: ===&lt;br /&gt;
# Установлены пакеты qemu-utils и lvm2&lt;br /&gt;
&lt;br /&gt;
=== Монтирование: ===&lt;br /&gt;
# Загрузить модуль ядра nbd&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo modprobe nbd max_part=8&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;В виртульной машине PNetLab эта команда может вызывать ошибку. Тогда необходимо загрузить модуль командой:&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
insmod /lib/modules/$(uname -r)/kernel/drivers/block/nbd.ko max_part=8&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# Отключить виртуальную машину  &#039;&#039;&#039;(ВАЖНО: виртульную машину можно будет включить только после отключения диска из хостовой ОС!)&#039;&#039;&#039;&lt;br /&gt;
# Подключить виртуальный диск&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
sudo qemu-nbd -c /dev/nbd1 &amp;lt;путь к виртуальному диску vdi или qcow2&amp;gt;&lt;br /&gt;
sudo mount /dev/mapper/vg00-lv_root /mnt&lt;br /&gt;
sudo mount /dev/nbd1p1 /mnt/boot # при необходимости доступа к boot разделу&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Команда &#039;&#039;&#039;lsblk&#039;&#039;&#039; показывает подключенные диски.&lt;br /&gt;
&lt;br /&gt;
Если возникнут проблемы монтирования ntfs разделов можно выполнить:&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
ntfsfix /dev/nbd1p2&lt;br /&gt;
mount -t ntfs-3g -o remove_hiberfile /dev/nbd1p2 /mnt&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;https://unix.stackexchange.com/a/236145&lt;br /&gt;
&lt;br /&gt;
=== Отключение ===&lt;br /&gt;
# Отключить диск&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
sudo umount /mnt/boot # если был примонтирован&lt;br /&gt;
sudo umount /mnt&lt;br /&gt;
sudo vgchange -a n vg00&lt;br /&gt;
sudo qemu-nbd -d /dev/nbd1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# Включить виртуальную машину&lt;br /&gt;
# Выгрузить модуль ядра nbd, если в нем больше нет необходимости&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
modprobe -r nbd&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Монтирование виртуальной флешки в Continent на PNetLab ==&lt;br /&gt;
&lt;br /&gt;
=== Предусловия: ===&lt;br /&gt;
# Установлен пакет qemu-utils&lt;br /&gt;
&lt;br /&gt;
=== Создание виртуальной флешки ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
sudo modprobe nbd max_part=8&lt;br /&gt;
#или insmod /lib/modules/$(uname -r)/kernel/drivers/block/nbd.ko max_part=8&lt;br /&gt;
qemu-img create -f raw myflash.img 512M&lt;br /&gt;
sudo qemu-nbd -c /dev/nbd2 -f raw ./myflash.img&lt;br /&gt;
fdisk /dev/nbd2&lt;br /&gt;
# ввести n&lt;br /&gt;
# соглашаться со всеми значениями по-умолчанию&lt;br /&gt;
# ввести w&lt;br /&gt;
sudo mkfs -t vfat /dev/nbd2p1&lt;br /&gt;
&lt;br /&gt;
sudo qemu-nbd -d /dev/nbd2&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Подключение флешки в виртуальную машину с Continent ===&lt;br /&gt;
&#039;&#039;&#039;ВАЖНО: Следующий действия могут сломать виртуальную машину с Continent (см. инструкцию &amp;quot;Фиксация MAC адресов в PNetLab&amp;quot;)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
# ВАЖНО: Убедиться, что флешка не подключена к другой виртуальной машине или хосту!&lt;br /&gt;
# В настройки виртуальной машины PNetLab в поле Qemu Options добавить:&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
-drive if=none,id=stick,format=raw,file=&amp;lt;ПУТЬ К ФАЙЛУ С ВИРТУАЛЬНОЙ ФЛЕШКОЙ&amp;gt; -device nec-usb-xhci,id=xhci -device usb-storage,bus=xhci.0,drive=stick&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;[[Файл:PNetLab settings.png|слева]]&lt;br /&gt;
# Перезагрузить Continent&lt;br /&gt;
&lt;br /&gt;
== Получение root доступа к Continent 4 на виртуальной машине ==&lt;br /&gt;
&lt;br /&gt;
# Отключить виртуальную машину с Continent&lt;br /&gt;
# Примонтировать виртуальный диск к хостовой машине (см. Монтирование виртуального диска в хостовую ОС)&lt;br /&gt;
# Заменить файл /mnt/boot/integrity на программу, которая всегда безусловно возвращает 0.&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
int main(int argc, char **argv) {&lt;br /&gt;
   return 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;[[Медиа:Integrity.txt]]  (файл сохранить под именем integrity и дать права на запуск командой chmod +x integrity)&lt;br /&gt;
# В файл настроек ограниченной консоли /etc/clish/misc.xml добавить bash. Для примера можно скопировать раздел настроек для команды uptime и заменить uptime на bash. В атрибут help написать Back door. &lt;br /&gt;
# Отключить диск, включить виртуальную машину с Continent. Через локальное меню Continent запустить ограниченную консоль (Инструменты - Диагностика - Командная строка) и выполнить команду bash. Получаем полный доступ к Linux под root.&lt;br /&gt;
&lt;br /&gt;
== Перекомпиляция ядра на виртуальной машине Continent ==&lt;br /&gt;
&lt;br /&gt;
# Получить root доступ Continent (см. Получение root доступа к Continent 4 на виртуальной машине)&lt;br /&gt;
# Примонтировать виртуальный диск к хостовой машине (см. Монтирование виртуального диска в хостовую ОС)&lt;br /&gt;
# Компиляция и установка ядра: - в виртуальной машине в каталоге /boot по названию файлов определяем базовую версию ядра (например 5.10.210) - скачиваем исходный код ядра нужной версии https://mirrors.edge.kernel.org/pub/linux/kernel/ - копируем из виртуальной машины в папку с ядром  файл /boot/config-XXXX под именем .config - компилируем ядро командой make -j&amp;lt;количество параллельных потоков&amp;gt; - проверяем успешность компиляции:&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo $? #должен вернуться 0 в случае отсутсвия ошибок&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;- устанавливаем новое ядро в Continent &amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo make INSTALL_MOD_PATH=/mnt modules_install&lt;br /&gt;
sudo make INSTALL_PATH=/mnt/boot install&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;https://www.nathansweet.me/2017/02/03/build-linux-for-virtualbox&lt;br /&gt;
#Добавляем новое ядро в grub  В файле /boot/grub/grub.conf дублируем строки загрузки основного ядра, заменяя название старого ядра на новое. &lt;br /&gt;
#Увеличиваем раздел /tmp  в Continent до 1Гбт   Текущего размера раздела tmp не хватает для проведения дальнейший операций, поэтому необходимо сначала уменьшить один из больших разделов, например /var, а затем увеличить раздел /tmp из освобожденного места.   Список текущих разделов можно посмотреть командой lsblk  https://ostechnix.com/resize-lvm-partitions-linux/&lt;br /&gt;
#Отключаем виртуальный диск, запускаем Continent, заходим в консоль под root&lt;br /&gt;
#Формируем initramfs&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cd /boot&lt;br /&gt;
dracut initramfs-&amp;lt;версия ядра&amp;gt;.x86_64.img &amp;lt;версия ядра&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
#Перезагружаем Continent и выбираем в загрузчике новое ядро.&lt;/div&gt;</summary>
		<author><name>Entcor</name></author>
	</entry>
	<entry>
		<id>https://wiki.entcor.ru/index.php?title=%D0%98%D0%BD%D1%81%D1%82%D1%80%D1%83%D0%BA%D1%86%D0%B8%D0%B8_%D0%BF%D0%BE_Continent&amp;diff=227</id>
		<title>Инструкции по Continent</title>
		<link rel="alternate" type="text/html" href="https://wiki.entcor.ru/index.php?title=%D0%98%D0%BD%D1%81%D1%82%D1%80%D1%83%D0%BA%D1%86%D0%B8%D0%B8_%D0%BF%D0%BE_Continent&amp;diff=227"/>
		<updated>2024-05-17T04:14:48Z</updated>

		<summary type="html">&lt;p&gt;Entcor: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Общее ==&lt;br /&gt;
Инструкции для [[Continent]]&lt;br /&gt;
&lt;br /&gt;
== Фиксация MAC адресов в PNetLab ==&lt;br /&gt;
&#039;&#039;&#039;ВАЖНО: Подключение флешки, как и другие манипуляции с настройками машин PNetLab и их &amp;lt;u&amp;gt;связями&amp;lt;/u&amp;gt;, заново генерируют MAC адреса для сетевых карт. Это приводит к изменению названий сетевых интерфейсов и ломает настройки сети в Continent. Что бы это избежать, необходимо заполнить поле First MAC в настройках каждой виртуальной машины уникальными значениями.&#039;&#039;&#039;&lt;br /&gt;
[[Файл:First MAC.png|слева]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Cоответсвие MAC адресов и названий интерфейсов храняться в файле /etc/udev/rules.d/70-persistent-net.rules ([https://serverfault.com/questions/981952/centos-7-how-to-get-interface-name-by-macaddress/982045#982045 ссылка])&lt;br /&gt;
&lt;br /&gt;
== Поиск соответствия сетевых интерфейсов в Linux схеме в PNetLab ==&lt;br /&gt;
Все связи с каждой стороны обозначены как eX. Число X соответствует последнему числу в MAC адресе сетевого интерфейса.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Mac - link.png]]&lt;br /&gt;
&lt;br /&gt;
== Сохранение виртуальных машин в PNetLab ==&lt;br /&gt;
Виртуальные машины в PNetLab работают в рамках сессии. Если сессия будет по какой-то причине остановлена, то все виртуальные машины будут сброшены до базового состояния. &lt;br /&gt;
&lt;br /&gt;
Что бы этого не произошло состояние виртуальных машин надо периодически сохранять. [https://pnetlab.com/pages/documentation?slug=commit-image-docker-and-qemu Инструкция по сохранению.]&lt;br /&gt;
&lt;br /&gt;
==== Сначал создаем копию виртуальных машин ====&lt;br /&gt;
&lt;br /&gt;
# Останавливаем машину&lt;br /&gt;
# В контекстном меню машины нажимаем Node Commit&lt;br /&gt;
# Выбираем Take snapshot ....&lt;br /&gt;
# В настройках машины указываем в качестве образа наш snapshot&lt;br /&gt;
# В контекстном меню  нажимаем Wipe&lt;br /&gt;
# Теперь наша машина работают со своим образом, но который основан на базовом образе, т.е. не занимает лишнее место.&lt;br /&gt;
&lt;br /&gt;
==== Сохраняем изменения в собственный образ ====&lt;br /&gt;
&lt;br /&gt;
# Остановить машину&lt;br /&gt;
# В контекстном меню машины нажимаем Node Commit&lt;br /&gt;
# Выбираем Commit to original&lt;br /&gt;
&lt;br /&gt;
== Монтирование виртуального диска в хостовую ОС ==&lt;br /&gt;
&lt;br /&gt;
=== Предусловия: ===&lt;br /&gt;
# Установлены пакеты qemu-utils и lvm2&lt;br /&gt;
&lt;br /&gt;
=== Монтирование: ===&lt;br /&gt;
# Загрузить модуль ядра nbd&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo modprobe nbd max_part=8&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;В виртульной машине PNetLab эта команда может вызывать ошибку. Тогда необходимо загрузить модуль командой:&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
insmod /lib/modules/$(uname -r)/kernel/drivers/block/nbd.ko max_part=8&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# Отключить виртуальную машину  &#039;&#039;&#039;(ВАЖНО: виртульную машину можно будет включить только после отключения диска из хостовой ОС!)&#039;&#039;&#039;&lt;br /&gt;
# Подключить виртуальный диск&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
sudo qemu-nbd -c /dev/nbd1 &amp;lt;путь к виртуальному диску vdi или qcow2&amp;gt;&lt;br /&gt;
sudo mount /dev/mapper/vg00-lv_root /mnt&lt;br /&gt;
sudo mount /dev/nbd1p1 /mnt/boot # при необходимости доступа к boot разделу&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Команда &#039;&#039;&#039;lsblk&#039;&#039;&#039; показывает подключенные диски.&lt;br /&gt;
&lt;br /&gt;
Если возникнут проблемы монтирования ntfs разделов можно выполнить:&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
mount -t ntfs-3g -o remove_hiberfile /dev/nbd1p2 /mnt&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;https://unix.stackexchange.com/a/236145&lt;br /&gt;
&lt;br /&gt;
=== Отключение ===&lt;br /&gt;
# Отключить диск&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
sudo umount /mnt/boot # если был примонтирован&lt;br /&gt;
sudo umount /mnt&lt;br /&gt;
sudo vgchange -a n vg00&lt;br /&gt;
sudo qemu-nbd -d /dev/nbd1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# Включить виртуальную машину&lt;br /&gt;
# Выгрузить модуль ядра nbd, если в нем больше нет необходимости&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
modprobe -r nbd&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Монтирование виртуальной флешки в Continent на PNetLab ==&lt;br /&gt;
&lt;br /&gt;
=== Предусловия: ===&lt;br /&gt;
# Установлен пакет qemu-utils&lt;br /&gt;
&lt;br /&gt;
=== Создание виртуальной флешки ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
sudo modprobe nbd max_part=8&lt;br /&gt;
#или insmod /lib/modules/$(uname -r)/kernel/drivers/block/nbd.ko max_part=8&lt;br /&gt;
qemu-img create -f raw myflash.img 512M&lt;br /&gt;
sudo qemu-nbd -c /dev/nbd2 -f raw ./myflash.img&lt;br /&gt;
fdisk /dev/nbd2&lt;br /&gt;
# ввести n&lt;br /&gt;
# соглашаться со всеми значениями по-умолчанию&lt;br /&gt;
# ввести w&lt;br /&gt;
sudo mkfs -t vfat /dev/nbd2p1&lt;br /&gt;
&lt;br /&gt;
sudo qemu-nbd -d /dev/nbd2&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Подключение флешки в виртуальную машину с Continent ===&lt;br /&gt;
&#039;&#039;&#039;ВАЖНО: Следующий действия могут сломать виртуальную машину с Continent (см. инструкцию &amp;quot;Фиксация MAC адресов в PNetLab&amp;quot;)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
# ВАЖНО: Убедиться, что флешка не подключена к другой виртуальной машине или хосту!&lt;br /&gt;
# В настройки виртуальной машины PNetLab в поле Qemu Options добавить:&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
-drive if=none,id=stick,format=raw,file=&amp;lt;ПУТЬ К ФАЙЛУ С ВИРТУАЛЬНОЙ ФЛЕШКОЙ&amp;gt; -device nec-usb-xhci,id=xhci -device usb-storage,bus=xhci.0,drive=stick&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;[[Файл:PNetLab settings.png|слева]]&lt;br /&gt;
# Перезагрузить Continent&lt;br /&gt;
&lt;br /&gt;
== Получение root доступа к Continent 4 на виртуальной машине ==&lt;br /&gt;
&lt;br /&gt;
# Отключить виртуальную машину с Continent&lt;br /&gt;
# Примонтировать виртуальный диск к хостовой машине (см. Монтирование виртуального диска в хостовую ОС)&lt;br /&gt;
# Заменить файл /mnt/boot/integrity на программу, которая всегда безусловно возвращает 0.&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
int main(int argc, char **argv) {&lt;br /&gt;
   return 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;[[Медиа:Integrity.txt]]  (файл сохранить под именем integrity и дать права на запуск командой chmod +x integrity)&lt;br /&gt;
# В файл настроек ограниченной консоли /etc/clish/misc.xml добавить bash. Для примера можно скопировать раздел настроек для команды uptime и заменить uptime на bash. В атрибут help написать Back door. &lt;br /&gt;
# Отключить диск, включить виртуальную машину с Continent. Через локальное меню Continent запустить ограниченную консоль (Инструменты - Диагностика - Командная строка) и выполнить команду bash. Получаем полный доступ к Linux под root.&lt;br /&gt;
&lt;br /&gt;
== Перекомпиляция ядра на виртуальной машине Continent ==&lt;br /&gt;
&lt;br /&gt;
# Получить root доступ Continent (см. Получение root доступа к Continent 4 на виртуальной машине)&lt;br /&gt;
# Примонтировать виртуальный диск к хостовой машине (см. Монтирование виртуального диска в хостовую ОС)&lt;br /&gt;
# Компиляция и установка ядра: - в виртуальной машине в каталоге /boot по названию файлов определяем базовую версию ядра (например 5.10.210) - скачиваем исходный код ядра нужной версии https://mirrors.edge.kernel.org/pub/linux/kernel/ - копируем из виртуальной машины в папку с ядром  файл /boot/config-XXXX под именем .config - компилируем ядро командой make -j&amp;lt;количество параллельных потоков&amp;gt; - проверяем успешность компиляции:&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo $? #должен вернуться 0 в случае отсутсвия ошибок&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;- устанавливаем новое ядро в Continent &amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo make INSTALL_MOD_PATH=/mnt modules_install&lt;br /&gt;
sudo make INSTALL_PATH=/mnt/boot install&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;https://www.nathansweet.me/2017/02/03/build-linux-for-virtualbox&lt;br /&gt;
#Добавляем новое ядро в grub  В файле /boot/grub/grub.conf дублируем строки загрузки основного ядра, заменяя название старого ядра на новое. &lt;br /&gt;
#Увеличиваем раздел /tmp  в Continent до 1Гбт   Текущего размера раздела tmp не хватает для проведения дальнейший операций, поэтому необходимо сначала уменьшить один из больших разделов, например /var, а затем увеличить раздел /tmp из освобожденного места.   Список текущих разделов можно посмотреть командой lsblk  https://ostechnix.com/resize-lvm-partitions-linux/&lt;br /&gt;
#Отключаем виртуальный диск, запускаем Continent, заходим в консоль под root&lt;br /&gt;
#Формируем initramfs&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cd /boot&lt;br /&gt;
dracut initramfs-&amp;lt;версия ядра&amp;gt;.x86_64.img &amp;lt;версия ядра&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
#Перезагружаем Continent и выбираем в загрузчике новое ядро.&lt;/div&gt;</summary>
		<author><name>Entcor</name></author>
	</entry>
	<entry>
		<id>https://wiki.entcor.ru/index.php?title=%D0%98%D0%BD%D1%81%D1%82%D1%80%D1%83%D0%BA%D1%86%D0%B8%D0%B8_%D0%BF%D0%BE_Continent&amp;diff=226</id>
		<title>Инструкции по Continent</title>
		<link rel="alternate" type="text/html" href="https://wiki.entcor.ru/index.php?title=%D0%98%D0%BD%D1%81%D1%82%D1%80%D1%83%D0%BA%D1%86%D0%B8%D0%B8_%D0%BF%D0%BE_Continent&amp;diff=226"/>
		<updated>2024-05-17T04:14:16Z</updated>

		<summary type="html">&lt;p&gt;Entcor: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Общее ==&lt;br /&gt;
Инструкции для [[Continent]]&lt;br /&gt;
&lt;br /&gt;
== Фиксация MAC адресов в PNetLab ==&lt;br /&gt;
&#039;&#039;&#039;ВАЖНО: Подключение флешки, как и другие манипуляции с настройками машин PNetLab и их &amp;lt;u&amp;gt;связями&amp;lt;/u&amp;gt;, заново генерируют MAC адреса для сетевых карт. Это приводит к изменению названий сетевых интерфейсов и ломает настройки сети в Continent. Что бы это избежать, необходимо заполнить поле First MAC в настройках каждой виртуальной машины уникальными значениями.&#039;&#039;&#039;&lt;br /&gt;
[[Файл:First MAC.png|слева]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Cоответсвие MAC адресов и названий интерфейсов храняться в файле /etc/udev/rules.d/70-persistent-net.rules ([https://serverfault.com/questions/981952/centos-7-how-to-get-interface-name-by-macaddress/982045#982045 ссылка])&lt;br /&gt;
&lt;br /&gt;
== Поиск соответствия сетевых интерфейсов в Linux схеме в PNetLab ==&lt;br /&gt;
Все связи с каждой стороны обозначены как eX. Число X соответствует последнему числу в MAC адресе сетевого интерфейса.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Mac - link.png]]&lt;br /&gt;
&lt;br /&gt;
== Сохранение виртуальных машин в PNetLab ==&lt;br /&gt;
Виртуальные машины в PNetLab работают в рамках сессии. Если сессия будет по какой-то причине остановлена, то все виртуальные машины будут сброшены до базового состояния. &lt;br /&gt;
&lt;br /&gt;
Что бы этого не произошло состояние виртуальных машин надо периодически сохранять. [https://pnetlab.com/pages/documentation?slug=commit-image-docker-and-qemu Инструкция по сохранению.]&lt;br /&gt;
&lt;br /&gt;
==== Сначал создаем копию виртуальных машин ====&lt;br /&gt;
&lt;br /&gt;
# Останавливаем машину&lt;br /&gt;
# В контекстном меню машины нажимаем Node Commit&lt;br /&gt;
# Выбираем Take snapshot ....&lt;br /&gt;
# В настройках машины указываем в качестве образа наш snapshot&lt;br /&gt;
# В контекстном меню  нажимаем Wipe&lt;br /&gt;
# Теперь наша машина работают со своим образом, но который основан на базовом образе, т.е. не занимает лишнее место.&lt;br /&gt;
&lt;br /&gt;
==== Сохраняем изменения в собственный образ ====&lt;br /&gt;
&lt;br /&gt;
# Остановить машину&lt;br /&gt;
# В контекстном меню машины нажимаем Node Commit&lt;br /&gt;
# Выбираем Commit to original&lt;br /&gt;
&lt;br /&gt;
== Монтирование виртуального диска в хостовую ОС ==&lt;br /&gt;
&lt;br /&gt;
=== Предусловия: ===&lt;br /&gt;
# Установлены пакеты qemu-utils и lvm2&lt;br /&gt;
&lt;br /&gt;
=== Монтирование: ===&lt;br /&gt;
# Загрузить модуль ядра nbd&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo modprobe nbd max_part=8&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;В виртульной машине PNetLab эта команда может вызывать ошибку. Тогда необходимо загрузить модуль командой:&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
insmod /lib/modules/$(uname -r)/kernel/drivers/block/nbd.ko max_part=8&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# Отключить виртуальную машину  &#039;&#039;&#039;(ВАЖНО: виртульную машину можно будет включить только после отключения диска из хостовой ОС!)&#039;&#039;&#039;&lt;br /&gt;
# Подключить виртуальный диск&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
sudo qemu-nbd -c /dev/nbd1 &amp;lt;путь к виртуальному диску vdi или qcow2&amp;gt;&lt;br /&gt;
sudo mount /dev/mapper/vg00-lv_root /mnt&lt;br /&gt;
sudo mount /dev/nbd1p1 /mnt/boot # при необходимости доступа к boot разделу&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Команда lsblk показывает подключенные диски.&lt;br /&gt;
&lt;br /&gt;
Если возникнут проблемы монтирования ntfs разделов можно выполнить:&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
mount -t ntfs-3g -o remove_hiberfile /dev/nbd1p2 /mnt&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;https://unix.stackexchange.com/a/236145&lt;br /&gt;
&lt;br /&gt;
=== Отключение ===&lt;br /&gt;
# Отключить диск&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
sudo umount /mnt/boot # если был примонтирован&lt;br /&gt;
sudo umount /mnt&lt;br /&gt;
sudo vgchange -a n vg00&lt;br /&gt;
sudo qemu-nbd -d /dev/nbd1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# Включить виртуальную машину&lt;br /&gt;
# Выгрузить модуль ядра nbd, если в нем больше нет необходимости&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
modprobe -r nbd&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Монтирование виртуальной флешки в Continent на PNetLab ==&lt;br /&gt;
&lt;br /&gt;
=== Предусловия: ===&lt;br /&gt;
# Установлен пакет qemu-utils&lt;br /&gt;
&lt;br /&gt;
=== Создание виртуальной флешки ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
sudo modprobe nbd max_part=8&lt;br /&gt;
#или insmod /lib/modules/$(uname -r)/kernel/drivers/block/nbd.ko max_part=8&lt;br /&gt;
qemu-img create -f raw myflash.img 512M&lt;br /&gt;
sudo qemu-nbd -c /dev/nbd2 -f raw ./myflash.img&lt;br /&gt;
fdisk /dev/nbd2&lt;br /&gt;
# ввести n&lt;br /&gt;
# соглашаться со всеми значениями по-умолчанию&lt;br /&gt;
# ввести w&lt;br /&gt;
sudo mkfs -t vfat /dev/nbd2p1&lt;br /&gt;
&lt;br /&gt;
sudo qemu-nbd -d /dev/nbd2&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Подключение флешки в виртуальную машину с Continent ===&lt;br /&gt;
&#039;&#039;&#039;ВАЖНО: Следующий действия могут сломать виртуальную машину с Continent (см. инструкцию &amp;quot;Фиксация MAC адресов в PNetLab&amp;quot;)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
# ВАЖНО: Убедиться, что флешка не подключена к другой виртуальной машине или хосту!&lt;br /&gt;
# В настройки виртуальной машины PNetLab в поле Qemu Options добавить:&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
-drive if=none,id=stick,format=raw,file=&amp;lt;ПУТЬ К ФАЙЛУ С ВИРТУАЛЬНОЙ ФЛЕШКОЙ&amp;gt; -device nec-usb-xhci,id=xhci -device usb-storage,bus=xhci.0,drive=stick&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;[[Файл:PNetLab settings.png|слева]]&lt;br /&gt;
# Перезагрузить Continent&lt;br /&gt;
&lt;br /&gt;
== Получение root доступа к Continent 4 на виртуальной машине ==&lt;br /&gt;
&lt;br /&gt;
# Отключить виртуальную машину с Continent&lt;br /&gt;
# Примонтировать виртуальный диск к хостовой машине (см. Монтирование виртуального диска в хостовую ОС)&lt;br /&gt;
# Заменить файл /mnt/boot/integrity на программу, которая всегда безусловно возвращает 0.&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
int main(int argc, char **argv) {&lt;br /&gt;
   return 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;[[Медиа:Integrity.txt]]  (файл сохранить под именем integrity и дать права на запуск командой chmod +x integrity)&lt;br /&gt;
# В файл настроек ограниченной консоли /etc/clish/misc.xml добавить bash. Для примера можно скопировать раздел настроек для команды uptime и заменить uptime на bash. В атрибут help написать Back door. &lt;br /&gt;
# Отключить диск, включить виртуальную машину с Continent. Через локальное меню Continent запустить ограниченную консоль (Инструменты - Диагностика - Командная строка) и выполнить команду bash. Получаем полный доступ к Linux под root.&lt;br /&gt;
&lt;br /&gt;
== Перекомпиляция ядра на виртуальной машине Continent ==&lt;br /&gt;
&lt;br /&gt;
# Получить root доступ Continent (см. Получение root доступа к Continent 4 на виртуальной машине)&lt;br /&gt;
# Примонтировать виртуальный диск к хостовой машине (см. Монтирование виртуального диска в хостовую ОС)&lt;br /&gt;
# Компиляция и установка ядра: - в виртуальной машине в каталоге /boot по названию файлов определяем базовую версию ядра (например 5.10.210) - скачиваем исходный код ядра нужной версии https://mirrors.edge.kernel.org/pub/linux/kernel/ - копируем из виртуальной машины в папку с ядром  файл /boot/config-XXXX под именем .config - компилируем ядро командой make -j&amp;lt;количество параллельных потоков&amp;gt; - проверяем успешность компиляции:&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo $? #должен вернуться 0 в случае отсутсвия ошибок&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;- устанавливаем новое ядро в Continent &amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo make INSTALL_MOD_PATH=/mnt modules_install&lt;br /&gt;
sudo make INSTALL_PATH=/mnt/boot install&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;https://www.nathansweet.me/2017/02/03/build-linux-for-virtualbox&lt;br /&gt;
#Добавляем новое ядро в grub  В файле /boot/grub/grub.conf дублируем строки загрузки основного ядра, заменяя название старого ядра на новое. &lt;br /&gt;
#Увеличиваем раздел /tmp  в Continent до 1Гбт   Текущего размера раздела tmp не хватает для проведения дальнейший операций, поэтому необходимо сначала уменьшить один из больших разделов, например /var, а затем увеличить раздел /tmp из освобожденного места.   Список текущих разделов можно посмотреть командой lsblk  https://ostechnix.com/resize-lvm-partitions-linux/&lt;br /&gt;
#Отключаем виртуальный диск, запускаем Continent, заходим в консоль под root&lt;br /&gt;
#Формируем initramfs&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cd /boot&lt;br /&gt;
dracut initramfs-&amp;lt;версия ядра&amp;gt;.x86_64.img &amp;lt;версия ядра&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
#Перезагружаем Continent и выбираем в загрузчике новое ядро.&lt;/div&gt;</summary>
		<author><name>Entcor</name></author>
	</entry>
	<entry>
		<id>https://wiki.entcor.ru/index.php?title=%D0%97%D0%B0%D0%B4%D0%B0%D1%87%D0%B8_(%D0%BD%D0%B0_%D0%BF%D1%80%D0%BE%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D1%83)&amp;diff=225</id>
		<title>Задачи (на проработку)</title>
		<link rel="alternate" type="text/html" href="https://wiki.entcor.ru/index.php?title=%D0%97%D0%B0%D0%B4%D0%B0%D1%87%D0%B8_(%D0%BD%D0%B0_%D0%BF%D1%80%D0%BE%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D1%83)&amp;diff=225"/>
		<updated>2024-05-17T00:13:00Z</updated>

		<summary type="html">&lt;p&gt;Entcor: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Производительность:&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
- Алгоритм классификации пакетов (перебор правил)  &lt;br /&gt;
&lt;br /&gt;
- Cache вердиктов fw (conntrack)  &lt;br /&gt;
&lt;br /&gt;
- Ограничение по количеству правил (не хватает стека?) &lt;br /&gt;
&lt;br /&gt;
- Переход на ringbuffer (kernel &amp;gt;= 5.8) или BPF_MAP_TYPE_LRU_HASH (https://github.com/cloudflare/ebpf_exporter) или BPF_MAP_TYPE_PERCPU_HASH (https://justin.azoff.dev/blog/bpf_map_get_next_key-pitfalls/) &lt;br /&gt;
&lt;br /&gt;
- Подписка вместо опроса (docker, devices, info) &lt;br /&gt;
&lt;br /&gt;
- ip адреса передавать как числа (можно ли тип number в JS?) &lt;br /&gt;
&lt;br /&gt;
- Формат передачи статистики (не HTTP?) (перехода на Push режим в части данных)  &lt;br /&gt;
&lt;br /&gt;
- Нужно автоматическое нагрузочное тестирование  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Распределенная система / надежность:&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
- Обрабатывать потерю связи HA с внешними сервисами (сейчас возможно зависание всего цикла отправки из-за недоступности http) &lt;br /&gt;
&lt;br /&gt;
- Агент в оффлайне &lt;br /&gt;
&lt;br /&gt;
- Формирование отказоустойчивый модели зукипепов - возможно распределенной &lt;br /&gt;
&lt;br /&gt;
- Запуск на старом ядре с контролем его версии. При стром ядре запускаем анент, но кернел спейс запуститься не моожет. Пусть юзер часть запустится и отрапартнует пакетом на сервер о старом ядре &lt;br /&gt;
&lt;br /&gt;
- деградация функций    &lt;br /&gt;
&lt;br /&gt;
- сохранение в файл конфигурации и правил    &lt;br /&gt;
&lt;br /&gt;
- после пересоздания контейнера с zookeeper, работающие HA не могут соединиться с ним. Помогает только перезагрузка HA     &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Качество кода и сборки:&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
- Один репозиторий на ha, blocker и winHA&lt;br /&gt;
&lt;br /&gt;
- Использовать макросы для разбора сетевых заголовков (https://github.com/cloudflare/ebpf_exporter/blob/master/examples/xdp.bpf.c)&lt;br /&gt;
&lt;br /&gt;
- Авто тесты (модульные и функциональные)&lt;br /&gt;
&lt;br /&gt;
- be типы для bigendian&lt;br /&gt;
&lt;br /&gt;
- использовать go context для завершения программы (пример https://github.com/pouriyajamshidi/flat)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Администрирование (наблюдаемость, управляемость):&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
- Логирование сервисов под linux и windows (отдельный лог файл, текст сообщений хранить в отдельном файле, логировать коды https://learn.microsoft.com/en-us/windows/win32/eventlog/message-files, так же использовать категории, изучить best practice) , syslog&lt;br /&gt;
&lt;br /&gt;
- контроль агентом утилизации ресурсов&lt;br /&gt;
&lt;br /&gt;
- доставка конфигурации до host agenta&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Безопасность:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
- Размер IP, TCP, UDP(?) заголовков не фиксирован. Возможны опциональные поля. Это надо учитывать. Особенно для firewall и bloccker.&lt;br /&gt;
&lt;br /&gt;
- Защищенный Канал до агента&lt;br /&gt;
&lt;br /&gt;
- Валидация агента плюс его этп&lt;br /&gt;
&lt;br /&gt;
- CAP_BPF&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Поддержка сетевых технологий:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
- Добавлять неизвестные(неразобранные) пакеты в статистику (есть потеря части информации) &lt;br /&gt;
&lt;br /&gt;
- Поддержка VLAN &lt;br /&gt;
&lt;br /&gt;
- Поддержка IPv6 &lt;br /&gt;
&lt;br /&gt;
- Использование совместно с QoS и агригированными интерфейсами &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Баги:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
- возможно переполнение счетчика с количеством байт, надо использовать структуру с двумя счетчиками (https://elixir.bootlin.com/linux/v5.17.6/source/samples/bpf/sockex2_kern.c#L213) &lt;br /&gt;
&lt;br /&gt;
- многопоточность не обрабатывается (для правил, опции и статистики), может приводить к редким невоспроизоводимым проблемам&lt;br /&gt;
&lt;br /&gt;
- bpf_skb_pull_data (загрузка всего пакета) Проверить, что skb-&amp;gt;len равно размеру всего пакета &lt;br /&gt;
&lt;br /&gt;
- перехватывать панику во всех горутинах, иначе программа падает и не отписывается &lt;br /&gt;
&lt;br /&gt;
- Корректное завершение при сбоях (освобождение ресурсов)  &lt;br /&gt;
&lt;br /&gt;
- Обрабатывать превышение размеров eBPF HASH_MAP  &lt;br /&gt;
&lt;br /&gt;
- Валидация входных данных  &lt;br /&gt;
&lt;br /&gt;
- Обработка ошибок, логирование  &lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;Сырое (не разобранное):&#039;&#039;&#039; ==&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
SD-WAN: &lt;br /&gt;
&lt;br /&gt;
- Редирект пакетов, VPN&lt;br /&gt;
&lt;br /&gt;
- Корректное переключение на другой канал (разрыв соединений по старому каналу?)&lt;/div&gt;</summary>
		<author><name>Entcor</name></author>
	</entry>
	<entry>
		<id>https://wiki.entcor.ru/index.php?title=%D0%98%D0%BD%D1%81%D1%82%D1%80%D1%83%D0%BA%D1%86%D0%B8%D0%B8_%D0%BF%D0%BE_Continent&amp;diff=222</id>
		<title>Инструкции по Continent</title>
		<link rel="alternate" type="text/html" href="https://wiki.entcor.ru/index.php?title=%D0%98%D0%BD%D1%81%D1%82%D1%80%D1%83%D0%BA%D1%86%D0%B8%D0%B8_%D0%BF%D0%BE_Continent&amp;diff=222"/>
		<updated>2024-05-16T08:52:23Z</updated>

		<summary type="html">&lt;p&gt;Entcor: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Общее ==&lt;br /&gt;
Инструкции для [[Continent]]&lt;br /&gt;
&lt;br /&gt;
== Фиксация MAC адресов в PNetLab ==&lt;br /&gt;
&#039;&#039;&#039;ВАЖНО: Подключение флешки, как и другие манипуляции с настройками машин PNetLab и их &amp;lt;u&amp;gt;связями&amp;lt;/u&amp;gt;, заново генерируют MAC адреса для сетевых карт. Это приводит к изменению названий сетевых интерфейсов и ломает настройки сети в Continent. Что бы это избежать, необходимо заполнить поле First MAC в настройках каждой виртуальной машины уникальными значениями.&#039;&#039;&#039;&lt;br /&gt;
[[Файл:First MAC.png|слева]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Cоответсвие MAC адресов и названий интерфейсов храняться в файле /etc/udev/rules.d/70-persistent-net.rules ([https://serverfault.com/questions/981952/centos-7-how-to-get-interface-name-by-macaddress/982045#982045 ссылка])&lt;br /&gt;
&lt;br /&gt;
== Поиск соответствия сетевых интерфейсов в Linux схеме в PNetLab ==&lt;br /&gt;
Все связи с каждой стороны обозначены как eX. Число X соответствует последнему числу в MAC адресе сетевого интерфейса.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Mac - link.png]]&lt;br /&gt;
&lt;br /&gt;
== Сохранение виртуальных машин в PNetLab ==&lt;br /&gt;
Виртуальные машины в PNetLab работают в рамках сессии. Если сессия будет по какой-то причине остановлена, то все виртуальные машины будут сброшены до базового состояния. &lt;br /&gt;
&lt;br /&gt;
Что бы этого не произошло состояние виртуальных машин надо периодически сохранять. [https://pnetlab.com/pages/documentation?slug=commit-image-docker-and-qemu Инструкция по сохранению.]&lt;br /&gt;
&lt;br /&gt;
==== Сначал создаем копию виртуальных машин ====&lt;br /&gt;
&lt;br /&gt;
# Останавливаем машину&lt;br /&gt;
# В контекстном меню машины нажимаем Node Commit&lt;br /&gt;
# Выбираем Take snapshot ....&lt;br /&gt;
# В настройках машины указываем в качестве образа наш snapshot&lt;br /&gt;
# В контекстном меню  нажимаем Wipe&lt;br /&gt;
# Теперь наша машина работают со своим образом, но который основан на базовом образе, т.е. не занимает лишнее место.&lt;br /&gt;
&lt;br /&gt;
==== Сохраняем изменения в собственный образ ====&lt;br /&gt;
&lt;br /&gt;
# Остановить машину&lt;br /&gt;
# В контекстном меню машины нажимаем Node Commit&lt;br /&gt;
# Выбираем Commit to original&lt;br /&gt;
&lt;br /&gt;
== Монтирование виртуального диска в хостовую ОС ==&lt;br /&gt;
&lt;br /&gt;
=== Предусловия: ===&lt;br /&gt;
# Установлены пакеты qemu-utils и lvm2&lt;br /&gt;
&lt;br /&gt;
=== Монтирование: ===&lt;br /&gt;
# Загрузить модуль ядра nbd&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo modprobe nbd max_part=8&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;В виртульной машине PNetLab эта команда может вызывать ошибку. Тогда необходимо загрузить модуль командой:&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
insmod /lib/modules/$(uname -r)/kernel/drivers/block/nbd.ko max_part=8&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# Отключить виртуальную машину  &#039;&#039;&#039;(ВАЖНО: виртульную машину можно будет включить только после отключения диска из хостовой ОС!)&#039;&#039;&#039;&lt;br /&gt;
# Подключить виртуальный диск&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
sudo qemu-nbd -c /dev/nbd1 &amp;lt;путь к виртуальному диску vdi или qcow2&amp;gt;&lt;br /&gt;
sudo mount /dev/mapper/vg00-lv_root /mnt&lt;br /&gt;
sudo mount /dev/nbd1p1 /mnt/boot # при необходимости доступа к boot разделу&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Команда lsblk показывает подключенные диски.&lt;br /&gt;
&lt;br /&gt;
=== Отключение ===&lt;br /&gt;
# Отключить диск&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
sudo umount /mnt/boot # если был примонтирован&lt;br /&gt;
sudo umount /mnt&lt;br /&gt;
sudo vgchange -a n vg00&lt;br /&gt;
sudo qemu-nbd -d /dev/nbd1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# Включить виртуальную машину&lt;br /&gt;
# Выгрузить модуль ядра nbd, если в нем больше нет необходимости&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
modprobe -r nbd&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Монтирование виртуальной флешки в Continent на PNetLab ==&lt;br /&gt;
&lt;br /&gt;
=== Предусловия: ===&lt;br /&gt;
# Установлен пакет qemu-utils&lt;br /&gt;
&lt;br /&gt;
=== Создание виртуальной флешки ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
sudo modprobe nbd max_part=8&lt;br /&gt;
#или insmod /lib/modules/$(uname -r)/kernel/drivers/block/nbd.ko max_part=8&lt;br /&gt;
qemu-img create -f raw myflash.img 512M&lt;br /&gt;
sudo qemu-nbd -c /dev/nbd2 -f raw ./myflash.img&lt;br /&gt;
fdisk /dev/nbd2&lt;br /&gt;
# ввести n&lt;br /&gt;
# соглашаться со всеми значениями по-умолчанию&lt;br /&gt;
# ввести w&lt;br /&gt;
sudo mkfs -t vfat /dev/nbd2p1&lt;br /&gt;
&lt;br /&gt;
sudo qemu-nbd -d /dev/nbd2&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Подключение флешки в виртуальную машину с Continent ===&lt;br /&gt;
&#039;&#039;&#039;ВАЖНО: Следующий действия могут сломать виртуальную машину с Continent (см. инструкцию &amp;quot;Фиксация MAC адресов в PNetLab&amp;quot;)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
# ВАЖНО: Убедиться, что флешка не подключена к другой виртуальной машине или хосту!&lt;br /&gt;
# В настройки виртуальной машины PNetLab в поле Qemu Options добавить:&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
-drive if=none,id=stick,format=raw,file=&amp;lt;ПУТЬ К ФАЙЛУ С ВИРТУАЛЬНОЙ ФЛЕШКОЙ&amp;gt; -device nec-usb-xhci,id=xhci -device usb-storage,bus=xhci.0,drive=stick&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;[[Файл:PNetLab settings.png|слева]]&lt;br /&gt;
# Перезагрузить Continent&lt;br /&gt;
&lt;br /&gt;
== Получение root доступа к Continent 4 на виртуальной машине ==&lt;br /&gt;
&lt;br /&gt;
# Отключить виртуальную машину с Continent&lt;br /&gt;
# Примонтировать виртуальный диск к хостовой машине (см. Монтирование виртуального диска в хостовую ОС)&lt;br /&gt;
# Заменить файл /mnt/boot/integrity на программу, которая всегда безусловно возвращает 0.&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
int main(int argc, char **argv) {&lt;br /&gt;
   return 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;[[Медиа:Integrity.txt]]  (файл сохранить под именем integrity и дать права на запуск командой chmod +x integrity)&lt;br /&gt;
# В файл настроек ограниченной консоли /etc/clish/misc.xml добавить bash. Для примера можно скопировать раздел настроек для команды uptime и заменить uptime на bash. В атрибут help написать Back door. &lt;br /&gt;
# Отключить диск, включить виртуальную машину с Continent. Через локальное меню Continent запустить ограниченную консоль (Инструменты - Диагностика - Командная строка) и выполнить команду bash. Получаем полный доступ к Linux под root.&lt;br /&gt;
&lt;br /&gt;
== Перекомпиляция ядра на виртуальной машине Continent ==&lt;br /&gt;
&lt;br /&gt;
# Получить root доступ Continent (см. Получение root доступа к Continent 4 на виртуальной машине)&lt;br /&gt;
# Примонтировать виртуальный диск к хостовой машине (см. Монтирование виртуального диска в хостовую ОС)&lt;br /&gt;
# Компиляция и установка ядра: - в виртуальной машине в каталоге /boot по названию файлов определяем базовую версию ядра (например 5.10.210) - скачиваем исходный код ядра нужной версии https://mirrors.edge.kernel.org/pub/linux/kernel/ - копируем из виртуальной машины в папку с ядром  файл /boot/config-XXXX под именем .config - компилируем ядро командой make -j&amp;lt;количество параллельных потоков&amp;gt; - проверяем успешность компиляции:&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo $? #должен вернуться 0 в случае отсутсвия ошибок&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;- устанавливаем новое ядро в Continent &amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo make INSTALL_MOD_PATH=/mnt modules_install&lt;br /&gt;
sudo make INSTALL_PATH=/mnt/boot install&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;https://www.nathansweet.me/2017/02/03/build-linux-for-virtualbox&lt;br /&gt;
#Добавляем новое ядро в grub  В файле /boot/grub/grub.conf дублируем строки загрузки основного ядра, заменяя название старого ядра на новое. &lt;br /&gt;
#Увеличиваем раздел /tmp  в Continent до 1Гбт   Текущего размера раздела tmp не хватает для проведения дальнейший операций, поэтому необходимо сначала уменьшить один из больших разделов, например /var, а затем увеличить раздел /tmp из освобожденного места.   Список текущих разделов можно посмотреть командой lsblk  https://ostechnix.com/resize-lvm-partitions-linux/&lt;br /&gt;
#Отключаем виртуальный диск, запускаем Continent, заходим в консоль под root&lt;br /&gt;
#Формируем initramfs&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cd /boot&lt;br /&gt;
dracut initramfs-&amp;lt;версия ядра&amp;gt;.x86_64.img &amp;lt;версия ядра&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
#Перезагружаем Continent и выбираем в загрузчике новое ядро.&lt;/div&gt;</summary>
		<author><name>Entcor</name></author>
	</entry>
	<entry>
		<id>https://wiki.entcor.ru/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:Mac_-_link.png&amp;diff=221</id>
		<title>Файл:Mac - link.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.entcor.ru/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:Mac_-_link.png&amp;diff=221"/>
		<updated>2024-05-16T08:37:11Z</updated>

		<summary type="html">&lt;p&gt;Entcor: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;-&lt;/div&gt;</summary>
		<author><name>Entcor</name></author>
	</entry>
	<entry>
		<id>https://wiki.entcor.ru/index.php?title=%D0%98%D0%BD%D1%81%D1%82%D1%80%D1%83%D0%BA%D1%86%D0%B8%D0%B8_%D0%BF%D0%BE_Continent&amp;diff=220</id>
		<title>Инструкции по Continent</title>
		<link rel="alternate" type="text/html" href="https://wiki.entcor.ru/index.php?title=%D0%98%D0%BD%D1%81%D1%82%D1%80%D1%83%D0%BA%D1%86%D0%B8%D0%B8_%D0%BF%D0%BE_Continent&amp;diff=220"/>
		<updated>2024-05-16T08:03:43Z</updated>

		<summary type="html">&lt;p&gt;Entcor: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Общее ==&lt;br /&gt;
Инструкции для [[Continent]]&lt;br /&gt;
&lt;br /&gt;
== Фиксация MAC адресов в PNetLab ==&lt;br /&gt;
&#039;&#039;&#039;ВАЖНО: Подключение флешки, как и другие манипуляции с настройками машин PNetLab и их &amp;lt;u&amp;gt;связями&amp;lt;/u&amp;gt;, заново генерируют MAC адреса для сетевых карт. Это приводит к изменению названий сетевых интерфейсов и ломает настройки сети в Continent. Что бы это избежать, необходимо заполнить поле First MAC в настройках каждой виртуальной машины уникальными значениями.&#039;&#039;&#039;&lt;br /&gt;
[[Файл:First MAC.png|слева]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Cоответсвие MAC адресов и названий интерфейсов храняться в файле /etc/udev/rules.d/70-persistent-net.rules ([https://serverfault.com/questions/981952/centos-7-how-to-get-interface-name-by-macaddress/982045#982045 ссылка])&lt;br /&gt;
&lt;br /&gt;
== Монтирование виртуального диска в хостовую ОС ==&lt;br /&gt;
&lt;br /&gt;
=== Предусловия: ===&lt;br /&gt;
# Установлены пакеты qemu-utils и lvm2&lt;br /&gt;
&lt;br /&gt;
=== Монтирование: ===&lt;br /&gt;
# Загрузить модуль ядра nbd&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo modprobe nbd max_part=8&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;В виртульной машине PNetLab эта команда может вызывать ошибку. Тогда необходимо загрузить модуль командой:&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
insmod /lib/modules/$(uname -r)/kernel/drivers/block/nbd.ko max_part=8&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# Отключить виртуальную машину  &#039;&#039;&#039;(ВАЖНО: виртульную машину можно будет включить только после отключения диска из хостовой ОС!)&#039;&#039;&#039;&lt;br /&gt;
# Подключить виртуальный диск&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
sudo qemu-nbd -c /dev/nbd1 &amp;lt;путь к виртуальному диску vdi или qcow2&amp;gt;&lt;br /&gt;
sudo mount /dev/mapper/vg00-lv_root /mnt&lt;br /&gt;
sudo mount /dev/nbd1p1 /mnt/boot # при необходимости доступа к boot разделу&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Команда lsblk показывает подключенные диски.&lt;br /&gt;
&lt;br /&gt;
=== Отключение ===&lt;br /&gt;
# Отключить диск&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
sudo umount /mnt/boot # если был примонтирован&lt;br /&gt;
sudo umount /mnt&lt;br /&gt;
sudo vgchange -a n vg00&lt;br /&gt;
sudo qemu-nbd -d /dev/nbd1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# Включить виртуальную машину&lt;br /&gt;
# Выгрузить модуль ядра nbd, если в нем больше нет необходимости&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
modprobe -r nbd&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Монтирование виртуальной флешки в Continent на PNetLab ==&lt;br /&gt;
&lt;br /&gt;
=== Предусловия: ===&lt;br /&gt;
# Установлен пакет qemu-utils&lt;br /&gt;
&lt;br /&gt;
=== Создание виртуальной флешки ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
sudo modprobe nbd max_part=8&lt;br /&gt;
#или insmod /lib/modules/$(uname -r)/kernel/drivers/block/nbd.ko max_part=8&lt;br /&gt;
qemu-img create -f raw myflash.img 512M&lt;br /&gt;
sudo qemu-nbd -c /dev/nbd2 -f raw ./myflash.img&lt;br /&gt;
fdisk /dev/nbd2&lt;br /&gt;
# ввести n&lt;br /&gt;
# соглашаться со всеми значениями по-умолчанию&lt;br /&gt;
# ввести w&lt;br /&gt;
sudo mkfs -t vfat /dev/nbd2p1&lt;br /&gt;
&lt;br /&gt;
sudo qemu-nbd -d /dev/nbd2&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Подключение флешки в виртуальную машину с Continent ===&lt;br /&gt;
&#039;&#039;&#039;ВАЖНО: Следующий действия могут сломать виртуальную машину с Continent (см. инструкцию &amp;quot;Фиксация MAC адресов в PNetLab&amp;quot;)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
# ВАЖНО: Убедиться, что флешка не подключена к другой виртуальной машине или хосту!&lt;br /&gt;
# В настройки виртуальной машины PNetLab в поле Qemu Options добавить:&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
-drive if=none,id=stick,format=raw,file=&amp;lt;ПУТЬ К ФАЙЛУ С ВИРТУАЛЬНОЙ ФЛЕШКОЙ&amp;gt; -device nec-usb-xhci,id=xhci -device usb-storage,bus=xhci.0,drive=stick&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;[[Файл:PNetLab settings.png|слева]]&lt;br /&gt;
# Перезагрузить Continent&lt;br /&gt;
&lt;br /&gt;
== Получение root доступа к Continent 4 на виртуальной машине ==&lt;br /&gt;
&lt;br /&gt;
# Отключить виртуальную машину с Continent&lt;br /&gt;
# Примонтировать виртуальный диск к хостовой машине (см. Монтирование виртуального диска в хостовую ОС)&lt;br /&gt;
# Заменить файл /mnt/boot/integrity на программу, которая всегда безусловно возвращает 0.&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
int main(int argc, char **argv) {&lt;br /&gt;
   return 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;[[Медиа:Integrity.txt]]  (файл сохранить под именем integrity и дать права на запуск командой chmod +x integrity)&lt;br /&gt;
# В файл настроек ограниченной консоли /etc/clish/misc.xml добавить bash. Для примера можно скопировать раздел настроек для команды uptime и заменить uptime на bash. В атрибут help написать Back door. &lt;br /&gt;
# Отключить диск, включить виртуальную машину с Continent. Через локальное меню Continent запустить ограниченную консоль (Инструменты - Диагностика - Командная строка) и выполнить команду bash. Получаем полный доступ к Linux под root.&lt;br /&gt;
&lt;br /&gt;
== Перекомпиляция ядра на виртуальной машине Continent ==&lt;br /&gt;
&lt;br /&gt;
# Получить root доступ Continent (см. Получение root доступа к Continent 4 на виртуальной машине)&lt;br /&gt;
# Примонтировать виртуальный диск к хостовой машине (см. Монтирование виртуального диска в хостовую ОС)&lt;br /&gt;
# Компиляция и установка ядра: - в виртуальной машине в каталоге /boot по названию файлов определяем базовую версию ядра (например 5.10.210) - скачиваем исходный код ядра нужной версии https://mirrors.edge.kernel.org/pub/linux/kernel/ - копируем из виртуальной машины в папку с ядром  файл /boot/config-XXXX под именем .config - компилируем ядро командой make -j&amp;lt;количество параллельных потоков&amp;gt; - проверяем успешность компиляции:&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo $? #должен вернуться 0 в случае отсутсвия ошибок&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;- устанавливаем новое ядро в Continent &amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo make INSTALL_MOD_PATH=/mnt modules_install&lt;br /&gt;
sudo make INSTALL_PATH=/mnt/boot install&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;https://www.nathansweet.me/2017/02/03/build-linux-for-virtualbox&lt;br /&gt;
#Добавляем новое ядро в grub  В файле /boot/grub/grub.conf дублируем строки загрузки основного ядра, заменяя название старого ядра на новое. &lt;br /&gt;
#Увеличиваем раздел /tmp  в Continent до 1Гбт   Текущего размера раздела tmp не хватает для проведения дальнейший операций, поэтому необходимо сначала уменьшить один из больших разделов, например /var, а затем увеличить раздел /tmp из освобожденного места.   Список текущих разделов можно посмотреть командой lsblk  https://ostechnix.com/resize-lvm-partitions-linux/&lt;br /&gt;
#Отключаем виртуальный диск, запускаем Continent, заходим в консоль под root&lt;br /&gt;
#Формируем initramfs&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cd /boot&lt;br /&gt;
dracut initramfs-&amp;lt;версия ядра&amp;gt;.x86_64.img &amp;lt;версия ядра&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
#Перезагружаем Continent и выбираем в загрузчике новое ядро.&lt;/div&gt;</summary>
		<author><name>Entcor</name></author>
	</entry>
	<entry>
		<id>https://wiki.entcor.ru/index.php?title=%D0%98%D0%BD%D1%81%D1%82%D1%80%D1%83%D0%BA%D1%86%D0%B8%D0%B8_%D0%BF%D0%BE_Continent&amp;diff=219</id>
		<title>Инструкции по Continent</title>
		<link rel="alternate" type="text/html" href="https://wiki.entcor.ru/index.php?title=%D0%98%D0%BD%D1%81%D1%82%D1%80%D1%83%D0%BA%D1%86%D0%B8%D0%B8_%D0%BF%D0%BE_Continent&amp;diff=219"/>
		<updated>2024-05-16T05:15:30Z</updated>

		<summary type="html">&lt;p&gt;Entcor: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Общее ==&lt;br /&gt;
Инструкции для [[Continent]]&lt;br /&gt;
&lt;br /&gt;
== Фиксация MAC адресов в PNetLab ==&lt;br /&gt;
&#039;&#039;&#039;ВАЖНО: Подключение флешки, как и другие манипуляции с настройками машин PNetLab и их &amp;lt;u&amp;gt;связями&amp;lt;/u&amp;gt;, заново генерируют MAC адреса для сетевых карт. Это приводит к изменению названий сетевых интерфейсов и ломает настройки сети в Continent. Что бы это избежать, необходимо заполнить поле First MAC в настройках каждой виртуальной машины уникальными значениями.&#039;&#039;&#039;&lt;br /&gt;
[[Файл:First MAC.png|слева]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Cоответсвие MAC адресов и названий интерфейсов храняться в файле /etc/udev/rules.d/70-persistent-net.rules ([https://serverfault.com/questions/981952/centos-7-how-to-get-interface-name-by-macaddress/982045#982045 ссылка])&lt;br /&gt;
&lt;br /&gt;
== Монтирование виртуального диска в хостовую ОС ==&lt;br /&gt;
&lt;br /&gt;
=== Предусловия: ===&lt;br /&gt;
# Установлены пакеты qemu-utils и lvm2&lt;br /&gt;
&lt;br /&gt;
=== Монтирование: ===&lt;br /&gt;
# Загрузить модуль ядра nbd&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo modprobe nbd max_part=8&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;В виртульной машине PNetLab эта команда может вызывать ошибку. Тогда необходимо загрузить модуль командой:&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
insmod /lib/modules/$(uname -r)/kernel/drivers/block/nbd.ko max_part=8&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# Отключить виртуальную машину  &#039;&#039;&#039;(ВАЖНО: виртульную машину можно будет включить только после отключения диска из хостовой ОС!)&#039;&#039;&#039;&lt;br /&gt;
# Подключить виртуальный диск&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
sudo qemu-nbd -c /dev/nbd1 &amp;lt;путь к виртуальному диску vdi или qcow2&amp;gt;&lt;br /&gt;
sudo mount /dev/mapper/vg00-lv_root /mnt&lt;br /&gt;
sudo mount /dev/nbd1p1 /mnt/boot # при необходимости доступа к boot разделу&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Команда lsblk показывает подключенные диски.&lt;br /&gt;
&lt;br /&gt;
=== Отключение ===&lt;br /&gt;
# Отключить диск&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
sudo umount /mnt/boot # если был примонтирован&lt;br /&gt;
sudo umount /mnt&lt;br /&gt;
sudo vgchange -a n vg00&lt;br /&gt;
sudo qemu-nbd -d /dev/nbd1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# Включить виртуальную машину&lt;br /&gt;
# Выгрузить модуль ядра nbd, если в нем больше нет необходимости&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
modprobe -r nbd&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Монтирование виртуальной флешки в Continent на PNetLab ==&lt;br /&gt;
&lt;br /&gt;
=== Предусловия: ===&lt;br /&gt;
# Установлен пакет qemu-utils&lt;br /&gt;
&lt;br /&gt;
=== Создание виртуальной флешки ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
sudo modprobe nbd max_part=8&lt;br /&gt;
#или insmod /lib/modules/$(uname -r)/kernel/drivers/block/nbd.ko max_part=8&lt;br /&gt;
qemu-img create -f raw myflash.img 512M&lt;br /&gt;
sudo qemu-nbd -c /dev/nbd2 -f raw ./myflash.img&lt;br /&gt;
fdisk /dev/nbd2&lt;br /&gt;
# ввести n&lt;br /&gt;
# соглашаться со всеми значениями по-умолчанию&lt;br /&gt;
# ввести w&lt;br /&gt;
sudo mkfs -t vfat /dev/nbd2p1&lt;br /&gt;
&lt;br /&gt;
sudo qemu-nbd -d /dev/nbd2&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Подключение флешки в виртуальную машину с Continent ===&lt;br /&gt;
&#039;&#039;&#039;ВАЖНО: Следующий действия могут сломать виртуальную машину с Continent (см. инструкцию &amp;quot;Фиксация MAC адресов в PNetLab&amp;quot;)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
# ВАЖНО: Убедиться, что флешка не подключена к другой виртуальной машине или хосту!&lt;br /&gt;
# В настройки виртуальной машины PNetLab в поле Qemu Options добавить:&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
-drive if=none,id=stick,format=raw,file=&amp;lt;ПУТЬ К ФАЙЛУ С ВИРТУАЛЬНОЙ ФЛЕШКОЙ&amp;gt; -device nec-usb-xhci,id=xhci -device usb-storage,bus=xhci.0,drive=stick&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;[[Файл:PNetLab settings.png|слева]]&lt;br /&gt;
# Перезагрузить Continent&lt;br /&gt;
&lt;br /&gt;
== Получение root доступа к Continent 4 на виртуальной машине ==&lt;br /&gt;
&lt;br /&gt;
# Отключить виртуальную машину с Continent&lt;br /&gt;
# Примонтировать виртуальный диск к хостовой машине (см. Монтирование виртуального диска в хостовую ОС)&lt;br /&gt;
# Заменить файл /mnt/boot/integrity на программу, которая всегда безусловно возвращает 0.&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
int main(int argc, char **argv) {&lt;br /&gt;
   return 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;[[Медиа:Integrity.txt]]  (файл сохранить под именем integrity и дать права на запуск командой chmod +x integrity)&lt;br /&gt;
# В файл настроек ограниченной консоли /etc/clish/misc.xml добавить bash. Для примера можно скопировать раздел настроек для команды uptime и заменить uptime на bash. В атрибут help написать Back door. &lt;br /&gt;
# Включить виртуальную машину с Continent. Через локальное меню Continent запустить ограниченную консоль (Инструменты - Диагностика - Командная строка) и выполнить команду bash. Получаем полный доступ к Linux под root.&lt;br /&gt;
&lt;br /&gt;
== Перекомпиляция ядра на виртуальной машине Continent ==&lt;br /&gt;
&lt;br /&gt;
# Получить root доступ Continent (см. Получение root доступа к Continent 4 на виртуальной машине)&lt;br /&gt;
# Примонтировать виртуальный диск к хостовой машине (см. Монтирование виртуального диска в хостовую ОС)&lt;br /&gt;
# Компиляция и установка ядра: - в виртуальной машине в каталоге /boot по названию файлов определяем базовую версию ядра (например 5.10.210) - скачиваем исходный код ядра нужной версии https://mirrors.edge.kernel.org/pub/linux/kernel/ - копируем из виртуальной машины в папку с ядром  файл /boot/config-XXXX под именем .config - компилируем ядро командой make -j&amp;lt;количество параллельных потоков&amp;gt; - проверяем успешность компиляции:&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo $? #должен вернуться 0 в случае отсутсвия ошибок&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;- устанавливаем новое ядро в Continent &amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo make INSTALL_MOD_PATH=/mnt modules_install&lt;br /&gt;
sudo make INSTALL_PATH=/mnt/boot install&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;https://www.nathansweet.me/2017/02/03/build-linux-for-virtualbox&lt;br /&gt;
#Добавляем новое ядро в grub  В файле /boot/grub/grub.conf дублируем строки загрузки основного ядра, заменяя название старого ядра на новое. &lt;br /&gt;
#Увеличиваем раздел /tmp  в Continent до 1Гбт   Текущего размера раздела tmp не хватает для проведения дальнейший операций, поэтому необходимо сначала уменьшить один из больших разделов, например /var, а затем увеличить раздел /tmp из освобожденного места.   Список текущих разделов можно посмотреть командой lsblk  https://ostechnix.com/resize-lvm-partitions-linux/&lt;br /&gt;
#Отключаем виртуальный диск, запускаем Continent, заходим в консоль под root&lt;br /&gt;
#Формируем initramfs&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cd /boot&lt;br /&gt;
dracut initramfs-&amp;lt;версия ядра&amp;gt;.x86_64.img &amp;lt;версия ядра&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
#Перезагружаем Continent и выбираем в загрузчике новое ядро.&lt;/div&gt;</summary>
		<author><name>Entcor</name></author>
	</entry>
	<entry>
		<id>https://wiki.entcor.ru/index.php?title=%D0%98%D0%BD%D1%81%D1%82%D1%80%D1%83%D0%BA%D1%86%D0%B8%D0%B8_%D0%BF%D0%BE_Continent&amp;diff=218</id>
		<title>Инструкции по Continent</title>
		<link rel="alternate" type="text/html" href="https://wiki.entcor.ru/index.php?title=%D0%98%D0%BD%D1%81%D1%82%D1%80%D1%83%D0%BA%D1%86%D0%B8%D0%B8_%D0%BF%D0%BE_Continent&amp;diff=218"/>
		<updated>2024-05-16T03:59:27Z</updated>

		<summary type="html">&lt;p&gt;Entcor: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Общее ==&lt;br /&gt;
Инструкции для [[Continent]]&lt;br /&gt;
&lt;br /&gt;
== Фиксация MAC адресов в PNetLab ==&lt;br /&gt;
&#039;&#039;&#039;ВАЖНО: Подключение флешки, как и другие манипуляции с настройками машин PNetLab и их &amp;lt;u&amp;gt;связями&amp;lt;/u&amp;gt;, заново генерируют MAC адреса для сетевых карт. Это приводит к изменению названий сетевых интерфейсов и ломает настройки сети в Continent. Что бы это избежать, необходимо заполнить поле First MAC в настройках каждой виртуальной машины уникальными значениями.&#039;&#039;&#039;&lt;br /&gt;
[[Файл:First MAC.png|слева]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Cоответсвие MAC адресов и названий интерфейсов храняться в файле /etc/udev/rules.d/70-persistent-net.rules ([https://serverfault.com/questions/981952/centos-7-how-to-get-interface-name-by-macaddress/982045#982045 ссылка])&lt;br /&gt;
&lt;br /&gt;
== Монтирование виртуального диска в хостовую ОС ==&lt;br /&gt;
&lt;br /&gt;
=== Предусловия: ===&lt;br /&gt;
# Установлены пакеты qemu-utils и lvm2&lt;br /&gt;
&lt;br /&gt;
=== Монтирование: ===&lt;br /&gt;
# Загрузить модуль ядра nbd&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo modprobe nbd max_part=8&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;В виртульной машине PNetLab эта команда может вызывать ошибку. Тогда необходимо загрузить модуль командой:&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
insmod /lib/modules/$(uname -r)/kernel/drivers/block/nbd.ko max_part=8&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# Отключить виртуальную машину  &#039;&#039;&#039;(ВАЖНО: виртульную машину можно будет включить только после отключения диска из хостовой ОС!)&#039;&#039;&#039;&lt;br /&gt;
# Подключить виртуальный диск&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
sudo qemu-nbd -c /dev/nbd1 &amp;lt;путь к виртуальному диску vdi или qcow2&amp;gt;&lt;br /&gt;
sudo mount /dev/mapper/vg00-lv_root /mnt&lt;br /&gt;
sudo mount /dev/nbd1p1 /mnt/boot # при необходимости доступа к boot разделу&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Команда lsblk показывает подключенные диски.&lt;br /&gt;
&lt;br /&gt;
=== Отключение ===&lt;br /&gt;
# Отключить диск&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
sudo umount /mnt/boot # если был примонтирован&lt;br /&gt;
sudo umount /mnt&lt;br /&gt;
sudo vgchange -a n vg00&lt;br /&gt;
sudo qemu-nbd -d /dev/nbd1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# Включить виртуальную машину&lt;br /&gt;
# Выгрузить модуль ядра nbd, если в нем больше нет необходимости&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
modprobe -r nbd&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Монтирование виртуальной флешки в Continent на PNetLab ==&lt;br /&gt;
&lt;br /&gt;
=== Предусловия: ===&lt;br /&gt;
# Установлен пакет qemu-utils&lt;br /&gt;
&lt;br /&gt;
=== Создание виртуальной флешки ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
sudo modprobe nbd max_part=8&lt;br /&gt;
#или insmod /lib/modules/$(uname -r)/kernel/drivers/block/nbd.ko max_part=8&lt;br /&gt;
qemu-img create -f raw myflash.img 512M&lt;br /&gt;
sudo qemu-nbd -c /dev/nbd2 -f raw ./myflash.img&lt;br /&gt;
fdisk /dev/nbd2&lt;br /&gt;
# ввести n&lt;br /&gt;
# соглашаться со всеми значениями по-умолчанию&lt;br /&gt;
# ввести w&lt;br /&gt;
sudo mkfs -t vfat /dev/nbd2p1&lt;br /&gt;
&lt;br /&gt;
sudo qemu-nbd -d /dev/nbd2&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Подключение флешки в виртуальную машину с Continent ===&lt;br /&gt;
&#039;&#039;&#039;ВАЖНО: Следующий действия могут сломать виртуальную машину с Continent (см. инструкцию &amp;quot;Фиксация MAC адресов в PNetLab&amp;quot;)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
# ВАЖНО: Убедиться, что флешка не подключена к другой виртуальной машине или хосту!&lt;br /&gt;
# В настройки виртуальной машины PNetLab в поле Qemu Options добавить:&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
-drive if=none,id=stick,format=raw,file=&amp;lt;ПУТЬ К ФАЙЛУ С ВИРТУАЛЬНОЙ ФЛЕШКОЙ&amp;gt; -device nec-usb-xhci,id=xhci -device usb-storage,bus=xhci.0,drive=stick&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;[[Файл:PNetLab settings.png|слева]]&lt;br /&gt;
# Перезагрузить Continent&lt;br /&gt;
&lt;br /&gt;
== Получение root доступа к Continent 4 на виртуальной машине ==&lt;br /&gt;
&lt;br /&gt;
# Отключить виртуальную машину с Continent&lt;br /&gt;
# Примонтировать виртуальный диск к хостовой машине (см. Монтирование виртуального диска в хостовую ОС)&lt;br /&gt;
# Заменить файл /mnt/boot/integrity на программу, которая всегда безусловно возвращает 0.&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
int main(int argc, char **argv) {&lt;br /&gt;
   return 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;[[Медиа:Integrity.txt]]  (файл сохранить под именем integrity и дать права на запуск командой chmod +x integrity)&lt;br /&gt;
# В файл настроек ограниченной консоли /etc/clish/misc.xml добавить bash. Для примера можно скопировать раздел настроек для команды uptime и заменить uptime на bash. В атрибут help написать Back door. &lt;br /&gt;
# Включить виртуальную машину с Continent. Через локальное меню Continent запустить ограниченную консоль (Инструменты - Диагностика - Командная строка) и выполнить команду bash. Получаем полный доступ к Linux под root.&lt;/div&gt;</summary>
		<author><name>Entcor</name></author>
	</entry>
	<entry>
		<id>https://wiki.entcor.ru/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:First_MAC.png&amp;diff=217</id>
		<title>Файл:First MAC.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.entcor.ru/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:First_MAC.png&amp;diff=217"/>
		<updated>2024-05-16T03:54:14Z</updated>

		<summary type="html">&lt;p&gt;Entcor: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;-&lt;/div&gt;</summary>
		<author><name>Entcor</name></author>
	</entry>
	<entry>
		<id>https://wiki.entcor.ru/index.php?title=%D0%98%D0%BD%D1%81%D1%82%D1%80%D1%83%D0%BA%D1%86%D0%B8%D0%B8_%D0%BF%D0%BE_Continent&amp;diff=216</id>
		<title>Инструкции по Continent</title>
		<link rel="alternate" type="text/html" href="https://wiki.entcor.ru/index.php?title=%D0%98%D0%BD%D1%81%D1%82%D1%80%D1%83%D0%BA%D1%86%D0%B8%D0%B8_%D0%BF%D0%BE_Continent&amp;diff=216"/>
		<updated>2024-05-15T08:01:12Z</updated>

		<summary type="html">&lt;p&gt;Entcor: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Общее ==&lt;br /&gt;
Инструкции для [[Continent]]&lt;br /&gt;
&lt;br /&gt;
== Монтирование виртуального диска в хостовую ОС ==&lt;br /&gt;
&lt;br /&gt;
=== Предусловия: ===&lt;br /&gt;
# Установлены пакеты qemu-utils и lvm2&lt;br /&gt;
&lt;br /&gt;
=== Монтирование: ===&lt;br /&gt;
# Загрузить модуль ядра nbd&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo modprobe nbd max_part=8&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;В виртульной машине PNetLab эта команда может вызывать ошибку. Тогда необходимо загрузить модуль командой:&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
insmod /lib/modules/$(uname -r)/kernel/drivers/block/nbd.ko max_part=8&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# Отключить виртуальную машину  &#039;&#039;&#039;(ВАЖНО: виртульную машину можно будет включить только после отключения диска из хостовой ОС!)&#039;&#039;&#039;&lt;br /&gt;
# Подключить виртуальный диск&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
sudo qemu-nbd -c /dev/nbd1 &amp;lt;путь к виртуальному диску vdi или qcow2&amp;gt;&lt;br /&gt;
sudo mount /dev/mapper/vg00-lv_root /mnt&lt;br /&gt;
sudo mount /dev/nbd1p1 /mnt/boot # при необходимости доступа к boot разделу&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Команда lsblk показывает подключенные диски.&lt;br /&gt;
&lt;br /&gt;
=== Отключение ===&lt;br /&gt;
# Отключить диск&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
sudo umount /mnt/boot # если был примонтирован&lt;br /&gt;
sudo umount /mnt&lt;br /&gt;
sudo vgchange -a n vg00&lt;br /&gt;
sudo qemu-nbd -d /dev/nbd1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# Включить виртуальную машину&lt;br /&gt;
# Выгрузить модуль ядра nbd, если в нем больше нет необходимости&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
modprobe -r nbd&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Монтирование виртуальной флешки в Continent на PNetLab ==&lt;br /&gt;
&lt;br /&gt;
=== Предусловия: ===&lt;br /&gt;
# Установлен пакет qemu-utils&lt;br /&gt;
&lt;br /&gt;
=== Создание виртуальной флешки ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
sudo modprobe nbd max_part=8&lt;br /&gt;
#или insmod /lib/modules/$(uname -r)/kernel/drivers/block/nbd.ko max_part=8&lt;br /&gt;
qemu-img create -f raw myflash.img 512M&lt;br /&gt;
sudo qemu-nbd -c /dev/nbd2 -f raw ./myflash.img&lt;br /&gt;
fdisk /dev/nbd2&lt;br /&gt;
# ввести n&lt;br /&gt;
# соглашаться со всеми значениями по-умолчанию&lt;br /&gt;
# ввести w&lt;br /&gt;
sudo mkfs -t vfat /dev/nbd2p1&lt;br /&gt;
&lt;br /&gt;
sudo qemu-nbd -d /dev/nbd2&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Подключение флешки в виртуальную машину с Continent ===&lt;br /&gt;
&#039;&#039;&#039;ВАЖНО: Подключение флешки, как и другие манипуляции с настройками машин PNetLab и их связями, заново генерируют MAC адреса для сетевых карт. Это приводит к изменению названий сетевых интерфейсов и ломает настройки сети в Continent. Что бы это избежать, необходимо заполнить поле First MAC в настройках виртуальной машины (см. инструкцию &amp;quot;Фиксация MAC адресов в PNetLab&amp;quot;)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
# ВАЖНО: Убедиться, что флешка не подключена к другой виртуальной машине или хосту!&lt;br /&gt;
# В настройки виртуальной машины PNetLab в поле Qemu Options добавить:&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
-drive if=none,id=stick,format=raw,file=&amp;lt;ПУТЬ К ФАЙЛУ С ВИРТУАЛЬНОЙ ФЛЕШКОЙ&amp;gt; -device nec-usb-xhci,id=xhci -device usb-storage,bus=xhci.0,drive=stick&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;[[Файл:PNetLab settings.png|слева]]&lt;br /&gt;
# Перезагрузить Continent&lt;br /&gt;
&lt;br /&gt;
== Получение root доступа к Continent 4 на виртуальной машине ==&lt;br /&gt;
&lt;br /&gt;
# Отключить виртуальную машину с Continent&lt;br /&gt;
# Примонтировать виртуальный диск к хостовой машине (см. Монтирование виртуального диска в хостовую ОС)&lt;br /&gt;
# Заменить файл /mnt/boot/integrity на программу, которая всегда безусловно возвращает 0.&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
int main(int argc, char **argv) {&lt;br /&gt;
   return 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;[[Медиа:Integrity.txt]]  (файл сохранить под именем integrity и дать права на запуск командой chmod +x integrity)&lt;br /&gt;
# В файл настроек ограниченной консоли /etc/clish/misc.xml добавить bash. Для примера можно скопировать раздел настроек для команды uptime и заменить uptime на bash. В атрибут help написать Back door. &lt;br /&gt;
# Включить виртуальную машину с Continent. Через локальное меню Continent запустить ограниченную консоль (Инструменты - Диагностика - Командная строка) и выполнить команду bash. Получаем полный доступ к Linux под root.&lt;/div&gt;</summary>
		<author><name>Entcor</name></author>
	</entry>
</feed>