URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID1
Нить номер: 61384
[ Назад ]

Исходное сообщение
"Ограничение трафика по VPN"

Отправлено rlk , 31-Окт-05 12:32 
Добрый день!

Поднят VPN сервер на базе mpd в ОС FreeBSD для доступа пользователей к внутренней сети (терминальному серверу) из любой точки мира. Выделяется виртуальный фиксированный IP по логину. Задача заключается в том, что одному из клиентов необходимо ограничить трафик исходящий из внутренней сети, например по 5Мб в день. Или сделать так чтобы он не смог ни какие данный слить из сети к себе.

Помогите решить проблемку плз.


Содержание

Сообщения в этом обсуждении
"Ограничение трафика по VPN"
Отправлено denn , 31-Окт-05 12:59 
>Добрый день!
>
>Поднят VPN сервер на базе mpd в ОС FreeBSD для доступа пользователей
>к внутренней сети (терминальному серверу) из любой точки мира. Выделяется виртуальный
>фиксированный IP по логину. Задача заключается в том, что одному из
>клиентов необходимо ограничить трафик исходящий из внутренней сети, например по 5Мб
>в день. Или сделать так чтобы он не смог ни какие
>данный слить из сети к себе.
>
>Помогите решить проблемку плз.

пишеться приблуда на переле, а под нее в канф мпд всавляешь строки
аккаутинга.
все ложиться в таблицу радиуса, после чего делаешь проверку лимита в байтах.


"Ограничение трафика по VPN"
Отправлено stakado , 31-Окт-05 14:50 
>>Добрый день!
>>
>>Поднят VPN сервер на базе mpd в ОС FreeBSD для доступа пользователей
>>к внутренней сети (терминальному серверу) из любой точки мира. Выделяется виртуальный
>>фиксированный IP по логину. Задача заключается в том, что одному из
>>клиентов необходимо ограничить трафик исходящий из внутренней сети, например по 5Мб
>>в день. Или сделать так чтобы он не смог ни какие
>>данный слить из сети к себе.
>>
>>Помогите решить проблемку плз.
>
>пишеться приблуда на переле, а под нее в канф мпд всавляешь строки
>
>аккаутинга.
>все ложиться в таблицу радиуса, после чего делаешь проверку лимита в байтах.
>

Очень, ну просто очеееень детальный ответ.
Если бы человек знал всё о чём ты написал вопросов тут он бы не задавал.

У мя встал вопрос хотя бы такой: "всавляешь строки аккаутинга" --- какие строки? Где их взять?


"Ограничение трафика по VPN"
Отправлено denn , 31-Окт-05 15:07 
>>>Добрый день!
>>>
>>>Поднят VPN сервер на базе mpd в ОС FreeBSD для доступа пользователей
>>>к внутренней сети (терминальному серверу) из любой точки мира. Выделяется виртуальный
>>>фиксированный IP по логину. Задача заключается в том, что одному из
>>>клиентов необходимо ограничить трафик исходящий из внутренней сети, например по 5Мб
>>>в день. Или сделать так чтобы он не смог ни какие
>>>данный слить из сети к себе.
>>>
>>>Помогите решить проблемку плз.
>>
>>пишеться приблуда на переле, а под нее в канф мпд всавляешь строки
>>
>>аккаутинга.
>>все ложиться в таблицу радиуса, после чего делаешь проверку лимита в байтах.
>>
>
>Очень, ну просто очеееень детальный ответ.
>Если бы человек знал всё о чём ты написал вопросов тут он
>бы не задавал.
>
>У мя встал вопрос хотя бы такой: "всавляешь строки аккаутинга" --- какие
>строки? Где их взять?

а кто просил дать рабочие конфы. я дал направление.
ман на мпд
поиск по форуму, я оч детально это описывал с ссылками
и скрипт выкладывал


"Ограничение трафика по VPN"
Отправлено stakado , 31-Окт-05 15:15 
>>>>Добрый день!
>>>>
>>>>Поднят VPN сервер на базе mpd в ОС FreeBSD для доступа пользователей
>>>>к внутренней сети (терминальному серверу) из любой точки мира. Выделяется виртуальный
>>>>фиксированный IP по логину. Задача заключается в том, что одному из
>>>>клиентов необходимо ограничить трафик исходящий из внутренней сети, например по 5Мб
>>>>в день. Или сделать так чтобы он не смог ни какие
>>>>данный слить из сети к себе.
>>>>
>>>>Помогите решить проблемку плз.
>>>
>>>пишеться приблуда на переле, а под нее в канф мпд всавляешь строки
>>>
>>>аккаутинга.
>>>все ложиться в таблицу радиуса, после чего делаешь проверку лимита в байтах.
>>>
>>
>>Очень, ну просто очеееень детальный ответ.
>>Если бы человек знал всё о чём ты написал вопросов тут он
>>бы не задавал.
>>
>>У мя встал вопрос хотя бы такой: "всавляешь строки аккаутинга" --- какие
>>строки? Где их взять?
>
>а кто просил дать рабочие конфы. я дал направление.
>ман на мпд
>поиск по форуму, я оч детально это описывал с ссылками
>и скрипт выкладывал

Кароче говоря - всё как всегда. Понты да пальцы. Мессаги о том, насколько ты крут и насколько зелен человек, задавший вопрос --- очень полезно и позновательно!
Очень благодарен, спасибо!


"Ограничение трафика по VPN"
Отправлено denn , 31-Окт-05 15:26 
>Кароче говоря - всё как всегда. Понты да пальцы. Мессаги о том,
>насколько ты крут и насколько зелен человек, задавший вопрос --- очень
>полезно и позновательно!
>Очень благодарен, спасибо!

не понятно чего ты не в своей теме флудишь...

автору темы:
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.");
}"


"Ограничение трафика по VPN"
Отправлено rlk , 31-Окт-05 15:40 
>>Кароче говоря - всё как всегда. Понты да пальцы. Мессаги о том,
>>насколько ты крут и насколько зелен человек, задавший вопрос --- очень
>>полезно и позновательно!
>>Очень благодарен, спасибо!
>
>не понятно чего ты не в своей теме флудишь...
>
>автору темы:
>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.");
>}"

Спасибо.
Чувствую тут разбираться и разбираться ) только времени нет :( а есть ли вариант попроще ? :)
Мне главное чтоб данные из сети не вытянули или если будут тянуть не менее как говористя года время было :))


"Ограничение трафика по VPN"
Отправлено lsg , 05-Янв-10 18:52 
остался вопрос как в перле выяснить, что пароль не правильный, чтобы записать это куданить

"Ограничение трафика по VPN"
Отправлено lsg , 05-Янв-10 18:59 
тоесть  сделать что-то типа такого

if ($RAD_CHECK{'User-Password'} = $r->{'password'}) {#пароль правильный } else {#пароль не правильный -делаю свои функции}