Добрый день!Поднят VPN сервер на базе mpd в ОС FreeBSD для доступа пользователей к внутренней сети (терминальному серверу) из любой точки мира. Выделяется виртуальный фиксированный IP по логину. Задача заключается в том, что одному из клиентов необходимо ограничить трафик исходящий из внутренней сети, например по 5Мб в день. Или сделать так чтобы он не смог ни какие данный слить из сети к себе.
Помогите решить проблемку плз.
>Добрый день!
>
>Поднят VPN сервер на базе mpd в ОС FreeBSD для доступа пользователей
>к внутренней сети (терминальному серверу) из любой точки мира. Выделяется виртуальный
>фиксированный IP по логину. Задача заключается в том, что одному из
>клиентов необходимо ограничить трафик исходящий из внутренней сети, например по 5Мб
>в день. Или сделать так чтобы он не смог ни какие
>данный слить из сети к себе.
>
>Помогите решить проблемку плз.пишеться приблуда на переле, а под нее в канф мпд всавляешь строки
аккаутинга.
все ложиться в таблицу радиуса, после чего делаешь проверку лимита в байтах.
>>Добрый день!
>>
>>Поднят VPN сервер на базе mpd в ОС FreeBSD для доступа пользователей
>>к внутренней сети (терминальному серверу) из любой точки мира. Выделяется виртуальный
>>фиксированный IP по логину. Задача заключается в том, что одному из
>>клиентов необходимо ограничить трафик исходящий из внутренней сети, например по 5Мб
>>в день. Или сделать так чтобы он не смог ни какие
>>данный слить из сети к себе.
>>
>>Помогите решить проблемку плз.
>
>пишеться приблуда на переле, а под нее в канф мпд всавляешь строки
>
>аккаутинга.
>все ложиться в таблицу радиуса, после чего делаешь проверку лимита в байтах.
>Очень, ну просто очеееень детальный ответ.
Если бы человек знал всё о чём ты написал вопросов тут он бы не задавал.У мя встал вопрос хотя бы такой: "всавляешь строки аккаутинга" --- какие строки? Где их взять?
>>>Добрый день!
>>>
>>>Поднят VPN сервер на базе mpd в ОС FreeBSD для доступа пользователей
>>>к внутренней сети (терминальному серверу) из любой точки мира. Выделяется виртуальный
>>>фиксированный IP по логину. Задача заключается в том, что одному из
>>>клиентов необходимо ограничить трафик исходящий из внутренней сети, например по 5Мб
>>>в день. Или сделать так чтобы он не смог ни какие
>>>данный слить из сети к себе.
>>>
>>>Помогите решить проблемку плз.
>>
>>пишеться приблуда на переле, а под нее в канф мпд всавляешь строки
>>
>>аккаутинга.
>>все ложиться в таблицу радиуса, после чего делаешь проверку лимита в байтах.
>>
>
>Очень, ну просто очеееень детальный ответ.
>Если бы человек знал всё о чём ты написал вопросов тут он
>бы не задавал.
>
>У мя встал вопрос хотя бы такой: "всавляешь строки аккаутинга" --- какие
>строки? Где их взять?а кто просил дать рабочие конфы. я дал направление.
ман на мпд
поиск по форуму, я оч детально это описывал с ссылками
и скрипт выкладывал
>>>>Добрый день!
>>>>
>>>>Поднят VPN сервер на базе mpd в ОС FreeBSD для доступа пользователей
>>>>к внутренней сети (терминальному серверу) из любой точки мира. Выделяется виртуальный
>>>>фиксированный IP по логину. Задача заключается в том, что одному из
>>>>клиентов необходимо ограничить трафик исходящий из внутренней сети, например по 5Мб
>>>>в день. Или сделать так чтобы он не смог ни какие
>>>>данный слить из сети к себе.
>>>>
>>>>Помогите решить проблемку плз.
>>>
>>>пишеться приблуда на переле, а под нее в канф мпд всавляешь строки
>>>
>>>аккаутинга.
>>>все ложиться в таблицу радиуса, после чего делаешь проверку лимита в байтах.
>>>
>>
>>Очень, ну просто очеееень детальный ответ.
>>Если бы человек знал всё о чём ты написал вопросов тут он
>>бы не задавал.
>>
>>У мя встал вопрос хотя бы такой: "всавляешь строки аккаутинга" --- какие
>>строки? Где их взять?
>
>а кто просил дать рабочие конфы. я дал направление.
>ман на мпд
>поиск по форуму, я оч детально это описывал с ссылками
>и скрипт выкладывалКароче говоря - всё как всегда. Понты да пальцы. Мессаги о том, насколько ты крут и насколько зелен человек, задавший вопрос --- очень полезно и позновательно!
Очень благодарен, спасибо!
>Кароче говоря - всё как всегда. Понты да пальцы. Мессаги о том,
>насколько ты крут и насколько зелен человек, задавший вопрос --- очень
>полезно и позновательно!
>Очень благодарен, спасибо!не понятно чего ты не в своей теме флудишь...
автору темы:
http://www.bretterklieber.com/mpd/doc3/mpd20.html#20(с уважением и благадарностью к Pizik Ilya)
"radiusd.conf (выдержки):...
modules {
...
perl {
module = ${prefix}/etc/raddb/acct.pl
func_detach = detach
func_authorize = authorize
func_authenticate = authenticate
func_accounting = accounting
func_start_accounting = start_accounting
func_stop_accounting = stop_accounting
func_preacct = preacct
func_checksimul = checksimul
}
...
}
...
# Authorization.authorize {
mschap
chap
perl
}# Accounting. Log the accounting data.
accounting {
acct_unique
detail
unix # wtmp file
radutmp
perl
}# Session database, used for checking Simultaneous-Use. Either the radutmp
# or rlm_sql module can handle this.
# The rlm_sql module is *much* faster
session {
radutmp
}соответственно определяем названия функций в модуле.
далее просто наш пример:
${prefix}/etc/raddb/acct.pl:sub authorize {
...
# что-то выдаем$RAD_CHECK{'User-Password'} = $r->{'password'};
$RAD_REPLY{'Session-Octets-Limit'} = $r->{'maxtraf'};
$RAD_REPLY{'Session-Octets-Direction'} = '0';
$RAD_REPLY{'Framed-IP-Address'} = $r->{'static_ip'};
$RAD_REPLY{'Service-Type'} = 'Framed-User';
$RAD_REPLY{'Framed-Protocol'} = 'PPP';
$RAD_REPLY{'Session-Timeout'} = '86400';
$RAD_REPLY{'Framed-Compression'} = 'Van-Jacobson-TCP-IP';
$RAD_REPLY{'Framed-IP-Netmask'} = '255.255.255.255';# &radiusd::radlog(0, "RAD_CHECK: ".Dumper \%RAD_CHECK. " RAD_REPLY: ".Dumper \%RAD_REPLY);
return RLM_MODULE_UPDATED;
}sub checksimul {
return RLM_MODULE_OK;
}sub stop_accounting {
# Что-то делаем при отключении пользователя# &radiusd::radlog(0, "rlm_perl:: stop_accounting");
&radiusd::radlog(0, sprintf("logout [%s] (octets in: %d, octets out: %d)", $RAD_REQUEST{'User-Name'},
$RAD_REQUEST{'Acct-Input-Octets'}, $RAD_REQUEST{'Acct-
Output-Octets'}));
return RLM_MODULE_OK;
}sub start_accounting {
# &radiusd::radlog(0, "rlm_perl:: start_accounting");
return RLM_MODULE_OK;
}sub accounting {
# А вот тут можно получить из базы данные и их сравнивать или другие критерии придумать :)
$RAD_REPLY{'Drop-User'} = 'Yes' if(($r->{'maxtraf'}-$RAD_REQUEST{'Acct-Input-Octets'}-$RAD_REQUEST{'Acct-Output-Octets'}) < 0);# &radiusd::radlog(0, "rlm_perl:: accounting");
return RLM_MODULE_OK;
}sub preacct {
return RLM_MODULE_OK;
}# Shutdown procedures
sub detach
{
# &radiusd::radlog(0,"rlm_perl::Detaching. Reloading. Done.");
}"
>>Кароче говоря - всё как всегда. Понты да пальцы. Мессаги о том,
>>насколько ты крут и насколько зелен человек, задавший вопрос --- очень
>>полезно и позновательно!
>>Очень благодарен, спасибо!
>
>не понятно чего ты не в своей теме флудишь...
>
>автору темы:
>http://www.bretterklieber.com/mpd/doc3/mpd20.html#20
>
>(с уважением и благадарностью к Pizik Ilya)
>"radiusd.conf (выдержки):
>
>...
>modules {
>...
> perl {
>
>module = ${prefix}/etc/raddb/acct.pl
>
>func_detach = detach
>
>func_authorize = authorize
>
>func_authenticate = authenticate
>
>func_accounting = accounting
>
>func_start_accounting = start_accounting
>
>func_stop_accounting = stop_accounting
>
>func_preacct = preacct
>
>func_checksimul = checksimul
> }
>...
>}
>...
># Authorization.
>
>authorize {
> mschap
> chap
> perl
>}
>
># Accounting. Log the accounting data.
>accounting {
> acct_unique
> detail
> unix
> # wtmp file
>
> radutmp
> perl
>}
>
># Session database, used for checking Simultaneous-Use. Either the radutmp
># or rlm_sql module can handle this.
># The rlm_sql module is *much* faster
>session {
> radutmp
>}
>
>соответственно определяем названия функций в модуле.
>
>далее просто наш пример:
>${prefix}/etc/raddb/acct.pl:
>
>sub authorize {
>...
># что-то выдаем
>
> $RAD_CHECK{'User-Password'} = $r->{'password'};
>
> $RAD_REPLY{'Session-Octets-Limit'} = $r->{'maxtraf'};
> $RAD_REPLY{'Session-Octets-Direction'} = '0';
> $RAD_REPLY{'Framed-IP-Address'} = $r->{'static_ip'};
> $RAD_REPLY{'Service-Type'} = 'Framed-User';
> $RAD_REPLY{'Framed-Protocol'} = 'PPP';
> $RAD_REPLY{'Session-Timeout'} = '86400';
> $RAD_REPLY{'Framed-Compression'} = 'Van-Jacobson-TCP-IP';
> $RAD_REPLY{'Framed-IP-Netmask'} = '255.255.255.255';
>
> # &radiusd::radlog(0, "RAD_CHECK: ".Dumper \%RAD_CHECK. " RAD_REPLY: ".Dumper
>\%RAD_REPLY);
> return RLM_MODULE_UPDATED;
>}
>
>sub checksimul {
> return RLM_MODULE_OK;
>}
>
>sub stop_accounting {
># Что-то делаем при отключении пользователя
>
> # &radiusd::radlog(0, "rlm_perl:: stop_accounting");
> &radiusd::radlog(0, sprintf("logout [%s] (octets in: %d, octets out:
>%d)", $RAD_REQUEST{'User-Name'},
>$RAD_REQUEST{'Acct-Input-Octets'}, $RAD_REQUEST{'Acct-
>Output-Octets'}));
> return RLM_MODULE_OK;
>}
>
>sub start_accounting {
> # &radiusd::radlog(0, "rlm_perl:: start_accounting");
> return RLM_MODULE_OK;
>}
>
>sub accounting {
>
># А вот тут можно получить из базы данные и их сравнивать
>или другие критерии придумать :)
> $RAD_REPLY{'Drop-User'} = 'Yes' if(($r->{'maxtraf'}-$RAD_REQUEST{'Acct-Input-Octets'}-$RAD_REQUEST{'Acct-Output-Octets'}) < 0);
>
> # &radiusd::radlog(0, "rlm_perl:: accounting");
>
> return RLM_MODULE_OK;
>}
>
>sub preacct {
> return RLM_MODULE_OK;
>}
>
># Shutdown procedures
>sub detach
>{
> # &radiusd::radlog(0,"rlm_perl::Detaching. Reloading. Done.");
>}"Спасибо.
Чувствую тут разбираться и разбираться ) только времени нет :( а есть ли вариант попроще ? :)
Мне главное чтоб данные из сети не вытянули или если будут тянуть не менее как говористя года время было :))
остался вопрос как в перле выяснить, что пароль не правильный, чтобы записать это куданить
тоесть сделать что-то типа такогоif ($RAD_CHECK{'User-Password'} = $r->{'password'}) {#пароль правильный } else {#пароль не правильный -делаю свои функции}