<?xml version="1.0"?>
<rss version="2.0"><channel><title>&#x41F;&#x440;&#x43E;&#x433;&#x440;&#x430;&#x43C;&#x43C;&#x43D;&#x43E;&#x435; &#x43E;&#x431;&#x435;&#x441;&#x43F;&#x435;&#x447;&#x435;&#x43D;&#x438;&#x435;, &#x431;&#x438;&#x43B;&#x43B;&#x438;&#x43D;&#x433; &#x438; *unix &#x441;&#x438;&#x441;&#x442;&#x435;&#x43C;&#x44B; Latest Topics</title><link>https://forum.nag.ru/index.php?/forum/4-programmnoe-obespechenie-billing-i-unix-sistemy/</link><description>&#x41F;&#x440;&#x43E;&#x433;&#x440;&#x430;&#x43C;&#x43C;&#x43D;&#x43E;&#x435; &#x43E;&#x431;&#x435;&#x441;&#x43F;&#x435;&#x447;&#x435;&#x43D;&#x438;&#x435;, &#x431;&#x438;&#x43B;&#x43B;&#x438;&#x43D;&#x433; &#x438; *unix &#x441;&#x438;&#x441;&#x442;&#x435;&#x43C;&#x44B; Latest Topics</description><language>en</language><item><title>Carbon billing 5, &#x43E;&#x431;&#x441;&#x443;&#x436;&#x434;&#x435;&#x43D;&#x438;&#x435;</title><link>https://forum.nag.ru/index.php?/topic/123785-carbon-billing-5-obsuzhdenie/</link><description><![CDATA[<p>Тему завел product manager биллинга, можем с Вами обсудить вопросы, проблемы.</p>]]></description><guid isPermaLink="false">123785</guid><pubDate>Fri, 18 Nov 2016 12:41:18 +0000</pubDate></item><item><title>&#x421;&#x443;&#x449;&#x435;&#x441;&#x442;&#x432;&#x443;&#x435;&#x442; &#x43F;&#x440;&#x438;&#x43B;&#x43E;&#x436;&#x435;&#x43D;&#x438;&#x435; &#x434;&#x43B;&#x44F; &#x430;&#x43D;&#x434;&#x440;&#x43E;&#x438;&#x434;&#x430; &#x434;&#x43B;&#x44F; &#x443;&#x432;&#x435;&#x434;&#x43E;&#x43C;&#x43B;&#x435;&#x43D;&#x438;&#x44F; &#x430;&#x43B;&#x435;&#x440;&#x442;&#x43E;&#x432; &#x441; zabbix &#x432;&#x43C;&#x435;&#x441;&#x442;&#x43E; &#x442;&#x435;&#x43B;&#x435;&#x433;&#x440;&#x430;&#x43C;&#x43C;?</title><link>https://forum.nag.ru/index.php?/topic/211957-suschestvuet-prilozhenie-dlya-androida-dlya-uvedomleniya-alertov-s-zabbix-vmesto-telegramm/</link><description><![CDATA[<p>
	кто что пользует? 
</p>

<p>
	 
</p>

<p>
	или ставит на телефон почтового клиента и делать отдельный zabbix-alert ящик сотруднику?
</p>
]]></description><guid isPermaLink="false">211957</guid><pubDate>Wed, 25 Feb 2026 12:52:55 +0000</pubDate></item><item><title>ANAT (Advanced asymmetric CG NAT) xt_ANAT module &#x44F;&#x434;&#x440;&#x430; &#x434;&#x43B;&#x44F; Linux</title><link>https://forum.nag.ru/index.php?/topic/195398-anat-advanced-asymmetric-cg-nat-xt_anat-module-yadra-dlya-linux/</link><description><![CDATA[<p>
	=============================================================================
</p>

<p>
	<strong>ВНИМАНИЕ</strong>!
</p>

<p>
	Ввиду обнаружения мною выложенных кем-то исходников ANAT на других ресурсах от моего имени, я  хотел-бы всех предупредить:
</p>

<p>
	<strong>я не размещал где либо (в т.ч. на гитхабе) исходные коды ANAT кроме моих ссылок на этом форуме. </strong>
</p>

<p>
	<strong>Скачивая исходники из других источников вы можете получить не то, на что рассчитываете, в т.ч. "закладки".</strong>
</p>

<p>
	=============================================================================
</p>

<p>
	Чем ANAT лучше простого NAT:
</p>

<p>
	<a href="https://forum.nag.ru/index.php?/topic/195398-anat-advanced-asymmetric-cg-nat-xt_anat-module-yadra-dlya-linux/#comment-1754088" rel="">https://forum.nag.ru/index.php?/topic/195398-anat-advanced-asymmetric-cg-nat-xt_anat-module-yadra-dlya-linux/#comment-1754088</a>
</p>

<p>
	---------------------------------------------------------------------------------------------------------------
</p>

<p>
	Всем привет.
</p>

<p>
	Я решил создать отдельную  тему в которой дальше предлагаю обсуждать ANAT.
</p>

<p>
	 
</p>

<p>
	Уважаемые друзья, это версия ANAT на данном этапе публикуется as is ввиду занятости автора, со всеми авторскими комментариями. На данный момент релиз работает без сбоев около 6 месяцев, на последних ядрах 4.х.<br />
	Вы можете ее использовать исключительно в некоммерческих целях.<br />
	Желающие отблагодарить автора или использовать код для коммерческих целей могут обратиться в личку или на почту в проекте
</p>

<p>
	Ваш автор, Сербулов Дмитрий (aka SDY).
</p>

<p>
	 
</p>

<p>
	=============================================================================
</p>

<p>
	axt_NAT_v0_09_public_01:
</p>

<p>
	<a href="https://disk.yandex.ru/d/sZuEr1LopHlVpQ" rel="external nofollow">https://disk.yandex.ru/d/sZuEr1LopHlVpQ</a>
</p>

<p>
	 
</p>

<p>
	Документация:
</p>

