Simult Chek: различия между версиями

Материал из noname.com.ua
Перейти к навигацииПерейти к поиску
Строка 9: Строка 9:
   
 
Следующяя схема илюстрирует эту ситуацию
 
Следующяя схема илюстрирует эту ситуацию
  +
<PRE>
 
<TABLE border=1>
 
<TABLE border=1>
 
<TR>
 
<TR>
Строка 59: Строка 60:
 
</TD>
 
</TD>
 
</TR>
 
</TR>
 
 
 
</TABLE>
 
</TABLE>
  +
</PRE>

Версия 09:31, 29 апреля 2009

Описание проблемы

В сети используется VPN (accel-pptp) с авторизацией на центральном radius-сервере (freeradius). При попытке авторизации 2 и более клиентов с одинаковыми UserName может возникнуть ситуация когда пытающиеся авторизоваться (или часть из них) пройдут авторизацию успешно.

Это связано с особенностью провеки одновременности подключений - запрос

simul_count_query = "SELECT COUNT(*) FROM ${acct_table1} WHERE UserName=\'%{SQL-User-Name}\' AND AcctStopTime = 0"

проверяет тольк наличие сессий в таблице acct_table1 (обычно radacct). Сессии в таблице acct_table1 создаются только при получении Acct-пакета от NAS-а (VPN-серверов в моем случае ). В результате, возможна ситуация когда из-за различных причин, как например, нагрузка NAS-a или потерь в сети, в результате возникает некоторый промежмежуток времени, в течении которого возможно авторизоваться повторно.

Следующяя схема илюстрирует эту ситуацию

<TABLE border=1>
 <TR>
  <TD>
    111
  </TD>
  <TD>
    2222
  </TD>

 </TR>
 <TR>
  <TD>
    111
  </TD>
 </TR>
 <TR>
  <TD>
    111
  </TD>
 </TR>
 <TR>
  <TD>
    111
  </TD>
 </TR>
 <TR>
  <TD>
    111
  </TD>
 </TR>
 <TR>
  <TD>
    111
  </TD>
 </TR>
 <TR>
  <TD>
    111
  </TD>
 </TR>
 <TR>
  <TD>
    111
  </TD>
 </TR>
 <TR>
  <TD>
    111
  </TD>
 </TR>
</TABLE>