<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
	<channel>
		<title>Mikrotik.moscow [тема: Проблема с RADIUS AcctSessionId (дублированный учёт).]</title>
		<link>http://mikrotik.moscow</link>
		<description>Новое в теме Проблема с RADIUS AcctSessionId (дублированный учёт). форума RouterOS на сайте Mikrotik.moscow [mikrotik.moscow]</description>
		<language>ru</language>
		<docs>http://backend.userland.com/rss2</docs>
		<pubDate>Wed, 19 Aug 2026 05:03:05 -0400</pubDate>
		<item>
			<title>Проблема с RADIUS AcctSessionId (дублированный учёт).</title>
			<description><![CDATA[<b><a href="http://mikrotik.moscow/forum/forum57/71737-problema-s-radius-acctsessionid-_dublirovannyy-uchyet_./message286590">Проблема с RADIUS AcctSessionId (дублированный учёт).</a></b> <i>RouterOS</i> в форуме <a href="http://mikrotik.moscow/forum/forum57/">RouterOS</a>. <br />
			Спасибо ещё раз! Я уже изменил обновление radacct, используя уникальный идентификатор сессии, просто не знал, что он был доступен в это время ('%{Acct-Unique-Session-Id}'). Да, я понимаю проблему с идентификатором сессии, генерируемым NAS. И с увеличением количества устройств на сервере RADIUS проблемы будут усиливаться. FreeRadius использует стандартный ключ = “User-Name, Acct-Session-Id, NAS-IP-Address, Client-IP-Address, NAS-Port” для создания уникального идентификатора сессии. Здесь ничего менять не нужно. Нашёл заметку в FR ./doc директории (tuning_guide): “Добавьте AcctUniqueId в запрос accounting_stop. Особенно, если у вас много серверов доступа или ваш NAS не генерирует очень случайные Session-Id. Тогда у вас всегда будет одна строка-кандидат для поиска, вместо всех строк с одинаковым AcctSessionId”. В общем, я добавил уникальный ID в ‘accounting_update_query’ и ‘accounting_start_query_alt’. Это должно помочь! <br />
			<i>31.05.2006 06:39:00, poinths.</i>]]></description>
			<link>http://mikrotik.moscow/forum/forum57/71737-problema-s-radius-acctsessionid-_dublirovannyy-uchyet_./message286590</link>
			<guid>http://mikrotik.moscow/forum/forum57/71737-problema-s-radius-acctsessionid-_dublirovannyy-uchyet_./message286590</guid>
			<pubDate>Wed, 31 May 2006 06:39:00 -0400</pubDate>
			<category>RouterOS</category>
		</item>
		<item>
			<title>Проблема с RADIUS AcctSessionId (дублированный учёт).</title>
			<description><![CDATA[<b><a href="http://mikrotik.moscow/forum/forum57/71737-problema-s-radius-acctsessionid-_dublirovannyy-uchyet_./message286589">Проблема с RADIUS AcctSessionId (дублированный учёт).</a></b> <i>RouterOS</i> в форуме <a href="http://mikrotik.moscow/forum/forum57/">RouterOS</a>. <br />
			Рад, что смог помочь. Ещё один момент, чтобы прояснить ваш первоначальный вопрос (жалобу?) по поводу SessionID… SessionID генерируется NAS, но NAS требуется иметь уникальный Session ID только для каждого активного подключённого сеанса. Как только пользователь отключается и подключается другой, NAS имеет полное право присвоить тот же SessionID другому пользователю. Когда два пользователя подключены одновременно и имеют один и тот же SessionID – ТОГДА NAS точно не прав, и производителям нужно бы пристрелить и выставить на всеобщее обозрение (Это, разумеется, не относится к MPPP – которая в любом случае не поддерживается MT, но которая, очевидно, будет иметь один и тот же SessionID). Чтобы обойти это, FreeRadius разработал модуль UniqueID для генерации уникального хеша на основе значений различных атрибутов. Это тоже не гарантирует уникальность, но вероятность получения дубликата намного ниже. Если вы действительно умны и объедините это с модулем rlm_exec, вы можете сгенерировать хеш на основе /dev/random или /bin/date +%s, что гарантированно всегда будет уникальным (я даже видел, как люди используют SELECT UUID() в MySQL). В некоторых более крупных установках приходилось использовать что-то подобное.<br /><br />Теперь у меня есть ещё одна тема, которую нужно обязательно внести в WIKI, когда у меня появится время... – C <br />
			<i>31.05.2006 06:21:00, savage.</i>]]></description>
			<link>http://mikrotik.moscow/forum/forum57/71737-problema-s-radius-acctsessionid-_dublirovannyy-uchyet_./message286589</link>
			<guid>http://mikrotik.moscow/forum/forum57/71737-problema-s-radius-acctsessionid-_dublirovannyy-uchyet_./message286589</guid>
			<pubDate>Wed, 31 May 2006 06:21:00 -0400</pubDate>
			<category>RouterOS</category>
		</item>
		<item>
			<title>Проблема с RADIUS AcctSessionId (дублированный учёт).</title>
			<description><![CDATA[<b><a href="http://mikrotik.moscow/forum/forum57/71737-problema-s-radius-acctsessionid-_dublirovannyy-uchyet_./message286588">Проблема с RADIUS AcctSessionId (дублированный учёт).</a></b> <i>RouterOS</i> в форуме <a href="http://mikrotik.moscow/forum/forum57/">RouterOS</a>. <br />
			Спасибо за очень подробное решение! Похоже, можно прекратить работу над этой проблемой, так как я уже начал её решать. Возьму ваш совет и интегрирую в нашу систему как можно скорее (pointHotspot.com). Удачи! <br />
			<i>31.05.2006 06:05:00, poinths.</i>]]></description>
			<link>http://mikrotik.moscow/forum/forum57/71737-problema-s-radius-acctsessionid-_dublirovannyy-uchyet_./message286588</link>
			<guid>http://mikrotik.moscow/forum/forum57/71737-problema-s-radius-acctsessionid-_dublirovannyy-uchyet_./message286588</guid>
			<pubDate>Wed, 31 May 2006 06:05:00 -0400</pubDate>
			<category>RouterOS</category>
		</item>
		<item>
			<title>Проблема с RADIUS AcctSessionId (дублированный учёт).</title>
			<description><![CDATA[<b><a href="http://mikrotik.moscow/forum/forum57/71737-problema-s-radius-acctsessionid-_dublirovannyy-uchyet_./message286587">Проблема с RADIUS AcctSessionId (дублированный учёт).</a></b> <i>RouterOS</i> в форуме <a href="http://mikrotik.moscow/forum/forum57/">RouterOS</a>. <br />
			Продолжение, все упустил в спешке этим утром… Данные учета нужно обрабатывать. Сидеть с таблицей учета, содержащей миллионы и миллионы записей, крайне неэффективно, потому что Radius должен выполнять запросы к этим данным, которые могут занять очень много времени. Создай еще две таблицы для себя…<br /><br />```mysql<br />mysql&gt; DESCRIBE RadiusAcctTotals;<br />+-----------------+-------------+------+-----+------------+----------------+<br />| Field &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | Type &nbsp; &nbsp; &nbsp; &nbsp;| Null | Key | Default &nbsp; &nbsp;| Extra &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;|<br />+-----------------+-------------+------+-----+------------+----------------+<br />| TotAcctId &nbsp; &nbsp; &nbsp; | bigint(21) &nbsp;| NO &nbsp; | PRI | NULL &nbsp; &nbsp; &nbsp; | auto_increment |<br />| UserName &nbsp; &nbsp; &nbsp; &nbsp;| varchar(64) | NO &nbsp; | MUL | NULL &nbsp; &nbsp; &nbsp; | &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;|<br />| AcctDate &nbsp; &nbsp; &nbsp; &nbsp;| date &nbsp; &nbsp; &nbsp; &nbsp;| NO &nbsp; | MUL | 0000-00-00 | &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;|<br />| ConnNum &nbsp; &nbsp; &nbsp; &nbsp; | bigint(12) &nbsp;| YES &nbsp;| &nbsp; &nbsp; | NULL &nbsp; &nbsp; &nbsp; | &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;|<br />| ConnTotDuration | bigint(12) &nbsp;| YES &nbsp;| &nbsp; &nbsp; | NULL &nbsp; &nbsp; &nbsp; | &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;|<br />| ConnMaxDuration | bigint(12) &nbsp;| YES &nbsp;| &nbsp; &nbsp; | NULL &nbsp; &nbsp; &nbsp; | &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;|<br />| ConnMinDuration | bigint(12) &nbsp;| YES &nbsp;| &nbsp; &nbsp; | NULL &nbsp; &nbsp; &nbsp; | &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;|<br />| InputOctets &nbsp; &nbsp; | bigint(12) &nbsp;| YES &nbsp;| &nbsp; &nbsp; | NULL &nbsp; &nbsp; &nbsp; | &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;|<br />| OutputOctets &nbsp; &nbsp;| bigint(12) &nbsp;| YES &nbsp;| &nbsp; &nbsp; | NULL &nbsp; &nbsp; &nbsp; | &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;|<br />+-----------------+-------------+------+-----+------------+----------------+<br />9 rows in set (0.02 sec)<br /><br />mysql&gt; DESCRIBE RadiusAcctMonthlyTotals;<br />+-----------------+-------------+------+-----+------------+----------------+<br />| Field &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | Type &nbsp; &nbsp; &nbsp; &nbsp;| Null | Key | Default &nbsp; &nbsp;| Extra &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;|<br />+-----------------+-------------+------+-----+------------+----------------+<br />| MTotAcctId &nbsp; &nbsp; &nbsp;| bigint(21) &nbsp;| NO &nbsp; | PRI | NULL &nbsp; &nbsp; &nbsp; | auto_increment |<br />| UserName &nbsp; &nbsp; &nbsp; &nbsp;| varchar(64) | NO &nbsp; | MUL | NULL &nbsp; &nbsp; &nbsp; | &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;|<br />| AcctDate &nbsp; &nbsp; &nbsp; &nbsp;| date &nbsp; &nbsp; &nbsp; &nbsp;| NO &nbsp; | MUL | 0000-00-00 | &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;|<br />| ConnNum &nbsp; &nbsp; &nbsp; &nbsp; | bigint(12) &nbsp;| YES &nbsp;| &nbsp; &nbsp; | NULL &nbsp; &nbsp; &nbsp; | &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;|<br />| ConnTotDuration | bigint(12) &nbsp;| YES &nbsp;| &nbsp; &nbsp; | NULL &nbsp; &nbsp; &nbsp; | &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;|<br />| ConnMaxDuration | bigint(12) &nbsp;| YES &nbsp;| &nbsp; &nbsp; | NULL &nbsp; &nbsp; &nbsp; | &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;|<br />| ConnMinDuration | bigint(12) &nbsp;| YES &nbsp;| &nbsp; &nbsp; | NULL &nbsp; &nbsp; &nbsp; | &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;|<br />| InputOctets &nbsp; &nbsp; | bigint(12) &nbsp;| YES &nbsp;| &nbsp; &nbsp; | NULL &nbsp; &nbsp; &nbsp; | &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;|<br />| OutputOctets &nbsp; &nbsp;| bigint(12) &nbsp;| YES &nbsp;| &nbsp; &nbsp; | NULL &nbsp; &nbsp; &nbsp; | &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;|<br />+-----------------+-------------+------+-----+------------+----------------+<br />9 rows in set (0.01 sec)<br />```<br /><br />В рамках ежедневной процедуры обслуживания перемещай все данные учета из таблицы Radius Accounting, которые неактивны (имеют `acctstoptime`) и старше нескольких дней, в таблицы RadiusAcctTotals. Затем удаляй старые записи из таблицы Radius Accounting. Таким образом, основная таблица учета, используемая Radius, будет маленькой, компактной и не вызовет никаких проблем. Выполняются следующие шаги:<br /><br />1. &nbsp;Удаление записей старше 90 дней, так как они уже находятся в таблице AcctMonthlyTotals.<br /> &nbsp; &nbsp;```mysql<br /> &nbsp; &nbsp;DELETE FROM RadiusAcctTotals WHERE AcctDate = '" . $Date_Start . "'<br /> &nbsp; &nbsp;```<br />2. &nbsp;Перемещение данных учета, закрытых за день, из таблиц Radius Accounting в обобщенную версию нашей собственной таблицы Accounting Data (мы делаем это на уровне пользователей, а не сессий, что уменьшает количество записей).<br /> &nbsp; &nbsp;```mysql<br /> &nbsp; &nbsp;INSERT INTO RadiusAcctTotals (UserName, AcctDate, ConnNum, ConnTotDuration, ConnMaxDuration, ConnMinDuration, InputOctets, OutputOctets)<br /> &nbsp; &nbsp;SELECT UserName, '" . $Date_Small_Start . "', COUNT(RadAcctId), SUM(AcctSessionTime), MAX(AcctSessionTime), MIN(AcctSessionTime), SUM(AcctInputOctets), SUM(AcctOutputOctets)<br /> &nbsp; &nbsp;FROM RadiusAccounting<br /> &nbsp; &nbsp;WHERE AcctStopTime &gt;= '" . $Date_Start . "' AND AcctStopTime &lt; '" . $Date_End . "' AND UserName LIKE '%@%'<br /> &nbsp; &nbsp;GROUP BY UserName<br /> &nbsp; &nbsp;```<br />3. &nbsp;Удаление данных учета из таблиц Radius Accounting, которые мы только что скопировали в нашу собственную обобщенную таблицу Accounting Data.<br /> &nbsp; &nbsp;```mysql<br /> &nbsp; &nbsp;DELETE FROM RadiusAccounting<br /> &nbsp; &nbsp;WHERE AcctStopTime &gt;= '" . $Date_Start . "' AND AcctStopTime &lt; '" . $Date_End . "' AND UserName LIKE '%@%'<br /> &nbsp; &nbsp;```<br /><br />В конце месяца я обычно выполняю запрос к моей ежедневной таблице учета и создаю ежемесячные итоги для моих пользователей в ежемесячной таблице учета. В конце дня я могу хранить 100 лет (если захочу) данных учета на основе ежемесячного использования с нулевым влиянием на сервер Radius… В конце месяца мы выполняем, среди прочего: перемещение обобщенных (мы теперь переходим с ежедневных на ежемесячные) данных учета из наших собственных таблиц учета в ежемесячные таблицы.<br />```mysql<br />INSERT INTO RadiusAcctMonthlyTotals (UserName, AcctDate, ConnNum, ConnTotDuration, ConnMaxDuration, ConnMinDuration, InputOctets, OutputOctets)<br />SELECT UserName, '" . $Date_Start . "', SUM(ConnNum), SUM(ConnTotDuration), MAX(ConnMaxDuration), MIN(ConnMinDuration), SUM(InputOctets), SUM(OutputOctets)<br />FROM RadiusAcctTotals<br />WHERE AcctDate &gt;= '" . $Date_Start . "' AND AcctDate &lt;= '" . $Date_End . "'<br />GROUP BY UserName<br />```<br />Удаление нашей ежедневной статистики из статистики, которые у нас есть в нашей ежемесячной таблице.<br />```mysql<br />DELETE FROM RadiusAcctTotals<br />WHERE AcctDate &gt;= '" . $Date_Start . "' AND AcctDate &lt;= '" . $Date_End . "'<br />```<br />Конечно, ты можешь создать свою собственную систему по своему усмотрению, и тебе не удастся просто скопировать и вставить мою, но ты поймешь суть. Данные нужно обрабатывать, нельзя просто вываливать их в базу данных и ожидать, что они будут работать вечно. Базовая идея заключается в том, чтобы иметь как можно меньше записей в таблицах учета, используемых Radius, но то, как ты этого достигнешь, очевидно, можно сделать множеством разных способов — некоторые из которых могут тебе подойти, некоторые — нет. — C <br />
			<i>31.05.2006 05:55:00, savage.</i>]]></description>
			<link>http://mikrotik.moscow/forum/forum57/71737-problema-s-radius-acctsessionid-_dublirovannyy-uchyet_./message286587</link>
			<guid>http://mikrotik.moscow/forum/forum57/71737-problema-s-radius-acctsessionid-_dublirovannyy-uchyet_./message286587</guid>
			<pubDate>Wed, 31 May 2006 05:55:00 -0400</pubDate>
			<category>RouterOS</category>
		</item>
		<item>
			<title>Проблема с RADIUS AcctSessionId (дублированный учёт).</title>
			<description><![CDATA[<b><a href="http://mikrotik.moscow/forum/forum57/71737-problema-s-radius-acctsessionid-_dublirovannyy-uchyet_./message286586">Проблема с RADIUS AcctSessionId (дублированный учёт).</a></b> <i>RouterOS</i> в форуме <a href="http://mikrotik.moscow/forum/forum57/">RouterOS</a>. <br />
			Спасибо! Посмотрю. <br />
			<i>31.05.2006 04:21:00, poinths.</i>]]></description>
			<link>http://mikrotik.moscow/forum/forum57/71737-problema-s-radius-acctsessionid-_dublirovannyy-uchyet_./message286586</link>
			<guid>http://mikrotik.moscow/forum/forum57/71737-problema-s-radius-acctsessionid-_dublirovannyy-uchyet_./message286586</guid>
			<pubDate>Wed, 31 May 2006 04:21:00 -0400</pubDate>
			<category>RouterOS</category>
		</item>
		<item>
			<title>Проблема с RADIUS AcctSessionId (дублированный учёт).</title>
			<description><![CDATA[<b><a href="http://mikrotik.moscow/forum/forum57/71737-problema-s-radius-acctsessionid-_dublirovannyy-uchyet_./message286585">Проблема с RADIUS AcctSessionId (дублированный учёт).</a></b> <i>RouterOS</i> в форуме <a href="http://mikrotik.moscow/forum/forum57/">RouterOS</a>. <br />
			Не обновляйте свои базы данных, используя RadSessionId, используйте RadUniqueID. В конфигурационном файле radius есть настройка, в которой можно указать, какие атрибуты использовать для создания этой уникальной хэш-суммы, чтобы она оставалась уникальной. Я использую acct_unique { key = “User-Name, Acct-Session-Id, NAS-IP-Address, Client-IP-Address, NAS-Port” }. Пока что проблем не возникало. <br />
			<i>31.05.2006 04:14:00, savage.</i>]]></description>
			<link>http://mikrotik.moscow/forum/forum57/71737-problema-s-radius-acctsessionid-_dublirovannyy-uchyet_./message286585</link>
			<guid>http://mikrotik.moscow/forum/forum57/71737-problema-s-radius-acctsessionid-_dublirovannyy-uchyet_./message286585</guid>
			<pubDate>Wed, 31 May 2006 04:14:00 -0400</pubDate>
			<category>RouterOS</category>
		</item>
		<item>
			<title>Проблема с RADIUS AcctSessionId (дублированный учёт).</title>
			<description><![CDATA[<b><a href="http://mikrotik.moscow/forum/forum57/71737-problema-s-radius-acctsessionid-_dublirovannyy-uchyet_./message286584">Проблема с RADIUS AcctSessionId (дублированный учёт).</a></b> <i>RouterOS</i> в форуме <a href="http://mikrotik.moscow/forum/forum57/">RouterOS</a>. <br />
			RouterOS генерирует RADIUS AcctSessionId, который не очень уникален. Один и тот же session-id иногда генерируется в течение нескольких дней или часов. Если этот session-id ранее использовался для пользователя, и теперь этот же пользователь получает тот же session-id, то Radius accounting (radacct) обновит как новую, так и старую запись учета. Эта проблема усиливается при установке нескольких устройств RouterOS и роуминге пользователей между ними.<br /><br />Пример: Старая запись radacct: AcctSessionId: 80f000e0, UserName: testuser, Date: 2006-05-20 21:44:13<br /><br />Новая запись radacct: AcctSessionId: 80f000e0, UserName: testuser, Date: 2006-05-30 16:14:23 (Обратите внимание: один и тот же AcctSessionId)<br /><br />FreeRadius radacct использует AcctSessionId, UserName и NASIPAddress для обновления записи сессии:<br />accounting_update_query = "UPDAT E ${acct_table1} SET FramedIPAddress = ‘%{Framed-IP-Address}’, AcctSessionTime = ‘%{Acct-Session-Time}’, AcctInputOctets = ‘%{Acct-Input-Octets}’, AcctOutputOctets = ‘%{Acct-Output-Octets}’ WHERE AcctSessionId = ‘%{Acct-Session-Id}’ AND UserName = ‘%{SQL-User-Name}’ AND NASIPAddress= ‘%{NAS-IP-Address}’"<br /><br />В этом сценарии Radius обновит обе записи, что означает, что время сессии и трафик загрузки/выгрузки будет учтен дважды.<br /><br />Текущие AcctSessionId’s в RouterOS: 80f000e0, 80f000e1, 80f000e2, 80f000e3, 80f000e5<br /><br />Другие производители используют более уникальный Id: 447ce53300000013, 447c862f0000000f, 447c57cd00000006<br /><br />Если я создам уникальный SQL-ключ для AcctSessionId и UserName, то INSERT будет проигнорирован, а "старая" запись будет обновлена. Это работает, но приведет к некорректным записям учета, так как старая запись будет перезаписана. Желателен более уникальный AcctSessionId! Или есть способ задать длину sessionId? <br />
			<i>30.05.2006 22:22:00, poinths.</i>]]></description>
			<link>http://mikrotik.moscow/forum/forum57/71737-problema-s-radius-acctsessionid-_dublirovannyy-uchyet_./message286584</link>
			<guid>http://mikrotik.moscow/forum/forum57/71737-problema-s-radius-acctsessionid-_dublirovannyy-uchyet_./message286584</guid>
			<pubDate>Tue, 30 May 2006 22:22:00 -0400</pubDate>
			<category>RouterOS</category>
		</item>
	</channel>
</rss>