<div class="ipsSpoiler" data-ipsspoiler="">
	<div class="ipsSpoiler_header">
		<span>Скрытый текст</span>
	</div>

	<div class="ipsSpoiler_contents">
		<p>
			=============================================================================<br />
			===== xt_ANAT - Advanced NAT - CG_NAT xt_tables linux kenel module- (c) Serbulov Dmitry Y. 2024 ====
		</p>

		<p>
			xt_ANAT - Advanced CG NAT linux kenel  module.<br />
			xt_ANAT - это модуль ядра встраиваемый в стандартный файрфол linux обеспечивающий работу IPv4 CG-NAT с расширенным функционалом и NETFLOW v9.
		</p>

		<p>
			xt_ANAT является полностью переработанной автором заменой известного модуля xt_NAT. Основные цели разработки - повышение стабильности модуля за счет изменения<br />
			части архитектуры модуля, адаптация для работы на современных процессорах intel, ускорение работы NAT. Предоставление администраторам возможности  гибкого<br />
			управления настройками NAT 'на лету' (без перезагрузки модуля). Добавление инструментов для мониторинга и борьбы с DDOS и спамом со стороны пользователей<br />
			из локальной сети.
		</p>

		<p>
			=============================<br />
			===== xt_ANAT и CG NAT ======
		</p>

		<p>
			xt_ANAT соответствует стандартам CG NAT в протоколах TCP, UDP и ICMP, с некоторыми исключениями:<br />
			- не поддерживается груповое выделение портов (опыт показал, что для современных приложений это не актуально и лишь ведет к расходу ресурса портов)<br />
			- при смене настроек пулов адресов, пользователь может оказаться за разными NAT адресами. В случае необходимости, следует сбросить старые сессии пользователя.<br />
			- другие протоколы (далее other) (не TCP, UDP и ICMP) работают в режиме близком к работе conntrack (но с jhash сжатием 32бит диапазона адресов в 16бит).<br />
			  Данное решение позволяет нескольким пользователям за одним NAT адресом использовать одновременно такие протоколы как PPTP и прочие протоколы стэка IPv4.<br />
			  Планируется доработка xt_ANAT для работы в режиме полного conntrack без jhash сжатия.<br />
			  (сроки доработки - новая версия или жалобы пользователей на невозможность использовать IP протоколы или тунели)<br />
			 <br />
			=====================================<br />
			===== xt_ANAT общий функционал ======  
		</p>

		<p>
			xt_ANAT поддерживает следующие функции<br />
			- множество соответвий пулов пользователей пулам NAT адресов (всего до 100 пулов, возможно расширение при необходимости) - (см. ==CONFIG==)<br />
			- поддержка пулов NAT адресов 'по умолчанию'<br />
			- выбор используемого пула при создании сессии в зависмотси от маркировки пакета правилами файрвола iptables -m --mark (-j MARK --set-mark xxx)<br />
			- выбор способа подбора NAT адреса: линейный или hash 'случайный'<br />
			- настройка исключения из диапазона выдаваемых адресов х.х.х.0 и х.х.х.256<br />
			- изменение настроек пулов адресов и множества праметров модуля 'на лету' (см. ==CONFIG== и ==PARAMS==)<br />
			- регистрация и просмотр ошибок и событий ограничения по числу сессий в кольцевом буфере  (см. ==MESSAGES==)<br />
			- ТЕСТОВЫЙ IP - позволяет администартору проверить работу сети с любого адреса NAT одной командой (см. ==CMD_TEST_IP_SET==)<br />
			- разделение пользователей на группы 'user groups' (далее UG) до 64 группы в т.ч. с помощью маркировки пакета правилом файрвола --mark<br />
			- настройка ограничений по максимальному числу сессий и выдачи сообщений администарторам по UG и по дефолту 'на лету' (см. ==CMD_USGR_SET_XXX==)<br />
			- приостановка/блокировка пользователя для создания им новых NAT сессий  (см. ==CMD_NAT_XXX==)<br />
			- сброс (отключение) сессий пользователей по адресу, порту пользователя, NAT, UG и другим критериям (см. ==CMD_KILL_XXX==)<br />
			- трассировка пакетов(регистарция и просмотр сведений проходящих через xt_ANAT пакетов в кольцевом буфере) (см. ==CMD_TRACE_XXX==)<br />
			- отправка информации о сессиях по протоколу NetFlow v.9 (далее NF9) при высоконагруженном трафике одновременно до 10 получателям (см. ==NET_FLOW==)<br />
			- поддержка в NF9 фукнции KeepAlive и StartTime для длительных сессий или для холодного старта сбора сведений по NF9 без сброса сессий пользователей<br />
			- сбор счетчиков статистики для своевременного предупреждения возможных проблем с производительностью и внешнего мониторинга (см. ==STATISTICS==)<br />
			- поддержка static sessions (STATIC_MAP) (static port mapping) (см. ==CMD_STATIC_MAP_XXX==)
		</p>

		<p>
			===============================================================================<br />
			===== ==CONFIG== xt_ANAT настройка конфигурации и отправка команд модулю ======
		</p>

		<p>
			В момент старта, модуль создает в каталоге /proc/net/ANAT/ множество 'файлов' большая часть из которых прдназначена для получения различной информации<br />
			о работе и настроках модуля. Полный список доступных ресурсов можно узнать набрав в консоле<br />
			$&gt; ls /proc/net/ANAT/<br />
			Среди этих файлов есть файл 'config' который доступен не только для чтения, но и для записи. С помощью отправки в него данных происходит настройка работы модуля.
		</p>

		<p>
			!!! ВАЖНО! Вы можете менять большинство настроек модуля и конфигурацию NAT 'на лету' без остановки работы модуля и сброса сессий пользователей, но<br />
			при этом следует учитывать некторые технические моменты, которые подробнее описны в разделе ==HOW_IT_WORK==
		</p>

		<p>
			Для отправки одновременно большого числа комманд или загрузки настроек конфигурации при старте или во время работы наберите в консоле:<br />
			$&gt;cat /etc/anat.conf &gt; /proc/net/ANAT/config<br />
			  /etc/anat.conf - можно заменить на произвольный доступный файл в котором содержаться настройки или команды для их выполнения модулем.<br />
			 Обычно, в rc.local сразу после загрузки модуля  в 'config' загружаются настройки пулов и получателей NF9, а также начальные команды управления модулем.
		</p>

		<p>
			Для отправки единичных команд наберите в консоле:<br />
			$&gt;echo [CMD_XXX XXXX] &gt;&gt; /proc/net/ANAT/config<br />
			  где [CMD_XXX XXXX] - команда которую необходимо выполнить и ее атрибуты, перечень и формат доступных команд (см. ==CMD==).<br />
			 <br />
			В случае успешной загрузки конфигурации или успешного исполнения команды, в консоле ничего не произойдет, в случае ошибки в консоль будет выведено<br />
			сообщение об ошибке. Причину ошибки можно узнать просмотрев debug лог сообщений ядра для чего наберите в консоле:<br />
			$&gt;dmesg
		</p>

		<p>
			Так-же в debug лог выводятся сообщения о критических ошибках в работе модуля, некоторая отладочная информация, инофрмация о ходе выполнения некоторых команд и<br />
			загрузке настроек. ВНИМАНИЕ! Информация о событиях связанных с работай NAT выводится в кольцевой буфер (см. ==MESSAGES==).
		</p>

		<p>
			---<br />
			Файл конфигурации и команды имеют следующий формат и особенности.<br />
			1. Файл конфигурации обрабатывается построчно.<br />
			2. В файле конфигурации допускаются пустые строки.<br />
			3. В Файле конфигурации можно использовать комменатрии в отдельных строках. Коментарии начинаются с '#' и заканчиваются концом строки.<br />
			4. Максимальная длина строки 127 символов, включая пробелы и табуляции в конце строк!<br />
			5. ВСЕ комманды и названия начала и концов секций (см.ниже) заключаются в квадратные скобки '[' ']'.<br />
			6. Между '[' и началом команды или названием секций НЕ ДОПУСКАЕТСЯ пробелов!<br />
			7. Между ']' и концом некторых команд или названиями секций НЕ ДОПУСКАЕТСЯ пробелов! Избегайте лишних пробелов возле скобок!<br />
			8. Перед '[' не допускается каких либо символов кроме пробелов или табуляции.<br />
			9. После ']' не допускается каких либо символов кроме пробелов или табуляции.<br />
			10. Внутри секций конфигурации формат строк должен строго соблюдаться в зависимости от типа секции.<br />
			11. Допускается использовать внутри секций комментарии, если иное прямо не указано в документации.<br />
			12. В одной строке должна быть только: или 1 команада, или 1 название начала или конца секции, или 1 строка формата настроек секции.<br />
			13. Регистр букв в коммандах, названиях секций и параметрах имеет значение, и должен строго соблюдаться!<br />
			14. При описании формата команд или строк секций следует учитывать следующие сокращения и правила.<br />
			14.1. Лексемы включенные в квадратные скобки - не обязательны (не путайте их со скобками обрамляющими команды и названия секций).<br />
			14.2. Лексемы включенные в фигурные скобки - допустим один из вариантов.<br />
			14.3. Лексемы разделенные '|' - используется один из вариантов.<br />
			14.4. Если между лексемами есть пробел в форматной строке, значит в этом месте допустимо использовать пробелы.<br />
			14.5. Если между лексемами нет пробела в форматной строке, значит в этом месте недопустимо использовать пробелы.<br />
			14.6. Принятые стандартные лексемы, сокращения и понятия<br />
			14.6.1. ^&lt;T&gt;  - 'trace char' (символ трассировки, буква английского алфавита в верхнем регистре или '@') - примеры: "^T", "^@"<br />
			14.6.2. +&lt;UG&gt; - 'user group' (номер группы пользователей от 00 до 63, обязательно 2 цифры!)  - пример: "+00", "+01", "+63"  <br />
			14.6.3. с&lt;nnn&gt; - числовое значение сразу после бувы или символа  - пример: "s0", "t1011", "d63"<br />
			14.6.4. *L(inear) - лексема '*L' - текст в скобках для пояснения назначения - пример: "*L", "*H"<br />
			14.6.5. &amp;&lt;E&gt;, !&lt;mark&gt; - лексема начинающаяся с символа (в данном случае '&amp;' или '!' и некоторым значением за ним - пример: "&amp;3", "!0xFFF0"<br />
			14.6.6. : &lt;value&gt; - лексема начинающаяся с символа (в данном случае ':') между которым и ней допустим пробел - пример: ": 443", ": 10.0.0.1"<br />
			14.6.7. &lt;value1&gt;  &lt;value2&gt; - лексемы разделенные пробелами - пример:  "10.0.0.1 70.0.0.1"<br />
			14.6.8. &lt;value1&gt; - &lt;value2&gt; - лексемы разделенная символом ('-') пробелы не обязательны - пример:  "10.0.0.1-10.0.0.4"<br />
			14.6.9. как правило все числовые значения указываются в десятичных числах, исключение - лексема !&lt;mark&gt;, где допускается использовать hex числа с префиксом '0х'<br />
			14.7. !!! ВНИМАНИЕ !!! Использовать лексемы можно только СТРОГО в том порядке, в котором они указаны в форматной строке!<br />
			 <br />
			---<br />
			В этом раделе описаны секции и команды связанные с настройкой пулов адресов и пулов получателей NF9. Полное описание доступных команд можно найти далее<br />
			в разделе (см. ==CMD==).
		</p>

		<p>
			Настройку пулов разберем на примере следующего файла конфигурации (test_config.conf):<br />
			 <br />
			#config sections settings<br />
			[LOAD_TMP_CONFIG_V2_0]<br />
			#IP pool config<br />
			[CFG_NATPOLL_V2_0]<br />
			# line format:<br />
			#[ [^&lt;T&gt;] [+&lt;UG&gt;] [&amp;&lt;E&gt;] [*L(inear)|*H(ash)] [!&lt;mark&gt;] : ] [ &lt;usr_ip_start&gt; - &lt;usr_ip_end&gt; :] &lt;nat_ip_start&gt; - &lt;nat_ip_end&gt;<br />
			# ^ - trace_code for trace packets to msg: &lt;T&gt;-one char from 'A' to 'Z', default = '@'<br />
			# + - user_group &lt;UG&gt;='00'..'63': (must be 2 digits, use '01' not '1'), deafult = '00'<br />
			# &amp; - nat_use &lt;E&gt;-one digit: '0'- use all NAT ip , '1'- exclude x.0 (move to x.1), '2'- exclude x.255 (move to x.254),<br />
			#      '3'- both (1) and (2)), default = '0'<br />
			# * - nat_hash ip method : 'L' - linear, 'H' - jhash, default is: 'H'- for defaults user pool 'L'- for all other pools<br />
			# ! - mark (take rule only for &lt;mark&gt; marked trafic<br />
			#     (if !0 - it the rule is ONLY for non marked trafic, if no !&lt;mark&gt; - rule is for ALL trafic), default - no
		</p>

		<p>
			^S +01 &amp;3 *L !0x01 :  192.168.0.0 - 192.168.10.055 : 67.100.100.20 - 67.103.102.30 #SPAM<br />
			 *H !10 : 10.0.0.123 - 10.0.0.255  :  67.100.100.10 -  67.100.101.20<br />
			^T*H!0xFFFF:10.0.0.0-10.0.0.255:70.100.100.66-70.100.100.68<br />
			172.0.0.0   - 172.0.0.255     : 70.100.100.69 - 70.100.100.82<br />
			80.100.100.65 - 80.100.100.65<br />
			[CFG_NATPOLL_END]
		</p>

		<p>
			#netflow9 desination config<br />
			[CFG_NF9DEST_V2_0]<br />
			# dest_ip : dest_port<br />
			 10.0.0.20 : 2055 #SORM<br />
			 10.0.0.21 : 2056<br />
			 10.20.2.19: 2055<br />
			[CFG_NF9DEST_END]<br />
			[LOAD_TMP_CONFIG_END]
		</p>

		<p>
			# make config working (if loaded no error)<br />
			[CMD_CONFIG_TMPTOINA]<br />
			[CMD_CONFIG_SWAP]
		</p>

		<p>
			Обратите внимание:<br />
			1. Списки пулов адесов и получателей NF9 находятся внутри специальной секции файла конфигурации [LOAD_TMP_CONFIG_V2_0] - [LOAD_TMP_CONFIG_END]<br />
			2. Настройки пулов адесов находятся внутри специальной секции [CFG_NATPOLL_V2_0] - [CFG_NATPOLL_END]<br />
			3. Настройки пула получателей NF9 находятся внутри специальной секции [CFG_NF9DEST_V2_0] - [CFG_NF9DEST_END]<br />
			!!! Строго соблюдайте названия и формат начала и конца секций, в них не допускаются пробелы или нижний регистр букв !!!
		</p>

		<p>
			Для каждой строки пула адресов можно указать:<br />
			в заголовке<br />
			  ^&lt;T&gt;  - 'trace char'  используется для фильтрации сессий и пакетов в командах трассировки и работы с сессиями (атрибут сессии).<br />
			  +&lt;UG&gt; - 'user group' используется для фильтрации сессий и пакетов в командах трассировки, работы с сессиями, установки лимитов (атрибут сессии и пользователя).<br />
			  &amp;&lt;E&gt;  - настройка запрета выдачи из пула NAT адресов, заканчивающихся на x.0 или x.255 (атрибут строки пула).<br />
			        &lt;E&gt; = '0'- не исключать, '1'- исключить x.0 (будет выдан адрес x.1), '2'- исключить x.255 (будет выдан адрес x.254), '3'- исключать x.0 и x.255<br />
			  *L|*H - способ подбора NAT адреса из пула (атрибут строки пула).<br />
			        *L - линейный (диапазон user IP сжимается линейно) - рекомендуется для плотно используемых диапазонов с прогнозируемой нагрузкой на NAT адрес<br />
			        *H - по хэшу (NAT адрес выдается псевдослучайно)   - рекомендуется для разряженных user IP диапазонов или default пулов (см. далее)<br />
			  !&lt;mark&gt; - фильтр использования строки пула по --mark пакета, можно указывать как десятичное число, так и hex (с префиксом '0x') (атрибут строки пула).<br />
			        если указано - (в т.ч. 0!) то строка пула будет применяться только к пакетам с (iptables -m --mark) равным  (&lt;mark&gt;) (= 0 - только к не маркированным)<br />
			        если не указано -  то строка пула будет применяться ко всем пакетам назависимо от значения --mark в пакете<br />
			  &lt;usr_ip_start&gt; - &lt;usr_ip_end&gt; - пул пользовательских (локальных) адресов, для которых применяется данное правило (атрибут строки пула)<br />
			        если не указан, то  данная строка является deafult пулом (отображается и применяется как диапазон 0.0.0.0 - 255.255.255.255)<br />
			  &lt;nat_ip_start&gt; - &lt;nat_ip_end&gt; - пул NAT адресов, в которые производится трансляция локальных адресов по этой строке пула (обязательный атрибут строки пула!)
		</p>

		<p>
			!!! Обратите внимание на наличие ':' между заголовком настроек и пулом адресов пользователя, а также между пулом адресов пользователя и пулом NAT !!!<br />
			Более подробное описание параметров и их использование можно найти в разделах документации ==HOW_IT_WORK== и ==METODICS==
		</p>

		<p>
			Для каждой строки пула получателей NF9 необходимо указать:<br />
			  dest_ip   - IPv4 адрес сервера на который будут отправляться пакеты NF9<br />
			  dest_port - UDP порт на который сервер ожидает получать пакеты NF9
		</p>

		<p>
			Обратите внимание:<br />
			Если внутри секции  [LOAD_TMP_CONFIG_V2_0]-[LOAD_TMP_CONFIG_END] нет секции [CFG_NATPOLL_V2_0]-[CFG_NATPOLL_END], то настройки пулов адресов будут скопированы<br />
			из текущей активной конфигурации.<br />
			Если внутри секции  [LOAD_TMP_CONFIG_V2_0]-[LOAD_TMP_CONFIG_END] нет секции [CFG_NF9DEST_V2_0]-[CFG_NF9DEST_END], то настройки списка получателей NF9 будут<br />
			скопированы из текущей активной конфигурации.
		</p>

		<p>
			-----<br />
			Следует обратить внимание, что файл примера test_config.conf, заканчивается двумя командами:<br />
			  [CMD_CONFIG_TMPTOINA]<br />
			  [CMD_CONFIG_SWAP]<br />
			Это связано со способом сохранения и загрузки конфигурации в модуле xt_ANAT.
		</p>

		<p>
			Фактически в модуле есть 3 конфигурации:<br />
			  ACTIVE   - Активная конфигурация, это та конфигурация, которая используется модулем сейчас.<br />
			  INACTIVE - Не активная конфигурация, может быть поменена местами с активной (стать активной) с помощью комманды [CMD_CONFIG_SWAP]<br />
			  TMP      - Временная конфигурация, может быть скопирована в неактивную по истечении 3 сек после команды [CMD_CONFIG_SWAP] командой [CMD_CONFIG_TMPTOINA]
		</p>

		<p>
			При загрузке конфигурации она сперва ВСЕГДА загружается в TMP конфигурацию. Поэтому, для активации конфигурации необходимо сперва загрузить конфигурационный файл,<br />
			затем скопировать TMP конфигурацию в INACTIVE командой [CMD_CONFIG_TMPTOINA] и только после этого активировать новую конфигурацию командой [CMD_CONFIG_SWAP].<br />
			!!! Внимание!! Команда [CMD_CONFIG_TMPTOINA] не применится и выдаст ошибку, если при загрузке TMP конфигурации были ошибки !!!<br />
			Это позволяет избежать остановки работы модуля при ошибках в конфигурационном файле настроек.<br />
			Вы также можете всегда вернутся к предыдущей INACTIVE конфигурации командой [CMD_CONFIG_SWAP].
		</p>

		<p>
			Просмотреть текущие конфигурации можно набрав в консоле:<br />
			$&gt;cat /proc/net/ANAT/config
		</p>

		<p>
			==========================================================<br />
			===== ==PARAMS== xt_ANAT настройка праметров модуля ======
		</p>

		<p>
			Помимо настроек пулов, в xt_ANAT можно изменить и ряд других параметров.<br />
			Просмотреть список доступных параметров можно набрав в консоле:<br />
			$&gt;cat /proc/net/ANAT/params
		</p>

		<p>
			Есть 4 параметра которые можно изменить ТОЛЬКО при загрузке модуля, указав их значения в командной строке, это размеры хэш таблиц и разбер кольцевого буфера NF9.<br />
			Признаки нобходимости корректировки этих параметров можно понять по данным счетчиков статистики (см. ==STATISTICS==) и сообщениям модуля (см. ==MESSAGES==).
		</p>

		<p>
			Пример команды загрузки модуля с измененными парметрами:<br />
			  modprobe xt_ANAT inout_htsz=65536 user_htsz=1024 nat_htsz=512 nfrb_sz2=16<br />
			Оcтальные параметры могут быть именены 'на лету'.
		</p>

		<p>
			Также при загрузке модуля можно задать минимальную начальную конфигурацию пулов (по аналогии с xt_NAT) - 1 строку пула адресов и 1 адрес получателя NF9:<br />
			  modprobe xt_ANAT nat_pool=10.0.0.0-10.0.0.100:77.0.0.1-77.0.0.2 nf_dest=10.2.0.1:2055
		</p>

		<p>
			Обратите внимание на 2 параметра:<br />
			NAT_LOCFRWD_POL: = 0-DROP 1-ACCEPT  - определяет что делать с входящим внешним трафиком если не найдено подходящей сессии:<br />
			                    ( 0-DROP - трафик будет отброшен, 1 - ACCEPT трафик будет перенаправлен в локльный интерфейс связанный с NAT адресом ).<br />
			                    Политика по умолчанию - DROP, что может вызвать определенные проблемы, если NAT адреса используются на самом сервере.<br />
			                    ОДНАКО, СТОИТ ОБРАТИТЬ ВНИМАНИЕ, ЧТО ТАКОЙ ПРАКТИКИ СЛЕДУЕТ ИЗБЕГАТЬ! Т.К. xt_ANAT выдает порты НЕЗАВИСИМО от их использования самим сервером!<br />
			WTM_TMZN_MNT:    = часовой пояс для выдачи информации в сообщениях о времени событий, данная настройка используется только для удобства администраторов<br />
			            <br />
			Назначение и использование других параметров описано в соответвующих частях документации.
		</p>

		<p>
			=====================================================================================<br />
			===== ==MESSAGES== xt_ANAT хранение и просмотр сообщений о событиях и ошибках  ======
		</p>

		<p>
			Для увеличения производительности в xt_ANAT логи событий связанные с функциями NAT сохраняются в кольцевом буфрере сообoений 'msg'.
		</p>

		<p>
			Просмотреть текущие события можно набрав в консоле:<br />
			$&gt;cat /proc/net/ANAT/msga<br />
			$&gt;cat /proc/net/ANAT/msgp
		</p>

		<p>
			msga - выводит все сообщения в active (активном) буфере, однако в силу технологических особенностей, этот вывод производится в 'обратном порядке',<br />
			т.е. свежие сообщения оказываются в консоли сверху, что не очень удобно для оперативной работы администратора.
		</p>

		<p>
			msgp - выводит только (part) часть сообщений из буфера, но этот вывод производится в 'обычном порядке' т.е. свежие сообщения оказываются внизу консоли, что<br />
			гораздо удобнее для оперативной работы администратора.
		</p>

		<p>
			Количество сообщений выводимых msgp можно изменить с помощью изменения параметра модуля MSG_MSRB_PART. Вот пример команды в консоле:<br />
			 $&gt;echo [CMD_SET_PRM_N MSG_MSRB_PART = 100] &gt;&gt; /proc/net/ANAT/config<br />
			!!Внимание!! Во избежании проблем с выводом msgp не рекомендуется устанавливать MSG_MSRB_PART более 1/2 размера буфера.
		</p>

		<p>
			Для уменьшения 'лишнего' потока сообщений, повторяющиеся сообщения регистрируются путем увеличения счетчика событий в интервале одной минуты (число в квадратных<br />
			скобках после времени события в логе сообщений). Однако, следует учесть, что при большом числе событий по разным пользователям (более 30 пользователей или типов событий)<br />
			сообщения перестают инкременировать счетчик, что может приводить к быстрому заполнению буфера. Во избежании подобных событий, выделите "спамеров" в отдельную группу<br />
			пользователей и отключите в этих группах пользователей генерацию сообщений командами [CMD_USGR_SET_XXX &lt;UG&gt; m-] с лексемой 'm-'. В случае необходимости увеличения<br />
			глубины числа событий для инкремента, обратитесь к разработику ПО.
		</p>

		<p>
			-----  <br />
			Следует напомнить, что кольцевой буфер предполагает, что новые сообщения затирают старые, поэтому при большом количестве сообщений следует принять<br />
			дополнительные меры по сохранению нужной информации. Для этого в xt_ANAT предусмотрены следующие механизмы:
		</p>

		<p>
			1. Увеличение размера буфера сообщений 'на лету' путем изменения параметра MSG_MSRB_SZ2. Вот пример команды в консоле:<br />
			 $&gt;echo [CMD_SET_PRM_N MSG_MSRB_SZ2 = 12] &gt;&gt; /proc/net/ANAT/config<br />
			Размер буфера задается как степень 2(N-1), так 12 означает размер 4096 сообщений. Обратите внимание, что размер буфера будет изменен только после команды:<br />
			 $&gt;echo [CMD_MESSAGE_FREEZE] &gt;&gt; /proc/net/ANAT/config<br />
			 <br />
			2. Работа с замороженным буфером. В xt_ANAT для хранения сообщений и для трассировки пакетов используется по 2 буфера: 'Активный' и 'Замороженный'.<br />
			Команда [CMD_MESSAGE_FREEZE] копирует текущий Активный буфер сообщений в Замороженный и одновременно очищает Активный буфер и изменяет его размер в соответствии<br />
			с текущим значением параметра MSG_MSRB_SZ2.
		</p>

		<p>
			Содержимое Замороженного буфера можно просмотреть можно набрав в консоле:<br />
			$&gt;cat /proc/net/ANAT/msgf<br />
			msgf - выводит все сообщения в Замороженном буфере, вывод производится в 'обычном порядке' т.е. свежие сообщения оказываются внизу консоли, что<br />
			гораздо удобнее  для оперативной работы администратора.
		</p>

		<p>
			С помощью команды [CMD_MESSAGE_FREEZE] можно организовать логирование сообщений запуская по cron периодически скрипт со следующими командами:<br />
			$&gt;echo [CMD_MESSAGE_FREEZE] &gt;&gt; /proc/net/ANAT/config<br />
			$&gt;cat /proc/net/ANAT/msgf &gt; /var/log/ANAT/mylog_file.txt<br />
			!!! ВНИМАНИЕ !!! Минимальный интревал между двумя подряд командами [CMD_MESSAGE_FREEZE] = 3 секунды !!!
		</p>

		<p>
			-----<br />
			В xt_ANAT v1.00b (wv0_08) предусмотрены следующие виды событий регистрируемые в msg:<br />
			  E-NATP: ERROR No free NAT port found!    PR=%d N=%pI4  U=:[%d]<br />
			        - говорит о перегруженном состоянии &lt;N&gt; IP NATа и нехватки портов для пользователей, следует увеличить пул NAT или сократить число сессий для пользователей<br />
			           также можно попробовать изменить порядок выдачи адресов с '*L' на '*H'<br />
			  W-NATP: Long search free NAT port.       PR=%d N=%pI4  U=:[%d]<br />
			        - говорит о высокой нагрузке &lt;N&gt; IP NATа и нехватки портов для пользователей, обычно предшествует E-NATP<br />
			  E-NATA: ERROR No NAT addr for user addr! PR=%d U=%pI4:[%d]  D=[%pI4]<br />
			        - сообщает о неверной настройке пулов адресов или правил файрвола, происходит если не удается найти строку пула для &lt;U&gt; IP USERа<br />
			  E-ULIM: ERROR User use too much session! PR=%d U=%pI4 +%02d  SSCNT:[%lld]<br />
			        - сообщает об исчерпании лимита сессий пользовтелем &lt;U&gt; в соответствии с правилами в группе +UG (см. ==CMD_USGR_SET_XXX==)<br />
			  W-ULIM: User use a lot of session.       PR=%d U=%pI4 +%02d  SSCNT:[%lld]        <br />
			        - сообщает об достижении warning лимита сессий пользовтелем &lt;U&gt; в соответствии с правилами в группе +UG (см. ==CMD_USGR_SET_XXX==)<br />
			  W-BLKP: User on block or pause try create session. PR=%d U=%pI4 +%02d  PAUSE_JS:[%lld]  <br />
			        - информирует о попытке создать сессию заблокированным пользователем &lt;U&gt; в группе +UG  <br />
			  H-HUSR: User htbl has a lot of records!  PR=%d HASH=%d  U=[%pI4] +%02d<br />
			  H-HINR: Inner htbl has a lot of records! PR=%d HASH=%d  U=[%pI4:%d] +%02d<br />
			  H-HOUT: Outer htbl has a lot of records! PR=%d HASH=%d  U=[%pI4:%d] +%02d<br />
			        - эти сообщения предупреждают об увеличении числа записей для единичного хэш элемента свыше значения параметра HTB_WRN_RNUM<br />
			          как правило, это говорит о необходимости увеличения размера хэш таблиц путем изменения параметров xxxx_htsz при загрузке модуля<br />
			  E-NFBO: ERROR Nf9 bufeer overflow!       IHEAD=[%lld]<br />
			        - сообщает о переполнении кольцевого буфера NF9,<br />
			          как правило, это говорит о необходимости увеличения размера буфера NF9, путем изменения параметра nfrb_sz2 при загрузке модуля<br />
			          если это не помогает - следует снизить нагрузку на NF9 путем уменьшения числа получателей NF9, или увеличением пропускной способности сети<br />
			          также возможно вам следует увеличить интервалы KeepLive NF9 или изменить другие параметры NF9<br />
			          также такие сообщения могут возникнуть при массовой ДДОС атаке из локальной сети<br />
			          или в момент старта/рестарта сервера, при очень большом числе пользователей
		</p>

		<p>
			*Сообщения W-ULIM и E-ULIM можно отключить/включить для отдельных групп пользователей командами [CMD_USGR_SET_XXX &lt;UG&gt; m-] с лексемой 'm-'/'m+'
		</p>

		<p>
			где<br />
			  PR      = номер IP протокола<br />
			  N      = NAT  IP адрес : порт<br />
			  U      = USER IP адрес : порт<br />
			  +NN    = user group - номер группы пользовтелей<br />
			  SSCNT  = счетчик сессий на момент первого события в интервале<br />
			  D      = DEST IP адрес : порт в первом событии в интервале<br />
			  IHEAD  = счетчик числа пакетов в буфере в первом событии в интервале<br />
			  HASH   = значение hash функции в хэш таблице<br />
			  PAUSE_JS = время окончания блокировки во внутренних jiffies секундах (текущее внутренние время можно посмотреть в начале вывода /proc/net/ANAT/config
		</p>

		<p>
			<br />
			========================================================================================================<br />
			===== ==CMD_TEST_IP_SET== Проверка работы NAT и доступности ресурсов с тестового IP администратора =====
		</p>

		<p>
			В xt_ANAT предусмотрена возможность проверка работы NAT и доступнсти внешних ресурсов с опредленного NAT адреса.<br />
			Для настройки работы тестового IP в xt_ANAT используется следующая команда:<br />
			  [CMD_TEST_IP_SET &lt;user_ip&gt; &lt;nat_ip&gt; +&lt;UG&gt; ^&lt;T&gt;]  <br />
			   &lt;user_ip&gt; - ip адрес ПК администратора (!!!должен быть доступен маршрут к &lt;user_ip&gt; с сервера!!!),<br />
			   &lt;nat_ip&gt;  - ip адрес NAT, работу которого мы хотим проверить,<br />
			   &lt;UG&gt;  - группа пользователей для которой мы проводим проверку - ВАЖНО правильно указать, т.к. для разных групп могут быть установлены разные лимиты сессий.<br />
			   &lt;T&gt;   - trace char - может использоваться для трассировки пакетов или быстрой отчистки тестовых сессий<br />
			   <br />
			Пример комманды:<br />
			$&gt;echo [CMD_TEST_IP_SET 192.168.10.4 70.0.100.1 +00 ^W] &gt;&gt; /proc/net/ANAT/config
		</p>

		<p>
			Проверить текущие настройки CMD_TEST_IP_SET можно в конце вывода /proc/net/ANAT/config
		</p>

		<p>
			!!! Для работы с &lt;user_ip&gt; следует указать на Тестовом ПК default gw таким, что-бы трафик прошел через сервер xt_ANAT, также следует не забыть проверить, что<br />
			для тестового &lt;user_ip&gt; правилами файрвола сервера предусмотрено перенаправление трафика в xt_ANAT !!!
		</p>

		<p>
			Если всё сделано правильно, то вы получите доступ в Интернет с использованием &lt;nat_ip&gt; и с правилами лимитов +&lt;UG&gt;.
		</p>

		<p>
			===========================================================================================<br />
			===== ==CMD_USGR_SET_XXX== Настройка лимитов сессий для различных групп пользователей =====
		</p>

		<p>
			Одной из основных задач, которая может возникнуть при администрировании NAT на больших системах - выявление спамеров и зараженных вирусами ПК и их<br />
			последующая изоляция на отдельных NAT IP и ограничение в количестве ресурсов. Для этого в xt_ANAT в т.ч. предназначено понятие группа пользователей.<br />
			Всего может быть до 64 групп пользователей от +00 до +63.
		</p>

		<p>
			Следует обратить ВНИМАНИЕ!!! Что группа пользователей присваивается сессии, по итогам выбора подходящей строки пула адресов (лексема +&lt;UG&gt;), и один USER IP<br />
			адрес может оказаться одновременно в нескольких группах. Это произойдет, если мы для одного и того-же USER IP отнеcли обращения, например,<br />
			к портам tcp25 или tcp22, с помощью --mark и !&lt;mark&gt;, к UG +01, а остальные обращения оставили в UG +00. Подробности (см. ==HOW_IT_WORK== и ==METODICS==)
		</p>

		<p>
			Лимиты сессий устанавливаются внутри группы, поэтому если мы выставили для такого "раздвоенного" пользователя ограничения по сессиям TCP<br />
			в UG +01 = 100, а в UG +00 = 4096, то пользователь суммарно сможет создать 4196 сессий (4096+100), из которых только 100 будут доступны для портов 25 и 22<br />
			(как общая сумма) и 4096 портов под сессии к прочим tcp портам.
		</p>

		<p>
			Для настройка лимитов и порога warning для отдельных групп в xt_ANAT используются следующие команды:<br />
			  [CMD_USGR_SET_MAX &lt;UG&gt; [m-|m+] [t&lt;nnn&gt;] [u&lt;nnn&gt;] [i&lt;nnn&gt;] [o&lt;nnn&gt;]]  - установка максимального числа сессий для группы пользователей<br />
			  [CMD_USGR_SET_WRN &lt;UG&gt; [m-|m+] [t&lt;nnn&gt;] [u&lt;nnn&gt;] [i&lt;nnn&gt;] [o&lt;nnn&gt;]]  - установка порога warning числа сессий для группы пользователей<br />
			    &lt;UG&gt;  - номер UG в формате +NN или 'ALL'. Команда с UG = ALL будет применена ко всем группам пользователей.<br />
			    &lt;nnn&gt; - число сессий для соответвующих протоколов: t-tcp, u-udp, i-icmp, o-other<br />
			            если вместо &lt;nnn&gt; указать 'D', то  будет использоваться  дефолтное значение USR_MAX_SS_XXX или USR_WRN_SS_XXX из /proc/net/ANAT/params<br />
			    m-|m+ - лексемы включения /выключения для группы вывода сообщений в буфер msg ('m-' = off, 'm+' = on) по умолчанию сообщения включены ('m+')
		</p>

		<p>
			Примеры комманд:<br />
			$&gt;echo [CMD_USGR_SET_MAX +01 m- t100 u100 i10 o0] &gt;&gt; /proc/net/ANAT/config<br />
			$&gt;echo [CMD_USGR_SET_WRN +01 t50] &gt;&gt; /proc/net/ANAT/config<br />
			$&gt;echo [CMD_USGR_SET_WRN ALL m-] &gt;&gt; /proc/net/ANAT/config<br />
			$&gt;echo [CMD_USGR_SET_MAX ALL m+ tD uD iD oD] &gt;&gt; /proc/net/ANAT/config
		</p>

		<p>
			Следует отметить, что комманды CMD_USGR_SET_XXX можно и СЛЕДУЕТ помещать с конфигурационный файл и применять сразу при старте xt_ANAT.<br />
			При повтороной загрузке конфигрурационного файла, не происходит автоматического сброса текущих настроек групп пользователей, поэтому<br />
			для их сброса в первоначальное состояние, перед подачей команд настройки групп пользователей, в файле можно поместить 2 команды:<br />
			[CMD_USGR_SET_MAX ALL m+ tD uD iD oD]<br />
			[CMD_USGR_SET_WRN ALL m+ tD uD iD oD]<br />
			и далее уже разместить команды настройки групп.
		</p>

		<p>
			Проверить текущие настройки CMD_USGR_SET_XXX можно в /proc/net/ANAT/ugroups.
		</p>

		<p>
			=============================================================================<br />
			===== ==CMD_NAT_XXX== Приостановка или блокировка создания новых сессий =====
		</p>

		<p>
			Иногда в процессе работы возникает необходимоость приостановить на время или заблокировать возможность пользователю создавать новые сессии.<br />
			Для блокировки и приостановки создания новых сессий в xt_ANAT используются следующие команды:<br />
			  [CMD_NAT_BLOCK_ON  [&lt;IP&gt;] [+&lt;UG&gt;]]            - блокирует создание новых сессий на неопределенное время<br />
			  [CMD_NAT_BLOCK_OFF [&lt;IP&gt;] [+&lt;UG&gt;]]            - отменяет блокировку<br />
			  [CMD_NAT_PAUSE_ON   &lt;TIME_S&gt; [&lt;IP&gt;] [+&lt;UG&gt;]]  - приостанавливает создание новых сессий на &lt;TIME_S&gt; секунд    <br />
			  [CMD_NAT_PAUSE_OFF [&lt;IP&gt;] [+&lt;UG&gt;]]            - отменяет приостановку<br />
			    &lt;IP&gt; - USER IP - ip адрес пользователя<br />
			    &lt;UG&gt; - user group - номер группы пользователей<br />
			    &lt;TIME_S&gt; - длительность приостановки создания новых сессий в секундах
		</p>

		<p>
			<br />
			Примеры комманд:<br />
			$&gt;echo [CMD_NAT_BLOCK_ON 192.168.10.2] &gt;&gt; /proc/net/ANAT/config<br />
			$&gt;echo [CMD_NAT_BLOCK_ON 192.168.10.3 +01] &gt;&gt; /proc/net/ANAT/config<br />
			$&gt;echo [CMD_NAT_PAUSE_ON 100 +01] &gt;&gt; /proc/net/ANAT/config<br />
			$&gt;echo [CMD_NAT_PAUSE_ON 10] &gt;&gt; /proc/net/ANAT/config<br />
			$&gt;echo [CMD_NAT_BLOCK_OFF 192.168.10.3] &gt;&gt; /proc/net/ANAT/config<br />
			$&gt;echo [CMD_NAT_BLOCK_OFF] &gt;&gt; /proc/net/ANAT/config<br />
			$&gt;echo [CMD_NAT_PAUSE_OFF +01] &gt;&gt; /proc/net/ANAT/config
		</p>

		<p>
			Обратите внимание, что заблокировать или приостановить работу можно ТОЛЬКО тех пользователей и в тех группа которые на данный момент активны на сервере,<br />
			список активных пользователей и их группы, а также состояние блокировок и приостановок можно просмотреть в /proc/net/ANAT/users.<br />
			Если пользователь не активен, то команды CMD_NAT_XXX не дадут никакого эффекта. Для вновь активного или нового пользователя или пользователя<br />
			в новой группе ограничения CMD_NAT_XXX действовать не будут!
		</p>

		<p>
			ВНИМАНИЕ! Команды CMD_NAT_XXX ограничивают создание НОВЫХ сессий! Старые активные сессии продолжат работать до их остановки!
		</p>

		<p>
			============================================================================<br />
			===== ==CMD_KILL_XXX== Остановка (сброс) активных сессии пользователей =====
		</p>

		<p>
			Иногда в процессе работы возникает необходимоость остановить (сбросить) сессии некоторых пользователей.<br />
			Для остановки сессий в xt_ANAT используются следюущие команды:<br />
			  [CMD_KILL_USER &lt;U_IP&gt; [p&lt;PROTO&gt;] [: &lt;U_PORT&gt;] [+&lt;UG&gt;] [^&lt;T&gt;]] - сбросить сессии пользователя с USER ip : USER port  = &lt;U_IP&gt; : U_PORT<br />
			  [CMD_KILL_NAT  &lt;N_IP&gt; [p&lt;PROTO&gt;] [: &lt;N_PORT&gt;] [+&lt;UG&gt;] [^&lt;T&gt;]] - сбросить сессии пользователей на NAT ip : NAT port  = &lt;N_IP&gt; : N_PORT<br />
			  [CMD_KILL_ALL [+&lt;UG&gt;][^&lt;T&gt;]]  - сбросить сессии всех пользователей<br />
			    p&lt;PROTO&gt; - применить команду только к сессиям с указанным номером протокола допускается использовать  pT,pU,pI,pO - (TCP,UDP,ICMP,OTHER)  <br />
			    &lt;UG&gt;     - применить команду только к сессиям групп пользователей с номером UG = &lt;UG&gt;<br />
			    &lt;T&gt;      - применить команду только к сессиям с trace char = &lt;T&gt;
		</p>

		<p>
			Примеры комманд:<br />
			$&gt;echo [CMD_KILL_ALL] &gt;&gt; /proc/net/ANAT/config<br />
			$&gt;echo [CMD_KILL_ALL +01] &gt;&gt; /proc/net/ANAT/config<br />
			$&gt;echo [CMD_KILL_ALL ^W] &gt;&gt; /proc/net/ANAT/config<br />
			$&gt;echo [CMD_KILL_USER 192.168.10.3p6:25 +01] &gt;&gt; /proc/net/ANAT/config<br />
			$&gt;echo [CMD_KILL_USER 192.168.10.3:53+01^S] &gt;&gt; /proc/net/ANAT/config<br />
			$&gt;echo [CMD_KILL_USER 192.168.10.1] &gt;&gt; /proc/net/ANAT/config<br />
			$&gt;echo [CMD_KILL_NAT 70.0.100.1:54235] &gt;&gt; /proc/net/ANAT/config<br />
			$&gt;echo [CMD_KILL_NAT 70.0.100.1pO ^W] &gt;&gt; /proc/net/ANAT/config
		</p>

		<p>
			<br />
			ВНИМАНИЕ! Команды CMD_KILL_XXX не имеют возможности отмены, применяйте их с осторожностью, особенно команду [CMD_KILL_ALL]!<br />
			ВНИМАНИЕ! Команды CMD_KILL_XXX не удаляют статические связки.<br />
			 <br />
			======================================================================================<br />
			===== ==CMD_STATIC_MAP_XXX== Статические сессии (STATIC_MAP) (aka порт mapping)  =====
		</p>

		<p>
			В xt_ANAT поддерживается функция static sessions (STATIC_MAP) (port mapping).<br />
			Вы можете добавлять/удалять статические связки для user_ip:user_port и nat_ip:nat_port с помощью комманд CMD_STATIC_MAP_ADD, CMD_STATIC_MAP_DEL и<br />
			CMD_STATIC_MAP_DEL_ALL. Статические связки сбрасываются при рестарте модуля, поэтому рекомендуется для постоянных связок хранить набор комманд в<br />
			отдельном файле и загружать в случае необходимости или изменения. В начале фалк можно указать [CMD_STATIC_MAP_DEL_ALL] для очистки всех статических связок.<br />
			Команды CMD_STATIC_MAP_DEL удаляют только статические связки.<br />
			ВНИМАНИЕ! Команды CMD_KILL_XXX не удаляют статические связки.<br />
			В списке net/ANAT/sessions статические сессии отображаются с отметкой (STATIC_MAP)<br />
			!!! Обратите внимание! Статические сессии создаются вне зависимости от счетчика лимитов, но учитываются при создании простых сессий. !!!<br />
			!!! Функция STATIC_MAP работает корректно только с протоколами UDP и TCP. Работа с другими протоколами не гарантируется. !!!<br />
			!!! Если на данной связке адресе:порт уже настроена STATIC_MAP или есть активная сессия, то они будут сброшены. !!!
		</p>

		<p>
			Для управления статичкескими свзяками (статическими сессиями) в xt_ANAT используются следюущие команды:<br />
			  [CMD_STATIC_MAP_ADD p&lt;PROTO&gt; &lt;user_ip&gt; : &lt;user_port&gt; &lt;nat_ip&gt; : &lt;nat_port&gt; [+&lt;UG&gt;] [^&lt;T&gt;]] - добавить статическую связку   <br />
			  [CMD_STATIC_MAP_DEL p&lt;PROTO&gt; &lt;user_ip&gt; : &lt;user_port&gt;]                                      - удалить одну конкретную статическую связку<br />
			    &lt;PROTO&gt;                    - номер протокола, допускается использовать pT,pU - (TCP,UDP) или номер протокола<br />
			    &lt;user_ip&gt; : &lt;user_port&gt;  - ip адрес и порт на стороне клиента   <br />
			    &lt;nat_ip&gt;  : &lt;nat_port&gt;   - ip адрес и порт на стороне NAT<br />
			    &lt;UG&gt;                       - группа пользователей для сессии (по умолчанию +00)<br />
			    &lt;T&gt;                        - trace char - для сессии (по умолчанию ^@)<br />
			    <br />
			  [CMD_STATIC_MAP_DEL_ALL [p&lt;proto&gt;] [&lt;user_ip&gt;] [+&lt;UG&gt;] [^&lt;T&gt;]]    - удалить несколько или все статические связки<br />
			    &lt;PROTO&gt;    - применить команду только к сессиям с указанным номером протокола, в т.ч. допускается использовать  pT,pU,pI,pO - (TCP,UDP,ICMP,OTHER)      <br />
			    &lt;user_ip&gt;  - применить команду только к сессиям с указанным user_ip      <br />
			    &lt;UG&gt;       - применить команду только к сессиям групп пользователей с номером UG = &lt;UG&gt;<br />
			    &lt;T&gt;        - применить команду только к сессиям с trace char = &lt;T&gt;<br />
			 <br />
			Примеры комманд:<br />
			$&gt;echo [CMD_STATIC_MAP_DEL_ALL] &gt;&gt; /proc/net/ANAT/config<br />
			$&gt;echo [CMD_STATIC_MAP_ADDpT192.168.10.3:25 70.0.100.1:54235+01^S] &gt;&gt; /proc/net/ANAT/config<br />
			$&gt;echo [CMD_STATIC_MAP_ADD pU 192.168.10.3:53 70.0.100.1:53] &gt;&gt; /proc/net/ANAT/config<br />
			$&gt;echo [CMD_STATIC_MAP_ADD p17 192.168.10.3:23 70.0.100.1:2023] &gt;&gt; /proc/net/ANAT/config<br />
			$&gt;echo [CMD_STATIC_MAP_ADD pT 192.168.10.3:443 70.0.100.1:443 ^W] &gt;&gt; /proc/net/ANAT/config<br />
			$&gt;echo [CMD_STATIC_MAP_DEL  pT 192.168.10.3:443] &gt;&gt; /proc/net/ANAT/config<br />
			$&gt;echo [CMD_STATIC_MAP_DEL 192.168.10.3 ^W] &gt;&gt; /proc/net/ANAT/config<br />
			 <br />
			$&gt;cat /proc/net/ANAT/sessions | grep STATIC
		</p>

		<p>
			=============================================================================================<br />
			===== ==CMD_TRACE_XXX== Трассировка (отслеживание заголовков) пакетов проходящих через  =====
		</p>

		<p>
			Часто перед администратором встает вопрос, о том какая активность (трафик) сейчас проходит через сервер, особенно актуально это для выявления спамеров<br />
			и зараженных компьютеров, а также диагностики DDOS атак. В xt_ANAT добавлен функционал TRACE для логирования пакетов, который позволяет быстро отследить<br />
			активность пользователей логируя пакеты проходящие через модуль xt_ANAT. В логе отображаются, направление пакета, его статус (DROP|ACCEPT), размер пакета,<br />
			адрес и порт USER (пользователя) , адрес и порт NAT, адрес и порт DEST (удаленной стороны), адрес и порт SESSION DEST (удаленной стороны при создании сессии).<br />
			Для отбора нужных пакетов предусмотрено множество простых и сложных фильтров.
		</p>

		<p>
			Функционал TRACE в xt_ANAT реализован на базе кольцевого буфера 'trc', работающего на принципах аналогичным буферу сообщений 'msg'.<br />
			Для просмотра лога пакетов надо набрать в консоле:<br />
			$&gt;cat /proc/net/ANAT/trca<br />
			$&gt;cat /proc/net/ANAT/trcp<br />
			$&gt;cat /proc/net/ANAT/trcf
		</p>

		<p>
			Для заморозки буфера логов используйте команду [CMD_TRACE_FREEZE], изменять размер буфера и количество строк частичного вывода можно командой [CMD_SET_PRM_N XXX=XX]<br />
			устанавливая параметры MSG_TRCB_SZ2 и MSG_TRCB_PART соответственно.
		</p>

		<p>
			Включение механизмов TRACE производится в несколько этапов.<br />
			1. Сперва следует включить/отключить TRACE для тех 'trace сhar' или пользователей трафик которых вас интересует командами:<br />
			  [CMD_TRACE_ON_&lt;T&gt;]  - включает  трассировку по 'trace сhar' для сессий с tc = &lt;T&gt;<br />
			  [CMD_TRACE_ON_ALL]  - включает  трассировку для сессий с любыми 'trace сhar'<br />
			  [CMD_TRACE_OFF_&lt;T&gt;] - выключает трассировку по 'trace сhar' для сессий с tc = &lt;T&gt;<br />
			  [CMD_TRACE_OFF_ALL] - выключает трассировку для сессий с любыми 'trace сhar'<br />
			и (или)<br />
			  [CMD_TRACE_USER_ON {&lt;U_IP&gt; [+&lt;UG&gt;] | +&lt;UG&gt;} ] - включает  трассировку по пользователям с USER ip = U_IP и (или) с UG = &lt;UG&gt;<br />
			  [CMD_TRACE_USER_OFF]                          - выключает трассировку по пользователям<br />
			 <br />
			!!! Механизмы CMD_TRACE_ON_X и CMD_TRACE_USER_ON - работают независимо, то есть пакет попадет в трассировку если удовлетвоаряет любому из двух условий.
		</p>

		<p>
			Также в случае необходимости можно включить/выключить TRACE для пакетов не имеющих сессий:<br />
			  [CMD_TRACE_OUTDROP_ON]   - включает  трассировку для исходящих пакетов для которых не удалось создать сессию<br />
			  [CMD_TRACE_OUTDROP_OFF]  - выключает трассировку для исходящих пакетов для которых не удалось создать сессию<br />
			  [CMD_TRACE_LOCFRWD_ON]   - включает  трассировку для входящих пакетов для которых не удалось найти сессию<br />
			  [CMD_TRACE_LOCFRWD_OFF]  - выключает трассировку для входящих пакетов для которых не удалось найти сессию<br />
			 <br />
			2. После включения TRACE следует в случае необходимости настроить дополнительную фильтрацию пакетов командами:<br />
			  [CMD_TRACE_FILTER_SET_P [p&lt;pr&gt; [- &lt;pr_e&gt;]] [s&lt;pksz&gt; [- &lt;pksz_e&gt;]] [dI|O|B] [rD|A|B]] - включает фильтрацию по протоколу, размeру пакетов, направлению и статусу<br />
			    p&lt;pr&gt;   [- &lt;pr_e&gt;]   - фильтр по диапазону протоколов, также допустимо pT - tcp, pU - udp, pI - icmp, pO - other протоколы.<br />
			    s&lt;pksz&gt; [- &lt;pksz_e&gt;] - фильтр по размеру пакетов<br />
			    dI|O|B               - фильтр по направлению (direction) dI - только входящие, dO - только исходящие, dB - входящие и исходящие<br />
			    rD|A|B               - фильтр по статусу (result) rD - только DROP'ed, rA - только ACCEPT'ed, dB - DROP и ACCEPT<br />
			    <br />
			  [CMD_TRACE_FILTER_SET_{U|N|D|S} [&lt;ip&gt; [- &lt;ip_e&gt;]] [: &lt;port&gt; [- &lt;port_e&gt;]] ]- включает фильтрацию по адресам и портам (USER, NAT, DEST и SESSION DEST)<br />
			    U|N|D|S              - определяет к каким адресам применять команду U - USER, N - NAT, D - DEST, S - SESSION DEST        <br />
			    &lt;ip&gt; [- &lt;ip_e&gt;]      - фильтр по диапазону ip адресов<br />
			    :&lt;port&gt; [- &lt;port_e&gt;] - фильтр по диапазону портов
		</p>

		<p>
			Сброс фильтров прозводится командами без дополнительных параметров:    <br />
			  [CMD_TRACE_FILTER_SET_P] и [CMD_TRACE_FILTER_SET_{U|N|D|S}] соответсвенно.<br />
			 <br />
			Активация/деактивация (включение/отключение работы) дополнительного фильтра осуществляется командами:<br />
			  [CMD_TRACE_FILTER_ON]<br />
			  [CMD_TRACE_FILTER_OFF]
		</p>

		<p>
			3. После завершения настроек необходимо разрешить трассировку пакетов командой:<br />
			  [CMD_TRACE_START]<br />
			Остановка трассровки пакетов производится командой<br />
			  [CMD_TRACE_STOP]<br />
			 <br />
			Примеры комманд:<br />
			$&gt;echo [CMD_TRACE_ON_ALL] &gt;&gt; /proc/net/ANAT/config<br />
			$&gt;echo [CMD_TRACE_ON_@] &gt;&gt; /proc/net/ANAT/config<br />
			$&gt;echo [CMD_TRACE_OFF_ALL] &gt;&gt; /proc/net/ANAT/config<br />
			$&gt;echo [CMD_TRACE_OFF_T] &gt;&gt; /proc/net/ANAT/config<br />
			$&gt;echo [CMD_TRACE_USER_ON 10.0.0.1] &gt;&gt; /proc/net/ANAT/config<br />
			$&gt;echo [CMD_TRACE_USER_ON 10.0.0.3 +01] &gt;&gt; /proc/net/ANAT/config<br />
			$&gt;echo [CMD_TRACE_USER_ON +01] &gt;&gt; /proc/net/ANAT/config<br />
			$&gt;echo [CMD_TRACE_USER_OFF] &gt;&gt; /proc/net/ANAT/config<br />
			$&gt;echo [CMD_TRACE_OUTDROP_ON] &gt;&gt; /proc/net/ANAT/config<br />
			$&gt;echo [CMD_TRACE_LOCFRWD_OFF] &gt;&gt; /proc/net/ANAT/config<br />
			$&gt;echo [CMD_TRACE_FILTER_SET_P p30-200 dB] &gt;&gt; /proc/net/ANAT/config<br />
			$&gt;echo [CMD_TRACE_FILTER_SET_P pO s0-100 dI rA] &gt;&gt; /proc/net/ANAT/config<br />
			$&gt;echo [CMD_TRACE_FILTER_SET_P] &gt;&gt; /proc/net/ANAT/config<br />
			$&gt;echo [CMD_TRACE_FILTER_SET_U 10.0.0.1-10.20.0.255] &gt;&gt; /proc/net/ANAT/config<br />
			$&gt;echo [CMD_TRACE_FILTER_SET_N 70.0.0.1:10000-30000] &gt;&gt; /proc/net/ANAT/config<br />
			$&gt;echo [CMD_TRACE_FILTER_SET_D 8.8.8.8] &gt;&gt; /proc/net/ANAT/config<br />
			$&gt;echo [CMD_TRACE_FILTER_SET_S :53] &gt;&gt; /proc/net/ANAT/config<br />
			$&gt;echo [CMD_TRACE_FILTER_SET_U] &gt;&gt; /proc/net/ANAT/config<br />
			$&gt;echo [CMD_TRACE_FILTER_ON] &gt;&gt; /proc/net/ANAT/config<br />
			$&gt;echo [CMD_TRACE_START] &gt;&gt; /proc/net/ANAT/config<br />
			 <br />
			Несмотря на то, что TRACE работает очень быстро, не рекомендуется оставлять ее включенной без надобности, посколько это всё-же пусть и незначительно,<br />
			но снижает скорость обработки пакетов xt_ANAT, особенно, если количество пакетов попадающих в лог слишком велико. Рекомендуется ограничивать длительную<br />
			трассировку по 'trace сhar' или пользователю или группам с разумным количеством пакетов.
		</p>

		<p>
			Проверить текущие настройки CMD_TRACE_XXX можно в /proc/net/ANAT/config.
		</p>

		<p>
			===============================================================================<br />
			===== ==NET_FLOW== Отправка информации о сессиях по протоколу Netflow v9 ======
		</p>

		<p>
			В xt_ANAT реализована поддержка отправки информации о NAT сессиях по протоколу  Netflow v9 что позволяет собирать статистику соединений, а также взаимодействовать<br />
			с системами СОРМ. В xt_ANAT отправка NF9 реализована через промежуточный кольцевой буфер, что ускоряет обработку пакетов, а также позволяет избегать зависаний<br />
			из-за взаимных блокировок процессов. Отправка пакетов реализована в отдельном потоке xt_anat_nf9s. Наличие потока можно проверить командой:<br />
			$&gt;ps axu | grep xt_anat_nf9s
		</p>

		<p>
			В xt_ANAT по умолчанию можно указать до 10 получателей NF9. Увеличение числа получателей увеличивает нагрузку, т.к. пакеты дублируются каждому получателю.<br />
			Следует обратить внимание, что пакеты отправляются с произвольного порта UDP, что следует учитывать при настройке файрволов.
		</p>

		<p>
			В xt_ANAT в сведения отправляемые в NF9 включен ряд дополнительной информации, а именно время создания сессии в милисекундах отсчитываемых от 00:00 UTC 1970 года.<br />
			Это позволяет установить принадлежность пакетов даже по сообщениям NF9 о закрытии сессии. Также в xt_ANAT предсмотрен специальний тип сообщений sessions KeepAlive,<br />
			который периодически генерируется для информирования о долго длящихся сессиях. Или может использоваться для холодного старта получателя статистики без рестарта сессий<br />
			клиентов.
		</p>

		<p>
			Основные настройки NF9 производятся через установку значений параметров NF9_XXX  из /proc/net/ANAT/params:<br />
			  NF9_EVENTS_ON:   =1;     - (1=on,0=off) Включение генерации пакетов NF9, если не планируется использовать NF9 - утсановите его =0!<br />
			  NF9_MTU_UDPLOAD: =1300;  - Размер максимальной полезной нагрузки в UDP пакете. Изменяя этот параметр можно устранить проблемы с MTU или ускорить обмен.<br />
			  NF9_TEMPLATE_ID: =300;   - Значение поля Template ID в пакетах nf9.<br />
			  NF9_SOURCE_ID:   =1;     - Значение поля Source ID в пакетах nf9.<br />
			  NF9_TMPL_SQUANT: =1;     - Частота отправки template в пакетах nf9. (0=не отправлять, 1=отправлять всегда, N &gt; 2 - отправлять каждый N пакет)<br />
			  NF9_TMPL_SEMPTY: =1;     - (1=on,0=off) Отправлять пустой пакте только с template если нет данных о сессиях. (Можно использовать как UDP keepalive)<br />
			  NF9_DELAY_SEC:   =10;    - Максимальная задержка между отправкой пакетов (sec) (Можно использовать как UDP keepalive)<br />
			  NF9_SSK_INTRV_S: 10800   - Интервал генерации Active sessions KeepAlive сообщений (sec). (1000000=off sessions KeepAlive)
		</p>

		<p>
			Также, в случае необходимости, можно сбросить в 0 счетчик seq отправленных Получателям пакетов командой:<br />
			  [CMD_RESET_NF9_SEQ]<br />
			!!! Значение seq инкременируется и передается в каждом пакете NF9, и его сброс может вызвать проблемы на принимающей стороне !!!
		</p>

		<p>
			================================================<br />
			===== ==STATISTICS== Статистика и счетчики =====<br />
			В xt_ANAT можно просмотреть список активных пользователей:<br />
			$&gt;cat /proc/net/ANAT/users
		</p>

		<p>
			В xt_ANAT можно просмотреть список активных сессий:<br />
			$&gt;cat /proc/net/ANAT/sessions
		</p>

		<p>
			В xt_ANAT можно просмотреть счетчики статистики:<br />
			$&gt;cat /proc/net/ANAT/statistics
		</p>

		<p>
			Среди счетчиков следует обратить внимание на счетчики:<br />
			  MM_ERBAG: 0 -- Bags managment errors find (BUGS)<br />
			  MM_NOMEM: 0 -- Not enough memory during packets work<br />
			их значения должны быть ВСЕГДА = 0, следует проверить свободную память и обратится к разработчикам при их значениях &lt;&gt; 0.
		</p>

		<p>
			Для удобства администраторов, некоторые группы счетчиков можно сбросить в 0, следующими коммандами:<br />
			  [CMD_RESET_CNT_PK] - сброс счетчиков PK_XXX<br />
			  [CMD_RESET_CNT_FP] - сброс счетчиков FP_XXX<br />
			  [CMD_RESET_CNT_HT] - сброс счетчиков HT_XXX<br />
			  [CMD_RESET_CNT_OV] - сброс счетчиков OV_XXX<br />
			  [CMD_RESET_CNT_NF] - сброс счетчиков N9_XXX
		</p>

		<p>
			Значения MS_EVCNT, N9_EVNHD, N9_EVNTL - не являются статистическими счетчиками и их значения сбросить невозможно, их сброс происходит только при определенных событиях.<br />
			Сброс счетчиков ST_XXX - не предусмотрен.
		</p>

		<p>
			<br />
			============================================================<br />
			===== ==CMD== Краткий справочник команд v1.01b (wv0_09) =====
		</p>

		<p>
			Загрузка конфигурации пулов:<br />
			  [LOAD_TMP_CONFIG_V2_0]  - начало секции файла конфигурации пулов<br />
			  [LOAD_TMP_CONFIG_END]   - конец секции файла конфигурации пулов<br />
			 <br />
			  [CFG_NATPOLL_V2_0]      - начало секции конфигурации пула адресов<br />
			  [CFG_NATPOLL_END]       - конец секции конфигурации пула адресов<br />
			  формат строки пула адресов:<br />
			  [ [^&lt;T&gt;] [+&lt;UG&gt;] [&amp;&lt;E&gt;] [*L(inear)|*H(ash)] [!&lt;mark&gt;] : ] [ &lt;usr_ip_start&gt; - &lt;usr_ip_end&gt; :] &lt;nat_ip_start&gt; - &lt;nat_ip_end&gt;<br />
			    ^ - trace_code for trace packets to msg: &lt;T&gt;-one char from 'A' to 'Z', default = '@'<br />
			    + - user_group &lt;UG&gt;='00'..'63': (must be 2 digits, use '01' not '1'), deafult = '00'<br />
			    &amp; - nat_use &lt;E&gt;-one digit: '0'- use all NAT ip , '1'- exclude x.0 (move to x.1), '2'- exclude x.255 (move to x.254),<br />
			        '3'- both (1) and (2)), default = '0'<br />
			    * - nat_hash ip method : 'L' - linear, 'H' - jhash, default is: 'H'- for defaults user pool 'L'- for all other pools<br />
			    ! - mark (take rule only for &lt;mark&gt; marked trafic<br />
			      (if !0 - it the rule is ONLY for non marked trafic, if no !&lt;mark&gt; - rule is for ALL trafic), default - no  <br />
			 <br />
			  [CFG_NF9DEST_V2_0]      - начало секции конфигурации пула получателей NF9<br />
			  [CFG_NF9DEST_END]       - конец секции конфигурации пула получателей NF9<br />
			  формат строки пула получателей NF9:<br />
			  dest_ip : dest_port<br />
			 <br />
			  [CMD_CONFIG_TMPTOINA]   - скопировать TMP конфигурацию в INACTIVE<br />
			  [CMD_CONFIG_SWAP]       - поменять местами INACTIVE и ACTIVE конфигурации
		</p>

		<p>
			-----
		</p>

		<p>
			Установка параметров:<br />
			  [CMD_SET_PRM_N &lt;param_name&gt; = &lt;param_value&gt;]
		</p>

		<p>
			Сброс в 0 групп счетчиков статистики:<br />
			  [CMD_RESET_CNT_PK]      - сброс счетчиков PK_XXX<br />
			  [CMD_RESET_CNT_FP]      - сброс счетчиков FP_XXX<br />
			  [CMD_RESET_CNT_HT]      - сброс счетчиков HT_XXX<br />
			  [CMD_RESET_CNT_OV]      - сброс счетчиков OV_XXX<br />
			  [CMD_RESET_CNT_NF]      - сброс счетчиков N9_XXX<br />
			  [CMD_RESET_CNT_ER]      - сброс счетчиков MM_XXX
		</p>

		<p>
			Сброс в 0 счетчика seq отправленных Получателям NF9 пакетов :<br />
			  [CMD_RESET_NF9_SEQ]
		</p>

		<p>
			Заморозка кольцевых буферов:<br />
			  [CMD_MESSAGE_FREEZE]    - заморозка буфера сообщений msg<br />
			  [CMD_TRACE_FREEZE]      - заморозка буфера логов пакетов TRACE trc<br />
			 <br />
			Настройка работы тестового IP:<br />
			  [CMD_TEST_IP_SET &lt;user_ip&gt; &lt;nat_ip&gt; +&lt;UG&gt; ^&lt;T&gt;]  <br />
			   &lt;user_ip&gt; - ip адрес ПК администратора (!!!должен быть доступен маршрут к &lt;user_ip&gt; с сервера!!!),<br />
			   &lt;nat_ip&gt;  - ip адрес NAT, работу которого мы хотим проверить,<br />
			   &lt;UG&gt;  - группа пользователей для которой мы проводим проверку - ВАЖНО правильно указать, т.к. для разных групп могут быть установлены разные лимиты сессий.<br />
			   &lt;T&gt;   - trace char - может использоваться для трассировки пакетов или быстрой отчистки тестовых сессий<br />
			  [CMD_TEST_IP_SET] - отключить тестовый ip
		</p>

		<p>
			Настройка лимитов и порога warning для отдельных групп пользователей:<br />
			  [CMD_USGR_SET_MAX &lt;UG&gt; [m-|m+] [t&lt;nnn&gt;] [u&lt;nnn&gt;] [i&lt;nnn&gt;] [o&lt;nnn&gt;]]  - установка максимального числа сессий для группы пользователей<br />
			  [CMD_USGR_SET_WRN &lt;UG&gt; [m-|m+] [t&lt;nnn&gt;] [u&lt;nnn&gt;] [i&lt;nnn&gt;] [o&lt;nnn&gt;]]  - установка порога warning числа сессий для группы пользователей<br />
			    &lt;UG&gt;  - номер UG в формате +NN или 'ALL'. Команда с UG = ALL будет применена ко всем группам пользователей.<br />
			    &lt;nnn&gt; - число сессий для соответвующих протоколов: t-tcp, u-udp, i-icmp, o-other<br />
			            если вместо &lt;nnn&gt; указать 'D', то  будет использоваться  дефолтное значение USR_MAX_SS_XXX или USR_WRN_SS_XXX из /proc/net/ANAT/params<br />
			    m-|m+ - лексемы включения/выключения для группы вывода сообщений в буфер msg ('m-' = off, 'm+' = on) по умолчанию сообщения включены ('m+')<br />
			    <br />
			Блокировка или приостановка создания новых сессий:<br />
			  [CMD_NAT_BLOCK_ON  [&lt;IP&gt;] [+&lt;UG&gt;]]            - блокирует создание новых сессий на неопределенное аремя<br />
			  [CMD_NAT_BLOCK_OFF [&lt;IP&gt;] [+&lt;UG&gt;]]            - отменяет блокировку<br />
			  [CMD_NAT_PAUSE_ON   &lt;TIME_S&gt; [&lt;IP&gt;] [+&lt;UG&gt;]]  - приостанавливает создание новых сессий на &lt;TIME_S&gt; секунд    <br />
			  [CMD_NAT_PAUSE_OFF [&lt;IP&gt;] [+&lt;UG&gt;]]            - отменяет приостановку<br />
			    &lt;IP&gt; - USER IP - ip адрес пользователя<br />
			    &lt;UG&gt; - user group - номер группы пользователей<br />
			    &lt;TIME_S&gt; - длительность приостановки создания новых сессий в секундах
		</p>

		<p>
			Остановка (сброс) активных сессий:<br />
			  [CMD_KILL_USER &lt;U_IP&gt; [p&lt;PROTO&gt;] [: &lt;U_PORT&gt;] [+&lt;UG&gt;] [^&lt;T&gt;]] - сбросить сессии пользователя с USER ip : USER port  = &lt;U_IP&gt; : U_PORT<br />
			  [CMD_KILL_NAT  &lt;N_IP&gt; [p&lt;PROTO&gt;] [: &lt;N_PORT&gt;] [+&lt;UG&gt;] [^&lt;T&gt;]] - сбросить сессии пользователей на NAT ip : NAT port  = &lt;N_IP&gt; : N_PORT<br />
			  [CMD_KILL_ALL [+&lt;UG&gt;][^&lt;T&gt;]]                       - сбросить сессии всех пользователей    <br />
			    &lt;PROTO&gt; - применить команду только к сессиям с указанным номером протокола допускается использовать  pT,pU,pI,pO - (TCP,UDP,ICMP,OTHER)  <br />
			    &lt;UG&gt;    - применить команду только к сессиям групп пользователей с номером UG = &lt;UG&gt;<br />
			    &lt;T&gt;     - применить команду только к сессиям с trace char = &lt;T&gt;
		</p>

		<p>
			Статические сессии (STATIC_MAP) (порт mapping)    <br />
			  [CMD_STATIC_MAP_ADD p&lt;PROTO&gt; &lt;user_ip&gt; : &lt;user_port&gt; &lt;nat_ip&gt; : &lt;nat_port&gt; [+&lt;UG&gt;] [^&lt;T&gt;]] - добавить статическую связку   <br />
			  [CMD_STATIC_MAP_DEL p&lt;PROTO&gt; &lt;user_ip&gt; : &lt;user_port&gt;]                                      - удалить одну конкретную статическую связку<br />
			    &lt;PROTO&gt;                    - номер протокола, допускается использовать pT,pU - (TCP,UDP) или номер протокола<br />
			    &lt;user_ip&gt; : &lt;user_port&gt;  - ip адрес и порт на стороне клиента   <br />
			    &lt;nat_ip&gt;  : &lt;nat_port&gt;   - ip адрес и порт на стороне NAT<br />
			    &lt;UG&gt;                       - группа пользователей для сессии (по умолчанию +00)<br />
			    &lt;T&gt;                        - trace char - для сессии (по умолчанию ^@)<br />
			    <br />
			  [CMD_STATIC_MAP_DEL_ALL [p&lt;proto&gt;] [&lt;user_ip&gt;] [+&lt;UG&gt;] [^&lt;T&gt;]]    - удалить несколько или все статические связки<br />
			    &lt;PROTO&gt;    - применить команду только к сессиям с указанным номером протокола, в т.ч. допускается использовать  pT,pU,pI,pO - (TCP,UDP,ICMP,OTHER)      <br />
			    &lt;user_ip&gt;  - применить команду только к сессиям с указанным user_ip      <br />
			    &lt;UG&gt;       - применить команду только к сессиям групп пользователей с номером UG = &lt;UG&gt;<br />
			    &lt;T&gt;        - применить команду только к сессиям с trace char = &lt;T&gt;<br />
			-----    <br />
			Включение механизмов TRACE.<br />
			Включение/отключение TRACE для 'trace сhar':<br />
			  [CMD_TRACE_ON_&lt;T&gt;]  - включает  трассировку по 'trace сhar' для сессий с tc = &lt;T&gt;<br />
			  [CMD_TRACE_ON_ALL]  - включает  трассировку для сессий с любыми 'trace сhar'<br />
			  [CMD_TRACE_OFF_&lt;T&gt;] - выключает трассировку по 'trace сhar' для сессий с tc = &lt;T&gt;<br />
			  [CMD_TRACE_OFF_ALL] - выключает трассировку для сессий с любыми 'trace сhar'<br />
			 <br />
			Включение/отключение TRACE для 'пользователей:<br />
			  [CMD_TRACE_USER_ON {&lt;U_IP&gt; [+&lt;UG&gt;] | +&lt;UG&gt;} ] - включает  трассировку по пользователям с USER ip = U_IP и (или) с UG = &lt;UG&gt;<br />
			  [CMD_TRACE_USER_OFF]                          - выключает трассировку по пользователям<br />
			 <br />
			!!! Механизмы CMD_TRACE_ON_X и CMD_TRACE_USER_ON - работают независимо, то есть пакет попадет в трассировку если удовлетвоаряет любому из двух условий.
		</p>

		<p>
			Включение/отключение TRACE для пакетов не имеющих сессий:<br />
			  [CMD_TRACE_OUTDROP_ON]   - включает  трассировку для исходящих пакетов для которых не удалось создать сессию<br />
			  [CMD_TRACE_OUTDROP_OFF]  - выключает трассировку для исходящих пакетов для которых не удалось создать сессию<br />
			  [CMD_TRACE_LOCFRWD_ON]   - включает  трассировку для входящих пакетов для которых не удалось найти сессию<br />
			  [CMD_TRACE_LOCFRWD_OFF]  - выключает трассировку для входящих пакетов для которых не удалось найти сессию<br />
			 <br />
			Настройка дополнительной фильтрации пакетов TRACE:<br />
			  [CMD_TRACE_FILTER_SET_P [p&lt;pr&gt; [- &lt;pr_e&gt;]] [s&lt;pksz&gt; [- &lt;pksz_e&gt;]] [dI|O|B] [rD|A|B]] - включает фильтрацию по протоколу, размeру пакетов, направлению и статусу<br />
			    p&lt;pr&gt;   [- &lt;pr_e&gt;]   - фильтр по диапазону протоколов, также допустимо pT - tcp, pU - udp, pI - icmp, pO - other протоколы.<br />
			    s&lt;pksz&gt; [- &lt;pksz_e&gt;] - фильтр по размеру пакетов<br />
			    dI|O|B               - фильтр по направлению (direction) dI - только входящие, dO - только исходящие, dB - входящие и исходящие<br />
			    rD|A|B               - фильтр по статусу (result) rD - только DROP'ed, rA - только ACCEPT'ed, dB - DROP и ACCEPT<br />
			    <br />
			  [CMD_TRACE_FILTER_SET_{U|N|D|S} [&lt;ip&gt; [- &lt;ip_e&gt;]] [: &lt;port&gt; [- &lt;port_e&gt;]] ]- включает фильтрацию по адресам и портам (USER, NAT, DEST и SESSION DEST)<br />
			    U|N|D|S              - определяет к каким адресам применять команду U - USER, N - NAT, D - DEST, S - SESSION DEST        <br />
			    &lt;ip&gt; [- &lt;ip_e&gt;]      - фильтр по диапазону ip адресов<br />
			    :&lt;port&gt; [- &lt;port_e&gt;] - фильтр по диапазону портов
		</p>

		<p>
			Сброс дополнительных фильтров TRACE:    <br />
			  [CMD_TRACE_FILTER_SET_P]<br />
			  [CMD_TRACE_FILTER_SET_{U|N|D|S}]<br />
			 <br />
			Активация/деактивация (включение/отключение работы) дополнительного фильтра:<br />
			  [CMD_TRACE_FILTER_ON]<br />
			  [CMD_TRACE_FILTER_OFF]
		</p>

		<p>
			Разрешение трассировки пакетов:<br />
			  [CMD_TRACE_START]<br />
			Остановка трассровки пакетов:<br />
			  [CMD_TRACE_STOP]
		</p>

		<p>
			* Новые комманды в 1.01 (wv0_09)<br />
			  [CMD_RESET_CNT_ER]             - новая<br />
			  [CMD_STATIC_MAP_xxx ... ]     - новая<br />
			  [CMD_KILL_xxx ...]            - добавлено описание поля [p&lt;PROTO&gt;]<br />
			 <br />
			==============================================================<br />
			===== ==HOW_IT_WORK== Описание алгоритмов работы xt_ANAT =====<br />
			//TODO
		</p>

		<p>
			===================================================================================================<br />
			===== ==METODICS== Методики работы с xt_ANAT и его настройка, борьба со спамероами и вирусней =====<br />
			//TODO
		</p>
	</div>
</div>

<p>
	 
</p>

<p>
	 
</p>

<p>
	Запуск на 5.х ядрах и выше (есть готовые патчи от <a contenteditable="false" data-ipshover="" data-ipshover-target="https://forum.nag.ru/index.php?/profile/67417-vurd/&amp;do=hovercard" data-mentionid="67417" href="https://forum.nag.ru/index.php?/profile/67417-vurd/" rel="">@vurd</a> , см. ниже):
</p>

<div class="ipsSpoiler" data-ipsspoiler="">
	<div class="ipsSpoiler_header">
		<span>Скрытый текст</span>
	</div>

	<div class="ipsSpoiler_contents">
		<p>
			Тут мне  прислали попытку компиляции <strong>ANAT </strong>на последних версиях на 5.х ядре вот мои замечания, если что:
		</p>

		<p>
			 
		</p>

		<p>
			Ошибки:
		</p>

		<p>
			1) %ld
		</p>

		<p>
			%lld - это можно просто поправить изменив %ld на %lld, где просит компилятор.
		</p>

		<p>
			 
		</p>

		<p>
			2) proc_create
		</p>

		<p>
			проблему с proc_create надо решить подобно этому:
		</p>

		<p>
			<a href="https://github.com/dtrace4linux/linux/issues/143" rel="external nofollow">https://github.com/dtrace4linux/linux/issues/143</a>
		</p>

		<p>
			(надо поменять типы, сократить поля и всё будет ок)
		</p>

		<p>
			вызовов её много - ручной работы много, но она однообразная и не сложная
		</p>

		<p>
			 
		</p>

		<p>
			3) kernel_getsockopt
		</p>

		<p>
			пока можно просто закомментить строчки с 527 по 541 в xt_ANAT_pc_nf9, но диагностика ошибок сокета и их лог работать не будут. Надо копать как в новых версиях ядра получать информацию об ошибках в сокете (видимо через sock_error или sock_getsockopt, но как оно в kernel mode будет)....
		</p>

		<p>
			 
		</p>

		<p>
			В общем если кто поправит - пришлите ваш вариант или советы.
		</p>

		<p>
			Если кто-то захочет что-бы я сам глянул и поправил - вопрос решаемый, но не "бесплатно".
		</p>
	</div>
