Подскажите пожалуйста решение такой задачи, есть биллинг сервер, на нем радиус+мускул+веб со статистикой, проблема в том, что в статистику пишется IP адрес клиента который выдавался ему внутри туннеля VPN, а как-бы сделать что-бы в статистику попадал IP адрес с которого падымается тоннель, т.е. не тот который внутри туннеля, а тот, который используется повседневно для доступа в сеть.
Спасибо.
Желательно это сделать редствами радиуса, а не приписывать замысловатые скрипты в ppp-up и ppp-down.
Плохо читаем документацию:http://www.nibs.net.ua/src/pptpd/src/pptpd-1.1.4-export-cli....
После патча, pptpd передавет радиусу ip с которого подымается тоннель
>Плохо читаем документацию:
>
>http://www.nibs.net.ua/src/pptpd/src/pptpd-1.1.4-export-cli....
>
>После патча, pptpd передавет радиусу ip с которого подымается тоннельА этот патч на любую версию pptpd (я так понял, что именно он и патчится, правильно?) ляжет, или только на 1.1.4?
>Плохо читаем документацию:
>
>http://www.nibs.net.ua/src/pptpd/src/pptpd-1.1.4-export-cli....
>
>После патча, pptpd передавет радиусу ip с которого подымается тоннельЕще попутный вопросик, что надо изменит в самом радиусе (хотя бы примерно в каком месте и что изменить), чтобы этот параметр отдавался базе?
я банально подправил запросы в nibs.conf и все пишется как Вам и надо ;)accounting_start_query = "INSERT INTO ${acct_table} (gid, id, unique_id, user, server, port, client_ip, protocol, ip, call_to, call_from, terminate_cause,
connect_info, start_time, last_change, before_billing) VALUES (%%d, '%{Acct-Session-Id}', '%{Acct-Unique-Session-Id}', '%{SQL-User-Name}', '%{NAS-IP-Address}
', %{NAS-Port}, '%{Client-IP-Address}', '%{Framed-Protocol}', '%{Framed-IP-Address}', '%{Client-IP-Address}', '%{Tunnel-Client-Endpoint}', 'Online', '%{Connec
t-Info}', '%S', %l, %%8.6f)"
accounting_start_query_alt = "INSERT INTO ${acct_table} (gid, id, unique_id, user, server, port, client_ip, protocol, ip, call_to, call_from, terminate_ca
use, connect_info, start_time, last_change, before_billing) VALUES (%%d, '%{Acct-Session-Id}', '%{Acct-Unique-Session-Id}', '%{SQL-User-Name}', '%{NAS-IP-Addr
ess}', %{NAS-Port}, '%{Client-IP-Address}', '%{Framed-Protocol}', '%{Framed-IP-Address}', '%{Client-IP-Address}', '%{Tunnel-Client-Endpoint}', 'Online', '%{Co
nnect-Info}', from_unixtime(%l - %%d), %l, %%8.6f)"З.Ы. юзаю кошкароутер, как для других делать - ХЗ
>я банально подправил запросы в nibs.conf и все пишется как Вам и
>надо ;)
>
>accounting_start_query = "INSERT INTO ${acct_table} (gid, id, unique_id, user, server, port, client_ip,
>protocol, ip, call_to, call_from, terminate_cause,
> connect_info, start_time, last_change, before_billing) VALUES (%%d, '%{Acct-Session-Id}', '%{Acct-Unique-Session-Id}', '%{SQL-User-Name}', '%{NAS-IP-Address}
>', %{NAS-Port}, '%{Client-IP-Address}', '%{Framed-Protocol}', '%{Framed-IP-Address}', '%{Client-IP-Address}', '%{Tunnel-Client-Endpoint}', 'Online', '%{Connec
>t-Info}', '%S', %l, %%8.6f)"
>accounting_start_query_alt = "INSERT INTO ${acct_table} (gid, id, unique_id, user, server, port, client_ip,
>protocol, ip, call_to, call_from, terminate_ca
>use, connect_info, start_time, last_change, before_billing) VALUES (%%d, '%{Acct-Session-Id}', '%{Acct-Unique-Session-Id}', '%{SQL-User-Name}', '%{NAS-IP-Addr
>ess}', %{NAS-Port}, '%{Client-IP-Address}', '%{Framed-Protocol}', '%{Framed-IP-Address}', '%{Client-IP-Address}', '%{Tunnel-Client-Endpoint}', 'Online', '%{Co
>nnect-Info}', from_unixtime(%l - %%d), %l, %%8.6f)"
>
>З.Ы. юзаю кошкароутер, как для других делать - ХЗТ.е. ты дописал это в nibs.conf и все?, и никаких патчей?
Кошкарутер это я так понял cisco, поправь если не прав.
>Т.е. ты дописал это в nibs.conf и все?, и никаких патчей?ну да, я просто тупо откопировал и закоментил оригинальные, а эти подправил с оглядкой на detail файлы... собсно все :) загляни в detail, посмотри что тебе приходит, а потом просто подправишь запросы под себя и все...
>Кошкарутер это я так понял cisco, поправь если не прав.
угу... именно она и есть... не очень дорого, но жутко сердито :)
У тебя %{Client-IP-Address} дважды в запросе (а у меня 1 раз), это и есть тот самый адрес который мне нужен?, если так, то получается что он уже есть в запросе к базе, но почему-то не отображается в ней, если бы этого поля не существовало, то база бы возвращала ошибку.
Да, похоже что поспешил с вопросом, Client-IP-Adress это адрес NAS'а, ip - адрес внутри тоннеля, собственно вопрос в следующем, где у тебя в запросе переменная отвечающая за адрес клиента в сети?
> где у тебя в запросе переменная отвечающая за адрес клиента в сети?смотри сам
# less detail-20060401
Sat Apr 1 00:02:01 2006
NAS-IP-Address = x.y.z.246
NAS-Port = 13
NAS-Port-Type = Virtual
User-Name = "vpn054"
Acct-Status-Type = Start
Acct-Authentic = RADIUS
Service-Type = Framed-User
Acct-Session-Id = "00004DA0"
Framed-Protocol = PPP
Tunnel-Client-Endpoint:0 = "172.16.0.237"
Framed-IP-Address = x.y.z.92
Acct-Delay-Time = 0
Client-IP-Address = x.y.z.246
Acct-Unique-Session-Id = "bb45d1c5e4a91196"
Timestamp = 1143835321значит переменная '%{Tunnel-Client-Endpoint}' и есть IP адрес коннектящегося юзера... я тока реальные адреса я заменил на x.y.z ;) а в целом это мой обычный Start пакет... вот глядя на такие я и правил запросы...
Я б еще вот, что добавил:
В самом Нибсе(не установленом) есть папка doc, дык там есть файлики с описанием функций, ответы на вопросы...
Так вот там же есть описание всех переменых!!!
Вот так-с...>>У тебя %{Client-IP-Address} дважды в запросе (а у меня 1 раз), это и есть тот самый адрес который мне нужен?, если так, то получается что он уже есть в запросе к базе, но почему-то не отображается в ней, если бы этого поля не существовало, то база бы возвращала ошибку.
Еще надо посмотреть Тебе на структуру ДБ, что бы Ты знал, куда записывается ИП:
INSERT INTO ${acct_table} (... client_ip, protocol, ip, call_to, call_from...)
Дык вот: %{Client-IP-Address} два раза в client_ip и call_from записывается, в Базе посмотри - по идеи это и есть твой ИП клиента, а %{Framed-IP-Address} в ip - Его выделеный ИП.
Надо будет и Себе поиграться с этими параметрами
%{Framed-IP-Address} это собственно говоря и есть тот адрес который мне нужен, он записывается в поле базы данных call_from, точнее должен записываться, данное поле остается всегда пустым, похоже что Den был прав, просто pptpd не передает данную переменную Радиусу, не подскажет ли кто, новые версии pptpd (1.3.0 в частности) поддерживают такую функцию или всетаки придется патчить версию 1.1.4 ?
>%{Framed-IP-Address} это собственно говоря и есть тот адрес который мне нужен, он
>записывается в поле базы данных call_from, точнее должен записываться, данное поле
>остается всегда пустым, похоже что Den был прав, просто pptpd не
>передает данную переменную Радиусу, не подскажет ли кто, новые версии pptpd
>(1.3.0 в частности) поддерживают такую функцию или всетаки придется патчить версию
>1.1.4 ?патч надо накладывать руками, в одной консонли окрываем исходники, а в другой сам патч и смотрим что куда добавить. По другому не станет.
А новые версии poptop этого не умеют?
если это мне, то:>Я б еще вот, что добавил:
>В самом Нибсе(не установленом) есть папка doc, дык там есть файлики с
>описанием функций, ответы на вопросы...
>Так вот там же есть описание всех переменых!!!
>Вот так-с...я читал все это и даже бОльше =) я даже чуток изменил дистриб для себя чтоб оно ставилось куда и как мне надо...
>Еще надо посмотреть Тебе на структуру ДБ, что бы Ты знал, куда записывается ИП:
я знаю, иначе как бы я веб морду для юзеров с нуля писал? до админки руки никак не дойдут :(
>Дык вот: %{Client-IP-Address} два раза в client_ip и call_from записывается
я преследовал строго определенную цель - знать IP адрес клиента, я ее добился, остального буду добиваться по мере постановки задач ;)
Понимаешь, у тебя VPN делает кошкарутер, очень может быть что она умеет передавать радиусу параметр клиентского IP адреса, а у меня VPN'ом занимается pptpd версии 1.1.4 , вот он то как раз и неумеет передавать адрес клиента радиусу (именно поэтому поле для этого параметра в базе данных остается пустым), что бы он мог его передавать, его надо патчить, а вопрос в том что умеет ли это делать новые версии pptpd, если да, то зачем возиться со старьем, соберу и поставлю новую, если нет, то придется патчить :-(
>Понимаешь, у тебя VPN делает кошкарутер, очень может быть что она умеет
>передавать радиусу параметр клиентского IP адреса,
умеет, я же это на примере показал...
>а у меня VPN'ом занимается pptpd версии 1.1.4 , вот он то как раз и неумеет передавать адрес клиента радиусу (именно поэтому поле для этого параметра в базе данных остается пустым),
>что бы он мог его передавать, его надо патчить, а вопрос в том что умеет ли это делать новые версии pptpd, если да, то зачем возиться со старьем, соберу и поставлю новую, если нет, то придется патчить :-(
можно хороший совет? раз речь идет о софтварном решении - перепробуй ВСЕ возможные варианты и остановись на том который понравится/устроит больше всего... для начала лучше сразу начать тесты с exppp, т.к он может многое (например разделять траффик на локальный и интернетовский) и вдруг тебе он подойдет сразу... просто у меня сразу была кошка под руками и именно поэтому я не стал заморачиваться с софтварными решениями, но если бы жисть заставила, то пошел бы по пути "перепробуй все и выбери лучшее", честное слово ;)
А не подкинешь документашку на этот самый exppp.
>А не подкинешь документашку на этот самый exppp.
пока офф. сайт мертв :( кое чего найдешь на http://abills.asmodeus.com.ua/wiki/doku.php?id=abills:docs:e... ... автор abills чего то там правит в нем, я честно не в курсе что именно...
>>А не подкинешь документашку на этот самый exppp.
>пока офф. сайт мертв :( кое чего найдешь на http://abills.asmodeus.com.ua/wiki/doku.php?id=abills:docs:e... ... автор
>abills чего то там правит в нем, я честно не в
>курсе что именно...ОК, Спасибо, поковыряюсь на досуге.
>для
>начала лучше сразу начать тесты с exppp, т.к он может многое
>(например разделять траффик на локальный и интернетовский) и вдруг тебе он
>подойдет сразу... просто у меня сразу была кошка под руками и
>именно поэтому я не стал заморачиваться с софтварными решениями, но если
>бы жисть заставила, то пошел бы по пути "перепробуй все и
>выбери лучшее", честное слово ;)Помсмотрел я этот exppp, только вот непонял, причем тут он, если он только PPP делает, а шифрованием и всем остальным все равно занимается pptpd.
>Помсмотрел я этот exppp, только вот непонял, причем тут он, если он
>только PPP делает, а шифрованием и всем остальным все равно занимается
>pptpd.я помню что Вы просили решение о записи локального адреса, но вот отдает его exppp или не отдает я просто не знаю, чесслово, уж простите... я считаю, что неважно что именно обеспечивает процесс РРР терминирования будь то ppp/exppp/mpd/etc., важно чтобы это позволяло Вам учитывать раздельно локальный и глобальный траффики... именно потому что Вы только начинаете строительство своего узла доступа я и посоветовал exppp (как софтварное решение), дабы у Вас в наличии сразу был инструмент подобного учета, а в том что перед Вами рано или поздно встанет эта проблема я почему то даже не сомневаюсь ;) например передо мной она уже встала...