</div>

<p>
	 
</p>

<p>
	Если кто на 6.х пришлет лог ошибок - могу также глянуть!
</p>

<p>
	 
</p>

<p>
	=============================================================================
</p>

<p>
	Утилиты anf_xxx для обработки Netflow пакетов ANAT:
</p>

<p>
	 
</p>

<p>
	anf_capd_0_06_public
</p>

<p>
	<a href="https://disk.yandex.ru/d/XbCxikN5GLz-WQ" rel="external nofollow">https://disk.yandex.ru/d/XbCxikN5GLz-WQ</a>
</p>

<p>
	 
</p>

<p>
	Документация:
</p>

<div class="ipsSpoiler" data-ipsspoiler="">
	<div class="ipsSpoiler_header">
		<span>Скрытый текст</span>
	</div>

	<div class="ipsSpoiler_contents">
		<p>
			0.0.06<br />
			Документация<br />
			    Набор утилит anf_xxx предназначен для сбора данных по Netflow (nf9) от модуля Advanced asymmetric CG NAT xt_ANAT (ANAT) и их последующей обработки.<br />
			    Сборка проекта:<br />
			        make clean &amp;&amp; make all<br />
			        <br />
			    Примеры запуска<br />
			        ./anf_capd -h<br />
			        ./anf_capd -d ./tst -D<br />
			        ./anf_capd -d ./tst -p 3055 -b 127.0.0.1 -F 4000 -E
		</p>

		<p>
			        ./anf_prcf -f ./tst/d00001_20240722-0425.anf -p<br />
			        ./anf_prcf -f ./tst/d00001_20240722-0425.anf -P<br />
			        ./anf_prcf -f ./tst/d00001_20240722-0425.anf -o ./tst/d00002_20240131-0425.anf -I     <br />
			        ./anf_prcf -f ./tst/old.anf -o ./tst/new.anf -I 324<br />
			        ./anf_prcf -f ./tst/d00001_20240722-0425.an  -o ./tst/d00001_20240131-0425.ank -e  <br />
			        <br />
			    === anf_capd ===<br />
			    Для приема данных по протоколу Netflow  используется утилита anf_capd запущенная в режиме демона (опция -D).<br />
			    anf_capd открывает на прослушивание UDP сокет и записывает полученные данные в файлы &lt;fname&gt;.anf (файл ANF) в рабочий каталог указанный в обязательной опции -d.<br />
			    Файлы ANF создаются с заданным интервалом (опция -t). В начале интервала создается файл &lt;fname&gt;.an (файл AN) в который производится непосредственная запись.<br />
			    По истечении интервала происходит завершение работы с файлом AN и его переименование в &lt;fname&gt;.anf и открывается новый файл &lt;fname&gt;.an.<br />
			    В файле ANF помимо данных Netflow сохраняются данные о пакете, а также специальный заголовок и футер для индикации состояния файла.<br />
			    Просмотреть информацию в файле ANF можно с помощью утилиты anf_fprc (описана ниже).<br />
			    Для диагностики состояния своей работы anf_capd также создает в рабочем каталоге текстовый файл w&lt;ANF_ID&gt;_capd.wsf (файл capd_WSF).<br />
			    Файл capd_WSF перезаписывается примерно каждые 15 секунд (см. anf_util.h: #define ANU_WSF_UPDATE_S) и позволяет контролировать состояние экземпляра демона anf_capd.<br />
			    На одном сервере может быть запущено несколько экземпляров демона anf_capd с разными рабочими каталогами или с разными ANF_ID (опция -I).<br />
			    ВНИМАНИЕ! Запуск нескольких экземпляров демона anf_capd с одновременно одинаковыми рабочими каталогами и ANF_ID может привести к непредсказуемым последствиям!<br />
			    Для проверки наличия уже запущенного экземпляра демона можно проверить наличие файла capd_WSF в каталоге и процесса (ps aux | grep PID) c PID из файла capd_WSF.<br />
			    <br />
			    Замечания:<br />
			    - При большой нагрузке в качестве рабочего каталога рекомендуется использовать диски с высокой скоростью записи (SSD или IN_MEMORY).<br />
			    - Утилита anf_capd может запускаться как в режиме демона так и в режиме консоли. Для диагностики ошибок рекомендуется её запуск в режиме консоли с опцией -E.<br />
			    - Для корректной работы anf_capd на источнике (ANAT) и приемнике (anf_capd) должны быть установлены одинаковые порты Netflow (опция -p) и FLOWSET_ID (опция -F).<br />
			    - По умолчанию для anf_capd указаны порт и FLOWSET_ID совпадающие с настройками по умолчанию используемыми в ANAT.<br />
			    - Посмотреть значения настроек по умолчанию, а также список всех доступных опций можно с помощью команды "$&gt;anf_capd -h" (опция -h).<br />
			    - Можно собирать одним демон данные с нескольких серверов ANAT в один набор файлов ANF, но при этом рекомендуется использовать различные SOURCE_ID в Netflow.<br />
			    - если надо перезапустить демон anf_capd и при этом не потерять данные, можно поступить так:<br />
			        1) открываем новый поток nf9 с xt_ANAT на другой порт (меняем конфигурацию на лету);<br />
			        2) включить сбор nf9 другим (новым) экземпляром anf_capd с нового порта с новым ANF_ID или в другом рабочем каталоге;<br />
			        3) остановить (kill PID) старый экземпляром anf_capd<br />
			        4) отключить в xt_ANAT старый поток nf9 (если он больше не нужен).<br />
			        <br />
			    = ANF_ID =<br />
			    В заголовке файла ANF помимо прочих атрибутов есть специальный идентификатор ANF_ID который может быть задан при запуске anf_capd (опция -I).<br />
			    ANF_ID используется в двух целях: 1)для идентификации и разделения работы демонов (процессов) формирующих файлы ANF; 2)для формирования &lt;fname&gt; файла ANF.<br />
			    Изменение имени файла ANF не приводит к автоматическом изменению ANF_ID в заголовке файла, как и обратное. Изменить ANF_ID в заголовке можно с помощью anf_fprc.
		</p>

		<p>
			    = &lt;fname&gt; =<br />
			    Формат имени файла ANF следющий:<br />
			    d&lt;IIIII&gt;_&lt;YYYYMMDD&gt;-&lt;HHMM&gt;&lt;SS&gt;.anf где:<br />
			        &lt;IIIII&gt;    - 5 цифр которые являются дополненным нулями спереди ANF_ID<br />
			        &lt;YYYYMMDD&gt; - локальная дата на локальной машине в момент создания файла AN<br />
			        &lt;HHMM&gt;     - локальное время (часы, минуты) на локальной машине в момент создания файла AN<br />
			        &lt;SS&gt;       - локальное время (секунды) на локальной машине в момент создания файла AN, добавляется только если интервал (-t) меньше 60 секунд.<br />
			    <br />
			    === anf_fprc ===    <br />
			    anf_fprc - утилита для работы с файлами ANF (AN) и позволяет:<br />
			        - выводить данные из файлов в текстовом виде<br />
			        - проводить проверку целостности данных в файлах<br />
			        - частично восстанавливать поврежденные или неполные файлы, например, после некорректной остановки работы anf_capd (опция -o)<br />
			        - проводить фильтрацию данных при обработке по SOURCE_ID (опция -S)<br />
			        - заменять ANF_ID в заголовке нового файла (опция -I совместно с -o)<br />
			    Для запуска anf_fprc необходимо указать как минимум имя файла для обработки (опция -f), для формирования исправленного (нового) файла необходимо задать его имя (-o).<br />
			    Формат имени входящего (-f) и исходящего (-o) не имеют значение, за исключением использования опции -I c -о.<br />
			    Для вывода информации из пакетов nf9 в текстовом виде в stdout (консоль) используются следующие опции "печати":<br />
			        -p - выводить всю информацию"  (использование с другими опциями печати зависит от порядка их следования!!!)<br />
			        -e - выводить информацию с ошибками в данных<br />
			        -с - выводить информацию с корректными данными<br />
			        -i - выводить информацию о событиях (записях) nf9<br />
			        -k - выводить информацию о полученных пакетах nf9<br />
			        -r - выводить информацию из заголовка и футера файла ANF<br />
			    Для вызова anf_fprc из демонов или скриптов есть две дополнительные опции:<br />
			        -D - перенаправляет вывод ошибок в syslog, а не stderr (по умолчанию).<br />
			        -P - выводит (помимо согласно опций "печати") в конце в stdout специальный блок ANFENVIR с информацией для автоматической обработки результатов в скриптах.<br />
			    Формат и коды состояния и коды ошибок блока ANFENVIR можно найти в файле anf_fprc.h<br />
			        <br />
			    Замечания:<br />
			    - Для диагностики ошибок рекомендуется запуск в с опцией -E.<br />
			    - Посмотреть значения настроек по умолчанию, а также список всех доступных опций можно с помощью команды "&gt;anf_fprc -h" (опция -h).<br />
			    - При формирование нового файла (-o) если файл получил изменения в футер в поле sz_repair (см. anf_data.h) будет записана длина исходного файла.<br />
			    <br />
			    <br />
			    = Текстовые коды ошибок в выводе anf_fprc в stdout (см. anf_fprc.с: anfp_ChErrInfo()) =<br />
			        case 0: return  "OK_NER";    //OK: NO ERROR<br />
			        case 10: return "HDRSIZ";    //ERROR: HEADER SIZE READ BYTE<br />
			        case 11: return "HDRVER";    //ERROR: HEADER INCORRECT VERSION<br />
			        case 12: return "HDRAID";    //ERROR: HEADER INCORRECT ANF_ID DATA<br />
			        case 13: return "HDRAIZ";    //ERROR: HEADER ANF_ID = 0<br />
			        case 20: return "FSGSIZ";    //ERROR: FOOTER FF SIGNATURE SIZE READ BYTE<br />
			        case 21: return "FSGSF1";    //ERROR: FOOTER FF SIGNATURE FSGSF1 NOT 0xFF..FF<br />
			        case 22: return "FSGSF2";    //ERROR: FOOTER FF SIGNATURE FSGSF2 NOT 0xFF..FF<br />
			        case 23: return "FSGSF3";    //ERROR: FOOTER FF SIGNATURE FSGSF3 NOT 0xFF..FF<br />
			        case 24: return "FSGSF4";    //ERROR: FOOTER FF SIGNATURE FSGSF4 NOT 0xFF..FF<br />
			        case 25: return "FSGNFN";    //ERROR: FOOTER FF SIGNATURE NOT FOUND<br />
			        case 30: return "RECSIZ";    //ERROR: RECORD SIZE READ BYTE<br />
			        case 31: return "RECPKH";    //ERROR: RECORD IS PKH (PACKET HEADER)<br />
			        case 32: return "RECFSG";    //ERROR: RECORD IS FSG (FOOTER SIGNATURE)<br />
			        case 33: return "RECIGN";    //ERROR: RECORD IS IGN (IGNORE EVENT VALUE = 0)<br />
			        case 34: return "RECUNK";    //ERROR: RECORD IS UNK (UNKNOWN EVENT VALUE)<br />
			        case 40: return "PKERCN";    //WARNING: PKT RECORD COUNT NOT EQUAL PKH HEADER VALUE<br />
			        case 50: return "FTRSIZ";    //ERROR: FOOTER SIZE READ BYTE         <br />
			        case 51: return "FTRGRB";    //ERROR: FOOTER SIZE TOO LONG (SOME GARBAGE AT THE END)         <br />
			        case 52: return "FTRCNT";    //ERROR: PACKETS AND RECORDS COUNTS NOT EQUAL FOOTER INFO VALUE         <br />
			        return "ERRUNK";             //ERROR: UNKNOWN ERROR
		</p>

		<p>
			========================================================================================================<br />
			Вы можете использовать настоящее ПО исключительно в некомерческих целях.<br />
			Желающие отблагодарить автора или использовать код для коммерческих целей могут обратиться на почту: sdy@mail.ru
		</p>

		<p>
			Ваш автор, Сербулов Дмитрий (aka SDY).
		</p>
	</div>
</div>

<p>
	 
</p>

<p>
	 =============================================================================
</p>

<p>
	Версии xt_ANAT с патчами от <a contenteditable="false" data-ipshover="" data-ipshover-target="https://forum.nag.ru/index.php?/profile/67417-vurd/&amp;do=hovercard" data-mentionid="67417" href="https://forum.nag.ru/index.php?/profile/67417-vurd/" rel="">@vurd</a>  для 5.x и 6.x ядер (данные об их работе у меня пока нет):
</p>
<iframe allowfullscreen="" data-controller="core.front.core.autosizeiframe" data-embedauthorid="67417" data-embedcontent="" data-embedid="embed919447592" src="https://forum.nag.ru/index.php?/topic/195398-anat-advanced-asymmetric-cg-nat-xt_anat-module-yadra-dlya-linux/&amp;do=embed&amp;comment=1746301&amp;embedComment=1746301&amp;embedDo=findComment" style="height:295px;max-width:500px;"></iframe>

<p>
	=============================================================================
</p>

<p>
	<span>2025.02.21 </span>
</p>

<p>
	Настройки netflow ANAT могут конфликтовать с UTM (при подсчете трафика). Рекомендуется в качестве решения заменить в xt_ANAT_pc_nf9.c значение <span><span style="background-color:#ffffff;color:#000000;">AXT_NF9_PK_ID_SSTART  с 231 на 323.</span></span>
</p>

<p>
	 
</p>

<p>
	Также рекомендуется заменить strlcpy на strscpy в xt_ANAT_pc_work.c для работы на поздних версиях ядра
</p>

<p>
	 
</p>

<p>
	Код патча от <a contenteditable="false" data-ipshover="" data-ipshover-target="https://forum.nag.ru/index.php?/profile/4008-shumbor/&amp;do=hovercard" data-mentionid="4008" href="https://forum.nag.ru/index.php?/profile/4008-shumbor/" rel="">@ShumBor</a>  ниже
</p>

<div class="ipsSpoiler" data-ipsspoiler="">
	<div class="ipsSpoiler_header">
		<span>Скрытый текст</span>
	</div>

	<div class="ipsSpoiler_contents">
		<p>
			diff -u axt_NAT_v0_09_public_01_v6_patch/xt_ANAT_pc_nf9.c<br />
			axt_NAT_v0_09_public_01_v6.10_patch/xt_ANAT_pc_nf9.c<br />
			--- axt_NAT_v0_09_public_01_v6_patch/xt_ANAT_pc_nf9.c        2024-07-19 13:22:54.000000000<br />
			+0300<br />
			+++ axt_NAT_v0_09_public_01_v6.10_patch/xt_ANAT_pc_nf9.c        2025-01-31<br />
			10:56:31.000000000 +0300<br />
			@@ -74,7 +74,7 @@<br />
			 <br />
			 // pdu pk not standart fields id<br />
			 #define AXT_NF9_PK_ID_EVENT                                        230                        //event: 0-depricated (internal use); 1-new<br />
			ses create; 2-ses stoped; 3-ses keepalive<br />
			-#define AXT_NF9_PK_ID_SSTART                                231<br />
			+#define AXT_NF9_PK_ID_SSTART                                323<br />
			 <br />
			 // pdu pk parts size<br />
			 #define AXT_NF9_PK_HDR_SIZE                 (sizeof(struct axt_nf9_pk_hdr_s))<br />
			diff -u axt_NAT_v0_09_public_01_v6_patch/xt_ANAT_pc_work.c<br />
			axt_NAT_v0_09_public_01_v6.10_patch/xt_ANAT_pc_work.c<br />
			--- axt_NAT_v0_09_public_01_v6_patch/xt_ANAT_pc_work.c        2024-01-25 03:28:26.000000000<br />
			+0300<br />
			+++ axt_NAT_v0_09_public_01_v6.10_patch/xt_ANAT_pc_work.c        2025-01-31<br />
			11:04:19.000000000 +0300<br />
			@@ -134,7 +134,7 @@<br />
			         if (!(l_cpz = &amp;sf[0]-&amp;sn[0])) return AXT_STRE_EMPTY; // it is empty<br />
			         //printk(KERN_INFO "xt_ANAT DEBUG: axt_prm_gettrimbuf sn : %s sf: %s l_cpz %ld\n",<br />
			sn ,sf, l_cpz);<br />
			         if (l_cpz &gt; i_buf_sz-1) return AXT_STRE_NOBUF; // it is too long<br />
			-        strlcpy(v_buf, sn, l_cpz+1);<br />
			+        strscpy(v_buf, sn, l_cpz+1);<br />
			         v_buf[l_cpz] = '\0';<br />
			         return 0;<br />
			 }
		</p>
	</div>
</div>

<p>
	 
</p>
]]></description><guid isPermaLink="false">195398</guid><pubDate>Thu, 18 Jul 2024 21:56:55 +0000</pubDate></item><item><title>&#x421;&#x435;&#x440;&#x432;&#x438;&#x441; &#x43A;&#x430;&#x440;&#x442; &#x441; &#x43C;&#x435;&#x442;&#x43A;&#x430;&#x43C;&#x438;, &#x43B;&#x438;&#x43D;&#x438;&#x44F;&#x43C;&#x438;, &#x43E;&#x43F;&#x438;&#x441;&#x430;&#x43D;&#x438;&#x44F;&#x43C;&#x438;</title><link>https://forum.nag.ru/index.php?/topic/212076-servis-kart-s-metkami-liniyami-opisaniyami/</link><description><![CDATA[<p>
	Приветствую. А кто какие сервисы использует для рисования карт на подобии конструктора яндекс карт? Легко и просто поставить метки, линии и т.д. без лишнего функционала, но отсутствие возможности редактирования несколькими пользователями на яндекс картах портит ситуацию.
</p>
]]></description><guid isPermaLink="false">212076</guid><pubDate>Thu, 16 Apr 2026 11:52:08 +0000</pubDate></item><item><title>Ipmi &#x438; &#x441;&#x435;&#x440;&#x432;&#x435;&#x440; SNR-SR2312</title><link>https://forum.nag.ru/index.php?/topic/212071-ipmi-i-server-snr-sr2312/</link><description><![CDATA[<p>
	Добрый день ! <br />
	<br />
	Подскажите, можно ли выполнить полный сброс BMC к заводским настройкам (factory reset) ? Какие способы доступны?
</p>
]]></description><guid isPermaLink="false">212071</guid><pubDate>Tue, 14 Apr 2026 17:02:01 +0000</pubDate></item><item><title>&#x41E;&#x433;&#x440;&#x430;&#x43D;&#x438;&#x447;&#x435;&#x43D;&#x438;&#x435; &#x441;&#x43A;&#x43E;&#x440;&#x43E;&#x441;&#x442;&#x438; &#x43D;&#x430; Windows 10</title><link>https://forum.nag.ru/index.php?/topic/212048-ogranichenie-skorosti-na-windows-10/</link><description><![CDATA[<p>
	Коллеги, всем доброго времени суток.
</p>

<p>
	Столкнулся с такой проблемой, что при поднятии PPPoE/PPTP сессии на Win10 (проверял на разных ПК) входящая скорость выше 400 Мбит/сек не поднимается, на отдачу почти 1 Гбит/сек. Утилизация ЦП 42% вроде как не должно упираться.
</p>

<p>
	Если поднять через гигабитный роутер, то проблем со скоростью вообще нет, входящая 994, исходящая 991. Все тесты и замеры происходят внутри сети, поэтому никакого влияния внешних факторов нет.
</p>

<p>
	Подскажите, может есть где что покрутить на винде?
</p>
]]></description><guid isPermaLink="false">212048</guid><pubDate>Mon, 06 Apr 2026 06:40:16 +0000</pubDate></item><item><title>IPv6 &#x43D;&#x430; &#x441;&#x435;&#x442;&#x438; &#x43E;&#x43F;&#x435;&#x440;&#x430;&#x442;&#x43E;&#x440;&#x430;</title><link>https://forum.nag.ru/index.php?/topic/212043-ipv6-na-seti-operatora/</link><description><![CDATA[<p>
	Кто реализовал у себя: поделитесь опытом.
</p>

<p>
	Как адреса выдаёте? <strong>RA</strong>? <strong>DHCP6</strong>?
</p>

<p>
	Какие опции отдаёте, кроме собственно самих адресов с префиксами и <strong>DNS</strong>?
</p>

<p>
	Какие проблемы встретили?
</p>

<p>
	Какие костыли заюзали?
</p>
]]></description><guid isPermaLink="false">212043</guid><pubDate>Thu, 02 Apr 2026 21:36:11 +0000</pubDate></item><item><title>Max, PHP &#x438; cURL</title><link>https://forum.nag.ru/index.php?/topic/212017-max-php-i-curl/</link><description><![CDATA[<p>
	Переделываю ботов на Макс.
</p>

<p>
	Почти все сделал, но столкнулся со странной проблемой.
</p>

<p>
	Не работает редактирование сообщений (PUT messages) и их закрепление (PUT chats/{$chat}/pin).
</p>

<p>
	 
</p>

<p>
	На своей стороне делаю следующее:
</p>

<p>
	1. Задаю заголовок Content-Type: application/json; charset=utf-8
</p>

<p>
	2. Для POST-запросов (которые работают) задаю опции CURLOPT_POST и затем CURLOPT_POSTFIELDS, в которую передаю параметры (закодированные json_encode). Для PUT-запросов вначале задаю CURLOPT_CUSTOMREQUEST (с указанием PUT), затем CURLOPT_POSTFIELDS (с параметрами, закодированными json_encode), затем добавляю заголовок Content-Length.
</p>

<p>
	3. Затем выполняю запрос. Но вместо выполнения сервер Макса сообщает, что "No access token", хотя токен я передаю.
</p>

<p>
	 
</p>

<p>
	Если для curl включить отладку, то получается странное:
</p>

<pre class="ipsCode">* Host platform-api.max.ru:443 was resolved.
...
* using HTTP/2
* [HTTP/2] [1] OPENED stream for https://platform-api.max.ru/messages?message_id=mid.***
* [HTTP/2] [1] [:method: PUT]
* [HTTP/2] [1] [:scheme: https]
* [HTTP/2] [1] [:authority: platform-api.max.ru]
* [HTTP/2] [1] [:path: /messages?message_id=mid.***]
* [HTTP/2] [1] [accept: */*]
* [HTTP/2] [1] [content-length: 14]
* [HTTP/2] [1] [content-type: application/x-www-form-urlencoded]
&gt; PUT /messages?message_id=mid.*** HTTP/2
Host: platform-api.max.ru
Accept: */*
Content-Length: 14
Content-Type: application/x-www-form-urlencoded

* old SSL session ID is stale, removing
&lt; HTTP/2 401 
&lt; server: kittenx
&lt; date: Sat, 21 Mar 2026 11:12:49 GMT
&lt; content-type: application/json; charset=utf-8
&lt; content-length: 51
&lt; cache-control: no-cache
&lt; strict-transport-security: max-age=2592000;includeSubdomains
&lt; 
* Connection #0 to host platform-api.max.ru left intact
</pre>

<p>
	Смущают две вещи. Во-первых, тип почему-то "application/x-www-form-urlencoded", хотя я задаю правильный тип:
</p>

<pre class="ipsCode prettyprint lang-php prettyprinted"><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">isset</span><span class="pun">(</span><span class="pln">$data</span><span class="pun">))</span><span class="pln">
</span><span class="pun">{</span><span class="pln">
	curl_setopt</span><span class="pun">(</span><span class="pln">$this</span><span class="pun">-&gt;</span><span class="pln">curl</span><span class="pun">,</span><span class="pln"> CURLOPT_POSTFIELDS</span><span class="pun">,</span><span class="pln"> $data</span><span class="pun">);</span><span class="pln">
	curl_setopt</span><span class="pun">(</span><span class="pln">$this</span><span class="pun">-&gt;</span><span class="pln">curl</span><span class="pun">,</span><span class="pln"> CURLOPT_HTTPHEADER</span><span class="pun">,</span><span class="pln"> </span><span class="pun">[</span><span class="str">"Content-Length: "</span><span class="pln"> </span><span class="pun">.</span><span class="pln"> strlen</span><span class="pun">(</span><span class="pln">$data</span><span class="pun">)]);</span><span class="pln">
</span><span class="pun">}</span><span class="pln">
curl_setopt</span><span class="pun">(</span><span class="pln">$this</span><span class="pun">-&gt;</span><span class="pln">curl</span><span class="pun">,</span><span class="pln"> CURLOPT_CUSTOMREQUEST</span><span class="pun">,</span><span class="pln"> $method</span><span class="pun">);</span></pre>

<p>
	И судя по наличию и значение заголовка Content-Length — этот код выполняется.
</p>

<p>
	Во-вторых, в отладочном выводе почему-то нет тела запроса. Или в отладке он просто не выводится, или при указании CURLOPT_CUSTOMREQUEST запрос изменяется.
</p>

<p>
	 
</p>

<p>
	Никто с таким не сталкивался?
</p>
<p> </p><p>
	Вот отладочный вывод POST-запроса:
</p>

<pre class="ipsCode">* Host platform-api.max.ru:443 was resolved.
...
* using HTTP/2
* [HTTP/2] [1] OPENED stream for https://platform-api.max.ru/messages?chat_id=-***
* [HTTP/2] [1] [:method: POST]
* [HTTP/2] [1] [:scheme: https]
* [HTTP/2] [1] [:authority: platform-api.max.ru]
* [HTTP/2] [1] [:path: /messages?chat_id=-***]
* [HTTP/2] [1] [accept: */*]
* [HTTP/2] [1] [authorization: ***]
* [HTTP/2] [1] [content-type: application/json; charset=utf-8]
* [HTTP/2] [1] [content-length: 438]
&gt; POST /messages?chat_id=-*** HTTP/2
Host: platform-api.max.ru
Accept: */*
Authorization: ***
Content-Type: application/json; charset=utf-8
Content-Length: 438

* old SSL session ID is stale, removing
&lt; HTTP/2 200 
&lt; server: kittenx
&lt; date: Sat, 21 Mar 2026 11:26:27 GMT
&lt; content-type: application/json; charset=utf-8
&lt; content-length: 1088
&lt; vary: Accept-Encoding
&lt; cache-control: no-cache
&lt; strict-transport-security: max-age=2592000;includeSubdomains
&lt; 
* Connection #0 to host platform-api.max.ru left intact
</pre>

<p>
	Судя по нему — тело запроса в отладку не выводится.
</p>

<p>
	Но в нем, в отличии от предыдущих запросов — все заголовки передаются нормально.
</p>

<p>
	 
</p>

<p>
	Пробовал вначале задать тип запроса, а затем все остальное — ничего не поменялось.
</p>
]]></description><guid isPermaLink="false">212017</guid><pubDate>Sat, 21 Mar 2026 11:25:53 +0000</pubDate></item><item><title>RusBilling_Standard &#x2014; &#x43F;&#x440;&#x43E;&#x441;&#x442;&#x43E;&#x439; &#x438; &#x43D;&#x430;&#x434;&#x435;&#x436;&#x43D;&#x44B;&#x439; &#x431;&#x438;&#x43B;&#x43B;&#x438;&#x43D;&#x433; &#x434;&#x43B;&#x44F; &#x43C;&#x430;&#x43B;&#x44B;&#x445; &#x438; &#x441;&#x440;&#x435;&#x434;&#x43D;&#x438;&#x445; &#x43F;&#x440;&#x43E;&#x432;&#x430;&#x439;&#x434;&#x435;&#x440;&#x43E;&#x432;</title><link>https://forum.nag.ru/index.php?/topic/211944-rusbilling_standard-%E2%80%94-prostoy-i-nadezhnyy-billing-dlya-malyh-i-srednih-provayderov/</link><description><![CDATA[<p>
	RusBiling_Standard — это минимально необходимая функциональность для полноценной работы оператора связи. Сейчас доступна рабочая версия, соответствующая основным требованиям бизнеса. Хотя продукт пока не способен удовлетворить все запросы сложных операторских конфигураций, он успешно справляется с большинством повседневных задач операторов малого и среднего уровня.
</p>

<p>
	Сегодня наши усилия направлены на дальнейшее развитие и расширение возможностей продукта. Но уже сейчас биллинг готов качественно решить большинство стандартных задач управления абонентами и финансовым учётом.
</p>

<p>
	Однако впереди ещё много работы, которую невозможно осуществить без инвестиций. Именно поэтому мы решили запустить сбор средств на платформе <a href="https://planeta.ru/campaigns/rusbilling" rel="external nofollow">PLANETA.RU</a>, чтобы привлечь средства на разработку и модернизацию нашей системы.
</p>

<p>
	 
</p>

<p>
	<br />
	Если вы заинтересованы в тестировании рабочей версии продукта, приглашаем ознакомиться с <a href="https://rusbilling.ru/demo/" rel="external nofollow">демонстрационной версией</a> на нашем сайте.
</p>
]]></description><guid isPermaLink="false">211944</guid><pubDate>Mon, 23 Feb 2026 16:53:33 +0000</pubDate></item><item><title>DHCP KEA</title><link>https://forum.nag.ru/index.php?/topic/149067-dhcp-kea/</link><description><![CDATA[
<p>
	Доброе время суток.
</p>

<p>
	Кто работал (работает) с KEA , поделитесь наработками по использованию mysql и option82. Пример из isc-dhcp
</p>

<p>
	 
</p>

<pre class="ipsCode prettyprint lang-html prettyprinted">
<span class="pln">class "port-5"
{
 match if binary-to-ascii (10, 8, "", suffix( option agent.circuit-id, 1)) = "5";
}

pool {
  range 192.168.1.10;
  allow members of "port-5";
}</span></pre>

<p>
	 
</p>

<p>
	Как подобное реализовывается в KEA ? Средствами mysql, средствами записи в файл?
</p>

<p>
	Ссылки на документацию мне ведомы, но понять и что-то реализовать по ним не получилось. Сам сервер поднят и работает.
</p>

<p>
	Спасибо!
</p>
]]></description><guid isPermaLink="false">149067</guid><pubDate>Sat, 27 Apr 2019 06:17:13 +0000</pubDate></item><item><title>&#x421;&#x431;&#x440;&#x43E;&#x441; &#x441;&#x435;&#x441;&#x441;&#x438;&#x438; &#x43D;&#x430; SSG &#x447;&#x435;&#x440;&#x435;&#x437; CoA</title><link>https://forum.nag.ru/index.php?/topic/211982-sbros-sessii-na-ssg-cherez-coa/</link><description><![CDATA[<p>
	Застрял тут с одним вопросом, может быть общественность натолкнет на мысль, почему не получается?
</p>

<p>
	 
</p>

<p>
	Есть пользователи, которые подключаются по PPPoE, сессии терминируются на Ericsson SE и Cisco ASR.
</p>

<p>
	Был скрипт на PHP (с модулем php-radius), который управлял некоторыми сессиями, для действий, который не умеет биллинг. В основном это сброс сессий и изменение скорости доступа.
</p>

<p>
	В программном исполнении это был radius_create_request (с типом RADIUS_COA_REQUEST или RADIUS_DISCONNECT_REQUEST), формирование параметров запроса (radius_put_attr и radius_put_vendor_attr), отправка запроса, обработка результатов.
</p>

<p>
	Все это работало на десктопном ПК уже несколько лет и внимания не требовало. PHP был старой версии (кажется 5.2), ОС еще старше.
</p>

<p>
	 
</p>

<p>
	Недавно пришлось обновить ОС, поставил Ubuntu 24. Из коробки там ставится PHP версии 8.2 или 8.3, если постараться, то можно поставить 7.4. Но проблема в том, что модуль PECL php-radius несовместим с PHP8. Вместо него нужно использовать библиотеку dapphp/radius (чистый PHP).
</p>

<p>
	Скрипт адаптировал, в чем-то эта библиотека даже удобнее, чем php-radius. Но почему-то на Cisco не работает сброс сессий.
</p>

<p>
	 
</p>

<p>
	На Ericsson сессии сбрасываются. Для идентификации сессии указываю атрибуты Acct-Session-Id, Framed-IP-Address, RBN-Context_Name, User-Name, затем отправляю запрос с типом 40 (TYPE_DISCONNECT_REQUEST) и сессия разрывается. В логах все прозрачно:
</p>

<div class="ipsSpoiler" data-ipsspoiler="">
	<div class="ipsSpoiler_header">
		<span>Скрытый текст</span>
	</div>

	<div class="ipsSpoiler_contents">
		<pre class="ipsCode">2026-03-06 12:44:38 DEBUG: Added Attribute 26 (Vendor-Specific), format vsa, value 0x0000093004075050504f45
2026-03-06 12:44:38 DEBUG: Added Attribute 1 (User-Name), format T, value ***
2026-03-06 12:44:38 DEBUG: Added Attribute 8 (Framed-IP-Address), format A, value ***.***.***.***
2026-03-06 12:44:38 DEBUG: Added Attribute 49 (Acct-Terminate-Cause), format I, value 6
2026-03-06 12:44:38 DEBUG: Added Attribute 55 (Event-Timestamp), format I, value 1772801078
2026-03-06 12:44:38 DEBUG: Connect to 10.255.***.***:1700
2026-03-06 12:44:38 DEBUG: Packet type 40 (Disconnect-Request) sent to 10.255.***.***
2026-03-06 12:44:38 DEBUG: Attribute 26 (Vendor-Specific), length (11), format vsa, value 0x0000093004075050504f45
2026-03-06 12:44:38 DEBUG: Attribute 1 (User-Name), length (7), format T, value ***
2026-03-06 12:44:38 DEBUG: Attribute 8 (Framed-IP-Address), length (4), format A, value ***.***.***.***
2026-03-06 12:44:38 DEBUG: Attribute 49 (Acct-Terminate-Cause), length (4), format I, value 6
2026-03-06 12:44:38 DEBUG: Attribute 55 (Event-Timestamp), length (4), format I, value 1772801078
2026-03-06 12:44:38 DEBUG: Packet type 41 (Disconnect-ACK) received
2026-03-06 12:44:38 DEBUG: Attribute 101 (Error-Cause Attribute), length 4, format I, value 200
2026-03-06 12:44:38 DEBUG: Attribute 55 (Event-Timestamp), length 4, format I, value 1772801078
</pre>

		<p>
			 
		</p>
	</div>
</div>

<p>
	В принципе набор атрибутов избыточен, достаточно и одного только Acct-Session-Id или Framed-IP-Address.
</p>

<p>
	 
</p>

<p>
	А вот для Cisco этого недостаточно:
</p>

<div class="ipsSpoiler" data-ipsspoiler="">
	<div class="ipsSpoiler_header">
		<span>Скрытый текст</span>
	</div>

	<div class="ipsSpoiler_contents">
		<pre class="ipsCode">2026-03-06 12:47:58 DEBUG: Added Attribute 44 (Acct-Session-Id), format S, value 255/6/16/***
2026-03-06 12:47:58 DEBUG: Added Attribute 26 (Vendor-Specific), format vsa, value 0x0000093004075050504f45
2026-03-06 12:47:58 DEBUG: Added Attribute 1 (User-Name), format T, value ***
2026-03-06 12:47:58 DEBUG: Added Attribute 8 (Framed-IP-Address), format A, value ***.***.***.***
2026-03-06 12:47:58 DEBUG: Added Attribute 49 (Acct-Terminate-Cause), format I, value 6
2026-03-06 12:47:58 DEBUG: Added Attribute 55 (Event-Timestamp), format I, value 1772801278
2026-03-06 12:47:58 DEBUG: Connect to 10.255.***.***:1700
2026-03-06 12:47:58 DEBUG: Packet type 40 (Disconnect-Request) sent to 10.255.***.***
2026-03-06 12:47:58 DEBUG: Attribute 44 (Acct-Session-Id), length (21), format S, value 255/6/16/***
2026-03-06 12:47:58 DEBUG: Attribute 26 (Vendor-Specific), length (11), format vsa, value 0x0000093004075050504f45
2026-03-06 12:47:58 DEBUG: Attribute 1 (User-Name), length (8), format T, value ***
2026-03-06 12:47:58 DEBUG: Attribute 8 (Framed-IP-Address), length (4), format A, value ***.***.***.***
2026-03-06 12:47:58 DEBUG: Attribute 49 (Acct-Terminate-Cause), length (4), format I, value 6
2026-03-06 12:47:58 DEBUG: Attribute 55 (Event-Timestamp), length (4), format I, value 1772801278
2026-03-06 12:47:58 DEBUG: Packet type 42 (Disconnect-NAK) received
2026-03-06 12:47:58 DEBUG: Attribute 18 (Reply-Message), length 19, format T, value No Matching Session
2026-03-06 12:47:58 DEBUG: Attribute 101 (Error-Cause Attribute), length 4, format I, value 404
</pre>

		<p>
			 
		</p>
	</div>
</div>

<p>
	Запрос отклоняется (NAK), в ответе сообщает Reply-Message:No-Matching-Session и Error-Cause:Invalid-Request. Не могу понять, чего ему не хватает.
</p>

<p>
	 
</p>

<p>
	При этом если попробовать не сбросить сессию, а изменить ее таймаут, то переданных атрибутов достаточно для идентификации сессии:
</p>

<div class="ipsSpoiler" data-ipsspoiler="">
	<div class="ipsSpoiler_header">
		<span>Скрытый текст</span>
	</div>

	<div class="ipsSpoiler_contents">
		<pre class="ipsCode">2026-03-06 12:52:06 DEBUG: Added Attribute 44 (Acct-Session-Id), format S, value 255/6/16/***
2026-03-06 12:52:06 DEBUG: Added Attribute 26 (Vendor-Specific), format vsa, value 0x0000093004075050504f45
2026-03-06 12:52:06 DEBUG: Added Attribute 1 (User-Name), format T, value ***
2026-03-06 12:52:06 DEBUG: Added Attribute 8 (Framed-IP-Address), format A, value ***.***.***.***
2026-03-06 12:52:06 DEBUG: Added Attribute 27 (Session-Timeout), format I, value 100000
2026-03-06 12:52:06 DEBUG: Added Attribute 55 (Event-Timestamp), format I, value 1772801526
2026-03-06 12:52:06 DEBUG: Connect to 10.255.***.***:1700
2026-03-06 12:52:06 DEBUG: Packet type 43 (CoA-Request) sent to 10.255.***.***
2026-03-06 12:52:06 DEBUG: Attribute 44 (Acct-Session-Id), length (21), format S, value 255/6/16/***
2026-03-06 12:52:06 DEBUG: Attribute 26 (Vendor-Specific), length (11), format vsa, value 0x0000093004075050504f45
2026-03-06 12:52:06 DEBUG: Attribute 1 (User-Name), length (8), format T, value ***
2026-03-06 12:52:06 DEBUG: Attribute 8 (Framed-IP-Address), length (4), format A, value ***.***.***.***
2026-03-06 12:52:06 DEBUG: Attribute 27 (Session-Timeout), length (4), format I, value 100000
2026-03-06 12:52:06 DEBUG: Attribute 55 (Event-Timestamp), length (4), format I, value 1772801526
2026-03-06 12:52:06 DEBUG: Packet type 44 (CoA-ACK) received
2026-03-06 12:52:06 DEBUG: Attribute 26 (Vendor-Specific), length 19, format vsa, Vendor-Id: 9, Vendor-type: 250, Attribute-specific: S***.***.***.***
2026-03-06 12:52:06 DEBUG: Attribute 26 (Vendor-Specific), length 27, format vsa, Vendor-Id: 9, Vendor-type: 250, Attribute-specific: $IVirtual-Access2.623
</pre>

		<p>
			 
		</p>
	</div>
</div>

<p>
	Запрос выполняется успешно (ACK), причем тут достаточно одного только Acct-Session-Id или Framed-IP-Address.
</p>

<p>
	 
</p>

<p>
	Чего Cisco не хватает, чтобы сессию сбросить?
</p>
]]></description><guid isPermaLink="false">211982</guid><pubDate>Fri, 06 Mar 2026 12:57:59 +0000</pubDate></item><item><title>Disk Partition Software AOMEI in Real-World IT Environments: Practical Use Cases and Limitations</title><link>https://forum.nag.ru/index.php?/topic/211976-disk-partition-software-aomei-in-real-world-it-environments-practical-use-cases-and-limitations/</link><description><![CDATA[<p>
	Disk management rarely gets attention until something breaks.
</p>

<p>
	A failed bootloader, a full system partition after updates, a rushed SSD upgrade across multiple office machines, or the need to convert legacy MBR disks to GPT without reinstalling everything. In real-world IT environments, these are not theoretical scenarios. They happen during migrations, hardware refresh cycles, and sometimes at the worst possible moment.
</p>

<p>
	In this post, I want to share a practical discussion around disk partition software AOMEI not from a marketing perspective, but from the standpoint of real operational use. Where does it fit? When does it help? And where are its limitations?
</p>

<p>
	This topic is especially relevant for sysadmins, network engineers, and infrastructure teams handling Windows-based systems in production.
</p>

<p>
	<b>Why Partition Management Still Matters in Modern Infrastructure</b>
</p>

<p>
	Even with virtualization, cloud integration, and large SSDs, disk partition structure still affects:
</p>

<ul type="disc">
	<li>
		System stability
	</li>
	<li>
		Backup strategies
	</li>
	<li>
		Recovery speed
	</li>
	<li>
		Upgrade flexibility
	</li>
	<li>
		Storage scalability
	</li>
</ul>

<p>
	Poor partition planning often leads to:
</p>

<ul type="disc">
	<li>
		System partition running out of space
	</li>
	<li>
		Complex OS migrations
	</li>
	<li>
		Boot issues after firmware changes
	</li>
	<li>
		Inability to expand storage without downtime
	</li>
</ul>

<p>
	Built-in tools can handle basic cases. But in real-world environments, we often need more flexibility.
</p>

<p>
	<b>Where Disk Partition Software AOMEI Fits</b>
</p>

<p>
	<a href="https://ordersoftwarekeys.com/product/aomei-partition-assistant-professional-edition-cd-key-lifetime-2-pc-license-key/" rel="external nofollow">Disk partition software AOMEI</a> is primarily a Windows-based partition management tool designed for both individual systems and small-to-medium IT environments.
</p>

<p>
	Its relevance becomes clear in situations like:
</p>

<ul type="disc">
	<li>
		Extending system partitions without reinstalling Windows
	</li>
	<li>
		Converting MBR to GPT without data loss
	</li>
	<li>
		Migrating OS from HDD to SSD
	</li>
	<li>
		Cloning disks for deployment
	</li>
	<li>
		Rebuilding damaged MBR
	</li>
	<li>
		Managing partitions via bootable media
	</li>
</ul>

<p>
	Let’s break down these use cases in a practical way.
</p>

<p>
	 
</p>

<p>
	<b>Practical Use Cases in Production Environments</b>
</p>

<p>
	<b>1. Extending the System Partition Without Reinstallation</b>
</p>

<p>
	One of the most common issues in Windows environments: the C: drive fills up after years of updates and software installations.
</p>

<p>
	Built-in Windows Disk Management often cannot extend the system partition if unallocated space is not directly adjacent.
</p>

<p>
	With disk partition software AOMEI, you can:
</p>

<ul type="disc">
	<li>
		Move partitions
	</li>
	<li>
		Merge adjacent partitions
	</li>
	<li>
		Extend C: without deleting volumes
	</li>
</ul>

<p>
	In small business environments or remote branches, this avoids complete OS reinstallation and hours of configuration work.
</p>

<p>
	 
</p>

<p>
	<b>2. MBR to GPT Conversion During OS Upgrades</b>
</p>

<p>
	With newer Windows versions requiring UEFI + GPT for full feature support, legacy systems become problematic.
</p>

<p>
	Traditional conversion methods require deleting partitions. That’s not acceptable in production without downtime planning.
</p>

<p>
	AOMEI allows:
</p>

<ul type="disc">
	<li>
		Converting MBR to GPT without deleting partitions
	</li>
	<li>
		Maintaining existing data
	</li>
	<li>
		Preparing systems for UEFI boot
	</li>
</ul>

<p>
	However, administrators must verify firmware compatibility before conversion. If the motherboard does not support UEFI, conversion alone will not make the system bootable.
</p>

<p>
	 
</p>

<p>
	<b>3. OS Migration from HDD to SSD</b>
</p>

<p>
	In office refresh projects, replacing HDDs with SSDs is common. The challenge is avoiding manual OS reinstallation on every machine.
</p>

<p>
	Using disk partition software AOMEI, you can:
</p>

<ul type="disc">
	<li>
		Migrate only the OS partition
	</li>
	<li>
		Automatically resize partitions to fit smaller SSDs
	</li>
	<li>
		Align partitions for SSD performance
	</li>
</ul>

<p>
	This significantly reduces deployment time. Instead of reinstalling Windows and rejoining domains, you migrate and reboot.
</p>

<p>
	For small-scale deployments (10–50 machines), this can save days of work.
</p>

<p>
	 
</p>

<p>
	<b>4. Disk Cloning for Standardized Workstations</b>
</p>

<p>
	In educational labs, small ISPs, or branch offices, standard workstation images are often required.
</p>

<p>
	Disk cloning allows:
</p>

<ul type="disc">
	<li>
		Preparing a master system
	</li>
	<li>
		Cloning configuration to multiple drives
	</li>
	<li>
		Reducing manual configuration steps
	</li>
</ul>

<p>
	Disk partition software AOMEI supports sector-by-sector cloning as well as intelligent cloning (copying only used sectors).
</p>

<p>
	However, for large enterprise imaging, dedicated deployment solutions may still be more efficient.
</p>

<p>
	 
</p>

<p>
	<b>5. Bootable Media for Recovery</b>
</p>

<p>
	When a system doesn’t boot, internal tools are useless.
</p>

<p>
	AOMEI allows creation of bootable WinPE-based media to:
</p>

<ul type="disc">
	<li>
		Manage partitions offline
	</li>
	<li>
		Rebuild MBR
	</li>
	<li>
		Fix partition structure
	</li>
	<li>
		Clone or migrate disks outside Windows
	</li>
</ul>

<p>
	For IT teams handling multiple machines, this becomes a practical recovery tool in emergency scenarios.
</p>

<p>
	 
</p>

<p>
	<b>Strengths in Real-World Environments</b>
</p>

<p>
	From an operational perspective, the main strengths are:
</p>

<p>
	<b>Ease of Use</b>
</p>

<p>
	The visual interface reduces human error compared to command-line tools like Disk Part.
</p>

<p>
	<b>Non-Destructive Operations</b>
</p>

<p>
	Most partition tasks can be performed without deleting data provided file systems are healthy.
</p>

<p>
	<b>Time Efficiency</b>
</p>

<p>
	For small-to-medium environments, it reduces:
</p>

<ul type="disc">
	<li>
		Reinstallation time
	</li>
	<li>
		Manual resizing complexity
	</li>
	<li>
		Migration overhead
	</li>
</ul>

<p>
	<b>SSD Optimization</b>
</p>

<p>
	Partition alignment improves SSD performance and lifespan.
</p>

<p>
	 
</p>

<p>
	 
</p>

<p>
	<b>Limitations and Considerations</b>
</p>

<p>
	No tool is perfect. It’s important to understand the boundaries.
</p>

<p>
	<b>1. Not a Full Enterprise Deployment System</b>
</p>

<p>
	For large-scale automated deployment (hundreds or thousands of endpoints), tools like enterprise imaging platforms may be more suitable.
</p>

<p>
	AOMEI works well for small-to-mid-size environments but isn’t a centralized deployment orchestrator.
</p>

<p>
	 
</p>

<p>
	<b>2. Windows-Focused</b>
</p>

<p>
	It primarily targets Windows systems. Mixed Linux-heavy infrastructures may require different partitioning strategies using native Linux tools.
</p>

<p>
	 
</p>

<p>
	<b>3. Requires Proper Backup Strategy</b>
</p>

<p>
	Even though operations are designed to be non-destructive, partitioning always carries risk.
</p>

<p>
	Before:
</p>

<ul type="disc">
	<li>
		Resizing
	</li>
	<li>
		Converting disk type
	</li>
	<li>
		Cloning
	</li>
</ul>

<p>
	Always verify backups.
</p>

<p>
	 
</p>

<p>
	<b>4. Hardware Compatibility Still Matters</b>
</p>

<p>
	For example:
</p>

<ul type="disc">
	<li>
		GPT conversion requires UEFI firmware
	</li>
	<li>
		SSD migration depends on disk health
	</li>
	<li>
		Corrupted file systems must be repaired first
	</li>
</ul>

<p>
	The software cannot compensate for hardware-level failures.
</p>

<p>
	 
</p>

<p>
	<b>Comparison With Built-In Tools</b>
</p>

<p>
	<b>Windows Disk Management</b>
</p>

<p>
	Good for:
</p>

<ul type="disc">
	<li>
		Simple partition creation
	</li>
	<li>
		Formatting
	</li>
	<li>
		Basic extension
	</li>
</ul>

<p>
	Limited for:
</p>

<ul type="disc">
	<li>
		Moving partitions
	</li>
	<li>
		Converting disk type safely
	</li>
	<li>
		Advanced cloning
	</li>
</ul>

<p>
	 
</p>

<p>
	<b>DiskPart (Command-Line)</b>
</p>

<p>
	Powerful but:
</p>

<ul type="disc">
	<li>
		Risk-prone
	</li>
	<li>
		Requires precision
	</li>
	<li>
		No visual confirmation
	</li>
</ul>

<p>
	In busy environments, visual tools reduce operational mistakes.
</p>

<p>
	 
</p>

<p>
	<b>When It Makes Operational Sense</b>
</p>

<p>
	Disk partition software AOMEI is particularly useful when:
</p>

<ul type="disc">
	<li>
		You manage multiple Windows endpoints
	</li>
	<li>
		You perform regular SSD upgrades
	</li>
	<li>
		You need safe MBR-to-GPT conversion
	</li>
	<li>
		You frequently resize system partitions
	</li>
	<li>
		You want faster recovery options
	</li>
</ul>

<p>
	It is less necessary if:
</p>

<ul type="disc">
	<li>
		You rely entirely on automated enterprise imaging
	</li>
	<li>
		You manage exclusively Linux systems
	</li>
	<li>
		You rarely modify disk structures
	</li>
</ul>

<p>
	 
</p>

<p>
	<b>Best Practices When Using Partition Software in Production</b>
</p>

<p>
	Regardless of the tool:
</p>

<ol start="1" type="1">
	<li>
		Always create verified backups.
	</li>
	<li>
		Check SMART status before migration.
	</li>
	<li>
		Run file system checks before resizing.
	</li>
	<li>
		Schedule maintenance windows.
	</li>
	<li>
		Document disk structure changes.
	</li>
</ol>

<p>
	Partition management should be controlled and planned <span> </span>not reactive.
</p>

<p>
	 
</p>

<p>
	<b>Final Thoughts</b>
</p>

<p>
	Disk structure decisions impact system reliability more than most users realize.
</p>

<p>
	In real-world IT environments, disk partition software AOMEI serves as a practical middle-ground solution:
</p>

<ul type="disc">
	<li>
		More powerful than built-in Windows tools
	</li>
	<li>
		Easier to use than command-line utilities
	</li>
	<li>
		Efficient for SSD migration and partition restructuring
	</li>
	<li>
		Suitable for small-to-medium IT operations
	</li>
</ul>

<p>
	It is not a full enterprise automation platform but for many teams, it provides exactly the level of control and flexibility needed for day-to-day disk management tasks.
</p>

<p>
	 
</p>
]]></description><guid isPermaLink="false">211976</guid><pubDate>Tue, 03 Mar 2026 07:23:53 +0000</pubDate></item><item><title>Linux NAT, &#x43D;&#x435; &#x432;&#x441;&#x451; NAT-&#x438;&#x442;</title><link>https://forum.nag.ru/index.php?/topic/211935-linux-nat-ne-vsyo-nat-it/</link><description><![CDATA[<p>
	Попробовал свой NAT поднять до провайдера, но не сильно получилось.
</p>

<p>
	 
</p>

<p>
	# uname -an<br />
	Linux host 6.5.0-21-generic #21~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Fri Feb  9 13:32:52 UTC 2 x86_64 x86_64 x86_64 GNU/Linux<br />
	 
</p>

<p>
	# nft -v<br />
	nftables v1.0.2 (Lester Gooch)<br />
	 
</p>

<p>
	 
</p>

<p>
	сделал простые правила NAT
</p>

<p>
	 
</p>

<p>
	table ip nat {<br />
	        set real_nat_92.119.131.249 {<br />
	                type ipv4_addr<br />
	                flags interval<br />
	                elements = { 10.250.16.100 }<br />
	        }<br />
	                <br />
	        chain prerouting {<br />
	                type nat hook prerouting priority dstnat; policy accept;<br />
	        }<br />
	                             <br />
	        chain postrouting {<br />
	                type nat hook postrouting priority srcnat; policy accept;<br />
	                ip saddr @real_nat_92.119.131.249 oif "enp-ext0" snat to 92.119.131.249<br />
	        }<br />
	}
</p>

<p>
	 
</p>

<p>
	а если смотреть на исходящий интерфейс - видно что пакеты частично уходят без NAT (например когда винда обновляется, 23.35.104.105 - это из akamai )
</p>

<p>
	Ходил по сайтам - работает NAT, но некоторые IP всё таки без NAT идут. Непонятно.
</p>

<p>
	 
</p>

<p>
	(ответ от 23.35.104.105 приходит т.к. есть вышестоящий NAT от провайдера)
</p>

<p>
	И я думаю в IP тут 23.35.104.105 не вопрос, трафик разный немного просачивается то UDP какой нибудь 
</p>

<p>
	Даже не знаю куда копать
</p>

<p>
	 
</p>

<p>
	 
</p>

<p>
	# tcpdump -nv -i enp-ext0 host 10.250.16.100<br />
	tcpdump: listening on enp-ext0, link-type EN10MB (Ethernet), snapshot length 262144 bytes<br />
	16:48:41.339621 IP (tos 0x0, ttl 125, id 2037, offset 0, flags [DF], proto TCP (6), length 41)<br />
	    10.250.16.100.35231 &gt; 23.35.104.105.443: Flags [.], cksum 0x0b92 (correct), seq 535198780:535198781, ack 1774744595, win 1023, length 1<br />
	16:48:41.404967 IP (tos 0x0, ttl 57, id 28070, offset 0, flags [DF], proto TCP (6), length 52)<br />
	    23.35.104.105.443 &gt; 10.250.16.100.35231: Flags [.], cksum 0x9f11 (correct), ack 1, win 546, options [nop,nop,sack 1 {0:1}], length 0<br />
	16:49:26.448268 IP (tos 0x0, ttl 125, id 2038, offset 0, flags [DF], proto TCP (6), length 41)<br />
	    10.250.16.100.35231 &gt; 23.35.104.105.443: Flags [.], cksum 0x0b92 (correct), seq 0:1, ack 1, win 1023, length 1<br />
	16:49:26.513498 IP (tos 0x0, ttl 57, id 28071, offset 0, flags [DF], proto TCP (6), length 52)<br />
	    23.35.104.105.443 &gt; 10.250.16.100.35231: Flags [.], cksum 0x9f11 (correct), ack 1, win 546, options [nop,nop,sack 1 {0:1}], length 0
</p>

<p>
	16:50:11.647961 IP (tos 0x0, ttl 125, id 2039, offset 0, flags [DF], proto TCP (6), length 41)<br />
	    10.250.16.100.35231 &gt; 23.35.104.105.443: Flags [.], cksum 0x0b92 (correct), seq 0:1, ack 1, win 1023, length 1<br />
	16:50:11.713184 IP (tos 0x0, ttl 57, id 28072, offset 0, flags [DF], proto TCP (6), length 52)<br />
	    23.35.104.105.443 &gt; 10.250.16.100.35231: Flags [.], cksum 0x9f11 (correct), ack 1, win 546, options [nop,nop,sack 1 {0:1}], length 0<br />
	16:50:56.819922 IP (tos 0x0, ttl 125, id 2040, offset 0, flags [DF], proto TCP (6), length 41)<br />
	    10.250.16.100.35231 &gt; 23.35.104.105.443: Flags [.], cksum 0x0b92 (correct), seq 0:1, ack 1, win 1023, length 1<br />
	16:50:56.885172 IP (tos 0x0, ttl 57, id 28073, offset 0, flags [DF], proto TCP (6), length 52)<br />
	    23.35.104.105.443 &gt; 10.250.16.100.35231: Flags [.], cksum 0x9f11 (correct), ack 1, win 546, options [nop,nop,sack 1 {0:1}], length 0<br />
	^C<br />
	8 packets captured<br />
	370 packets received by filter<br />
	0 packets dropped by kernel<br />
	 
</p>

<p>
	 
</p>

<p>
	# sysctl net.nf_conntrack_max<br />
	net.nf_conntrack_max = 6291456
</p>

<p>
	 
</p>

<p>
	# sysctl net.netfilter.nf_conntrack_max<br />
	net.netfilter.nf_conntrack_max = 6291456
</p>

<p>
	 
</p>

<p>
	 
</p>

<p>
	# cat /sys/module/nf_conntrack/parameters/hashsize<br />
	1572864
</p>

<p>
	 
</p>

<p>
	# sysctl -a | grep checksum<br />
	net.mptcp.checksum_enabled = 0<br />
	net.netfilter.nf_conntrack_checksum = 0<br />
	 
</p>

<p>
	# sysctl -a | grep ip_forward<br />
	net.ipv4.ip_forward = 1<br />
	net.ipv4.ip_forward_update_priority = 1<br />
	net.ipv4.ip_forward_use_pmtu = 0<br />
	 
</p>
]]></description><guid isPermaLink="false">211935</guid><pubDate>Thu, 19 Feb 2026 10:14:32 +0000</pubDate></item><item><title>&#x415;&#x449;&#x435; &#x43E;&#x434;&#x438;&#x43D; Netflow-&#x43A;&#x43E;&#x43B;&#x43B;&#x435;&#x43A;&#x442;&#x43E;&#x440; &#x438; &#x430;&#x43D;&#x430;&#x43B;&#x438;&#x437;&#x430;&#x442;&#x43E;&#x440;</title><link>https://forum.nag.ru/index.php?/topic/83253-esche-odin-netflow-kollektor-i-analizator/</link><description><![CDATA[
<p>Если кому-то интересен простой Netflow-коллектор и анализатор, open source, с веб-интерфейсным управлением и просмотром отчетов - </p>
<p><a href="http://xenoeye.com/docs" rel="external nofollow">http://xenoeye.com/docs</a></p>
<p>Анализирует он очень условно, просто фильтрует фловы, агрегирует и показывает, но раз уж такая терминология устоялась, то анализатор.</p>
<p> </p>
<p>Понятно что это сейчас довольно нишевая штука - в сетях с безлимитами и аццкими скоростями такое ставить почти бессмысленно.</p>
<p>Мы используем его для контроля за трафиком пользователей в подшефных компаниях, это, скорее всего, лучший профиль использования.</p>
<p> </p>
<p>Плюсы:</p>
<p>Достаточно быстрый, netflow хранится в файлах, агрегированные данные тоже в файлах - Berkeley DB.</p>
<p>Не нужно разворачивать и тюнить СУБД, запустил и заработало.</p>
<p>Управляется веб-интерфейсом, отчеты генерируются тоже веб-интерфейсом.</p>
<p>Разделение отчетов по пользователям - кому-то одни отчеты, кому-то другие, есть публично доступные.</p>
<p>Не RRD-based. Данные хранятся в точности как прилетели, нет округлений и сглаживаний, на старых данных можно строить любые отчеты.</p>
<p> </p>
<p>Минусы:</p>
<p>Коллектор простой, поддерживаются только Netflow v1 и v5 с IPv4.</p>
<p>Построитель диаграмм тоже не очень сложный. Если нужен какой-то заковыристый график из нескольких источников - он такой построить не сможет.</p>
<p>Веб-интерфейс и коллектор выполняются в одном процессе, если что-то упадет, упадет все (такого, правда, еще не случалось,</p>
<p>но мы у нервных клиентов на всякий случай держим на одном узле по два запущенных коллектора)</p>
<p>Не RRD-based. Если данных много, нужно их периодически удалять.</p>
<p> </p>
<p> </p>
<p>В среднесрочной перспективе планируется добавить:</p>
<p>- триггеры;</p>
<p>- возможность из пользовательского интерфейса выполнить внешние скрипты;</p>
<p>- сделать "гиперссылочные" отчеты - ткнул, например в столбик на диаграмме, а он переходит в другой отчет с подробностями;</p>
<p>- добавить "отложенные" отчеты и таблицы, которые не пересчитываются при каждом новом netflow-пакете, а считаются при запросе к отчету,</p>
<p>и потом через какое-то время самоудаляются</p>
]]></description><guid isPermaLink="false">83253</guid><pubDate>Sun, 03 Mar 2013 13:15:21 +0000</pubDate></item><item><title>&#x411;&#x438;&#x43B;&#x43B;&#x438;&#x43D;&#x433;&#x43E;&#x432;&#x430;&#x44F; &#x441;&#x438;&#x441;&#x442;&#x435;&#x43C;&#x430; "&#x413;&#x438;&#x434;&#x440;&#x430;"</title><link>https://forum.nag.ru/index.php?/topic/78325-billingovaya-sistema-gidra/</link><description><![CDATA[
<p>Интересует мнение операторов о работе этого биллинга.</p>
<p>Хорошее плохое, любые отзывы.</p>
]]></description><guid isPermaLink="false">78325</guid><pubDate>Wed, 29 Aug 2012 14:03:31 +0000</pubDate></item><item><title>Linux softrouter</title><link>https://forum.nag.ru/index.php?/topic/46335-linux-softrouter/</link><description><![CDATA[
<p>Всем доброе время суток.</p>
<p> </p>
<p>
Я прочел множество статей о kosftirqd, драйверах NAPI для e100, e1000, как они работают и много всякой другой теории об этих связках, но вы сами понимаете, что теория, это только теория. </p>
<p> </p>
<p>
Недавно наткнулся на тему про softrouter на FreeBSD ( тут же ) и увидел там, что хендлеры для rx/tx операций заводят как треды на разные процессоры, используя драйвера от Яндекс, таким образом выполняя, как бы sharing soft irq. Я попытался погуглить по данной теме что для Linux, но нашел только теорию. На практике есть какие-то самописные непроверенные патчи к 2.6 ядрам. Но как я понял эта штука называется Scaling I/O и по заявлению некоторых товарищей ( <a href="http://www.linux.org.ru/view-message.jsp?msgid=2182914" rel="external nofollow">http://www.linux.org.ru/view-message.jsp?msgid=2182914</a> ) она уже давно применяется в Linux и якобы назвается sotirq-net-tx/rx.</p>
<p> </p>
<p>
При обычной загрузке машины - прерывания распределяются по процессорам примерно равномерно. Но при перегрузке от количества пакетов в top начинает выступать один ksoftirqd, который занимает только один процессор, ну и естественно, устраивает капец сетевому трафику, хотя другие процессоры занимаются user-level операциями и в принципе свободны.</p>
<p> </p>
<p>
Ситуация стандартная, но вопросы таковы: </p>
<p>
1. Есть ли какие-то методы распределения софт прерываний на несколько процессоров, для их более быстрой обработки?</p>
<p>
2. Можно ли как-то управлять поллингом для драйвера e1000? Потому как, судя по документации, поллинг начинает работать только, когда количество пакетов превышает количество возможных прерываний в системе</p>
<p>
3. Можно ли как-то просматривать статистику драйвера? ( сколько пакетов в буфере сетевой карты, шедулятся ли пакеты на soft_irq, может еще что-то )</p>
<p>
4. Можно ли как-то просмотреть что именно делает ksoftirq во время работы?</p>
<p>
5. В каком ядре ( 2.4 / 2.6 ) по-вашему лучше реализована работа этого всего механизма?</p>
<p> </p>
<p>
Можно, так же ответить на вопрос, который, я думаю, заинтересует не только меня: это кто еще как решал вопрос при перегрузке сетевого интерфейса/интерфейсов от количества пакетов, но все же интересуют именно заданные выше вопросы.</p>
<p> </p>
<p>
Все заранее спасибо за ваши ответы.</p>
]]></description><guid isPermaLink="false">46335</guid><pubDate>Tue, 30 Dec 2008 12:26:31 +0000</pubDate></item><item><title>&#x420;&#x430;&#x437;&#x431;&#x43E;&#x440; &#x430;&#x440;&#x445;&#x438;&#x442;&#x435;&#x43A;&#x442;&#x443;&#x440;&#x44B; L2 &#x434;&#x43E;&#x441;&#x442;&#x443;&#x43F;&#x430; &#x441; Kea DHCP, RADIUS &#x438; &#x431;&#x438;&#x43B;&#x43B;&#x438;&#x43D;&#x433;&#x43E;&#x43C;</title><link>https://forum.nag.ru/index.php?/topic/211884-razbor-arhitektury-l2-dostupa-s-kea-dhcp-radius-i-billingom/</link><description><![CDATA[<p>
	 
</p>

<p>
	Коллеги, приветствую. Прошу конструктивной критики планируемой архитектуры для абонентского доступа:
</p>

<p>
	1. L2 доступ: На коммутаторах доступа — абонентские VLAN, dhcp snooping + ip source guard, storm-control, bpduguard, lldp disable.<br />
	2. DHCP: Централизованный сервер Kea с dhcp-relay на коммутаторах. Kea интегрирован с RADIUS.<br />
	3. Управление: Микробиллинг — единая точка истины. Наполняет RADIUS (логин=MAC, пароль, статичный IP) и управляет access-list на маршрутизаторе MikroTik (через API), где также висят simple queue.<br />
	4. Логика выдачи IP:<br />
	   · Неизвестный MAC (нет в RADIUS) → получает временный IP из пула /27 на свой VLAN.<br />
	   · Известный MAC → получает "постоянный" IP из биллинга.
</p>

<p>
	Главный вопрос и сомнение: Как MAC абонента впервые попадает в биллинг? После первой выдачи временного IP монтажник видит этот IP, но биллингу неоткуда узнать соответствующий MAC для автоматического занесения в карточку.
</p>

<p>
	Рассматриваю варианты:
</p>

<p>
	1. Настроить RADIUS Accounting на агрегации, чтобы биллинг слушал Acct-Start и сам подхватывал пару IP-MAC.<br />
	2. Обязать монтажников вручную вносить MAC с оборудования.
</p>

<p>
	Интересует опыт коллег:
</p>

<p>
	· Работала ли у кого связка Kea + RADIUS в подобной схеме? Особенно с разными пулами для известных/неизвестных клиентов.<br />
	· Как вы решали проблему первичного сбора MAC-адресов? Accounting или другие методы?<br />
	· Насколько эффективен MikroTik с динамическими access-list от биллинга на тысячах абонентов? Не проседает ли CPU?
</p>

<p>
	Спасибо за советы!
</p>
]]></description><guid isPermaLink="false">211884</guid><pubDate>Tue, 03 Feb 2026 13:34:07 +0000</pubDate></item><item><title>Carbon Billing - &#x41F;&#x440;&#x43E;&#x431;&#x43B;&#x435;&#x43C;&#x44B;</title><link>https://forum.nag.ru/index.php?/topic/107334-carbon-billing-problemy/</link><description><![CDATA[
<p>День добрый!</p>
<p>Кто пользуется биллингом "Carbon Billing" ? </p>
<p>У кого какие проблемы встречаются ,а то как не позвонишь в техподдержку стандартный ответ такого не может быть.</p>
]]></description><guid isPermaLink="false">107334</guid><pubDate>Mon, 17 Aug 2015 14:55:46 +0000</pubDate></item><item><title>Carbon Billing - &#x43E;&#x442;&#x437;&#x44B;&#x432;&#x44B;</title><link>https://forum.nag.ru/index.php?/topic/97853-carbon-billing-otzyvy/</link><description><![CDATA[
<p>День добрый!</p>
<p>Кто что может сказать про Carbon Billing?</p>
]]></description><guid isPermaLink="false">97853</guid><pubDate>Sun, 05 Oct 2014 18:04:07 +0000</pubDate></item><item><title>Carbon 4</title><link>https://forum.nag.ru/index.php?/topic/132501-carbon-4/</link><description><![CDATA[
<p>Кто подскажет, как удаленно подключиться сarbon managerom к биллингу.</p>
<p> </p>
<p>Судя по инструкции есть только один вариант, это через VPN.</p>
<p>Но чё то не взлетело... При подключении выдает ошибку 807</p>
]]></description><guid isPermaLink="false">132501</guid><pubDate>Fri, 28 Jul 2017 09:54:13 +0000</pubDate></item><item><title>&#x41F;&#x440;&#x43E;&#x448;&#x438;&#x432;&#x43A;&#x430; &#x43D;&#x430; Cisco x540n</title><link>https://forum.nag.ru/index.php?/topic/211885-proshivka-na-cisco-x540n/</link><description><![CDATA[<p>
	Добрый день. Есть у кого прошивка на Cisco n540x. Можно и за деньги.
</p>
]]></description><guid isPermaLink="false">211885</guid><pubDate>Tue, 03 Feb 2026 15:45:45 +0000</pubDate></item><item><title>DHCP server with SQL support on Perl</title><link>https://forum.nag.ru/index.php?/topic/64849-dhcp-server-with-sql-support-on-perl/</link><description><![CDATA[
<p><strong>Документация</strong>: <a href="http://www.netlab.linkpc.net/wiki/ru:software:perl:dhcp_server" rel="external nofollow">http://www.netlab.linkpc.net/wiki/ru:software:perl:dhcp_server</a></p>
<p><strong>Скачать</strong>: <a href="http://netlab.linkpc.net/download/software/perl/dhcp_srv/dhcpd.pl" rel="external nofollow">http://netlab.linkpc.net/download/software/perl/dhcp_srv/dhcpd.pl</a></p>
<p><strong>DHCP снифер для винды</strong>: <a href="http://www.netlab.linkpc.net/wiki/ru:software:win:net:dhcp_tool" rel="external nofollow">http://www.netlab.li...n:net:dhcp_tool</a></p>
<p> </p>
<p>Предлагаю обсуждать, предлагать фичи и патчи.</p>
<p> </p>
<p>Сейчас есть готовый скелет, который будучи заряжен правильными SQL запросами вполне себе работает:</p>
<p>- отдаёт адреса и параметры взятые с базы через релей агентов (но не на прямые запросы), пишет в базу лог,</p>
<p>- обновляет в базе лизы</p>
<p>- многопоточный</p>
<p>- умеет миррорить запросы и ответы на указанный IP</p>
<p>- работать демоном (стартовый скрипт не написал, пишется шаблонно)</p>
<p>- несколько уровней вывода отладочной инфы: 1 - от кого, кому, время обработки, 2 - тоже что и 1 и декодинг содержимого пакетов</p>
<p> </p>
<p>Кто немного знает перл и умеет писать запросы сможет быстро адаптировать под себя.</p>
<p>Все данные: статические и SQL запросы являющиеся приватными удалены.</p>
<p> </p>
<p> </p>
<p>КодUsage: dhcpd [options]</p>
<p>-b &lt;ip&gt;        ip address to bind (def: 0.0.0.0)</p>
<p>-sp &lt;port&gt;        port bind (def: 67)</p>
<p>-cp &lt;port&gt;        port to send reply directly to client (def: 68)</p>
<p>-id &lt;ip&gt;        ip addr DHCP server ID, REQUIRED!, MUST be real IP of server</p>
<p>-m &lt;ip&gt;        ip address to mirror all packets on 67 port</p>
<p>-t &lt;threads&gt;    number of thread, recomended: CPU cores * 2, (default 4)</p>
<p>-dbs            database data source: DriverName:database=database_name;host=hostname;port=port</p>
<p>-dbl            data base login</p>
<p>-dbp            data base password</p>
<p>-P &lt;path&gt;        name of PID-file for spawned process</p>
<p>-v &lt;level&gt;        print debug info, levels: 1, 2 (def: off)</p>
<p>-d            daemon mode</p>
<p> </p>
<p>Соответственно, чтобы напустится нужно:</p>
<p>- дописать запросы, местами можно и закоментить (release, decline)</p>
<p>- перл с потоками + пакеты/порты указанные в комментах в начале скрипта</p>
<p> </p>
<p>запускаю обычно: dhcpd.pl -id 192.168.0.1 -m 192.168.0.2 -t 2 -v 1</p>
<p>192.168.0.1 - адрес дхцп сервера (настроенный в релеях) к которому должны обращаться клиенты</p>
<p>192.168.0.2 - адрес куда миррорятся все пакеты, смотрю их под виндой этим: DHCPTool</p>
<p>2 - потока</p>
<p>1 - выводить минимум инфы о запросах: от кого получено, кому отправлено, сколько времени заняло</p>
<p>(для собственного удобства у меня все параметры: логин, пароль, адрес - для подключения к базе прописаны в скрипте)</p>
<p> </p>
<p>Биндить лучше на 0.0.0.0, потому как если забиндить на конкретный IP то ответы будут уходить только с него, в случае нескольких адаптеров/алиасов остальные задействованны не будут. В таких случаях сервер будет получать, обрабатывать запрос но ответ уходить не будет.</p>
]]></description><guid isPermaLink="false">64849</guid><pubDate>Thu, 10 Mar 2011 19:50:18 +0000</pubDate></item><item><title>&#x423; &#x43A;&#x43E;&#x433;&#x43E; &#x435;&#x441;&#x442;&#x44C; &#x43B;&#x43E;&#x433;&#x438;&#x43D;, &#x43F;&#x43E;&#x43C;&#x43E;&#x433;&#x438;&#x442;&#x435; &#x441;&#x43A;&#x430;&#x447;&#x430;&#x442;&#x44C; &#x441; cisco.com.</title><link>https://forum.nag.ru/index.php?/topic/154460-u-kogo-est-login-pomogite-skachat-s-ciscocom/</link><description><![CDATA[
<p>
	Добрый день. Помогите скачать плиз.
</p>

<p>
	<a href="https://www.cisco.com/c/ru_ru/support/wireless/aironet-2600e-access-point/model.html#~tab-downloads" rel="external nofollow">https://www.cisco.com/c/ru_ru/support/wireless/aironet-2600e-access-point/model.html#~tab-downloads</a>
</p>

<p>
	<span style="background-color:#f5f5f5;color:#58585b;font-size:14px;">ap3g2-k9w7-tar.153-3.JF11.tar</span>
</p>

<p>
	<a class="ipsAttachLink ipsAttachLink_image" href="//cdn.nag.ru/forum.public.files/uploads/monthly_2020_02/image.png.0330f1fe16d846fb31401d252e52bf12.png" data-fileid="59588" rel=""><img class="ipsImage ipsImage_thumbnailed" data-fileid="59588" src="https://cdn.nag.ru/forum.public.files/uploads/monthly_2020_02/image.thumb.png.1b4c779413688a2824f8a8a07f9af066.png" alt="image.thumb.png.1b4c779413688a2824f8a8a07f9af066.png" /></a>
</p>
]]></description><guid isPermaLink="false">154460</guid><pubDate>Tue, 18 Feb 2020 07:41:06 +0000</pubDate></item><item><title>&#x41A;&#x442;&#x43E; &#x447;&#x442;&#x43E; &#x44E;&#x437;&#x430;&#x435;&#x442; &#x43D;&#x430; &#x437;&#x430;&#x43C;&#x435;&#x43D;&#x443; speedtest? &#x41A;&#x430;&#x43A;&#x43E;&#x439; &#x430;&#x43D;&#x430;&#x43B;&#x43E;&#x433; &#x41F;&#x41E; speedtest &#x43C;&#x43E;&#x436;&#x43D;&#x43E; &#x443; &#x441;&#x435;&#x431;&#x44F; &#x43D;&#x430; &#x441;&#x435;&#x442;&#x438; &#x440;&#x430;&#x437;&#x432;&#x435;&#x440;&#x43D;&#x443;&#x442;&#x44C;?</title><link>https://forum.nag.ru/index.php?/topic/206271-kto-chto-yuzaet-na-zamenu-speedtest-kakoy-analog-po-speedtest-mozhno-u-sebya-na-seti-razvernut/</link><description><![CDATA[<p>
	Чтобы абоненты и инженеры измеряли скорость ТП, наглядно и по простому
</p>
]]></description><guid isPermaLink="false">206271</guid><pubDate>Fri, 15 Aug 2025 07:58:56 +0000</pubDate></item><item><title>&#x41F;&#x43E;&#x447;&#x442;&#x43E;&#x432;&#x438;&#x43A; &#x434;&#x43B;&#x44F; &#x43E;&#x444;&#x438;&#x441;&#x430;</title><link>https://forum.nag.ru/index.php?/topic/211746-pochtovik-dlya-ofisa/</link><description><![CDATA[<p>
	Подскажите, кто что использует?
</p>

<p>
	Хотелось бы что-то, требующее минимальных телодвижений и администрирования. И с почтовым веб-интерфейсом для пользователей.
</p>

<p>
	Раньше пользовался Мэйловской (точнее VK Workspace), но что-то они совсем тормоза потеряли, с лета хотят по 360 рублей за пользователя. У Яндекса цены сопоставимые, поэтому его рассматривать особого смысла не вижу.
</p>

<p>
	Видимо нужно будет свой почтовый сервер делать, но последний раз я его настраивал и администрировал лет 20 назад и сейчас наверняка многое поменялось. Причем даже тогда больше времени заняла даже не столько его установка, сколько организационные мероприятия (типа SPF, политик и прочего), а сейчас все наверняка еще хуже.
</p>
]]></description><guid isPermaLink="false">211746</guid><pubDate>Tue, 16 Dec 2025 10:06:10 +0000</pubDate></item></channel></rss>
