Гость Гость_Denis Опубликовано: 2004-06-13 00:43:05 Share Опубликовано: 2004-06-13 00:43:05 VPN Поддержка ? в планах есть, а будет -ли ? Может возможно ввести / убрать понятие ИНТЕРФЕЙС в конфиге пользователя ? или например понимать маски интерфейса - /dev/ppp* Ссылка на сообщение Поделиться на других сайтах
Гость Гость_I_Destr Опубліковано: 2004-07-09 08:54:08 Share Опубліковано: 2004-07-09 08:54:08 Поддерживаю предыдущего оратора! Если писать полноценный биллинг (которым хотелось бы видеть СТГ1/2), то туда просто НЕОБХОДИМО включить ВПН! Кроме того, было бы просто замечательно включить также модуль повременного пользования инетом. Можете со мной не согласиться, что мол, есть всякие радиусы и прочая лабудень, но очень хотелось бы работать с ЕДИНОЙ БИЛЛИНГОВОЙ СИСТЕМОЙ, а не собирать все по кускам Ссылка на сообщение Поделиться на других сайтах
den68 0 Опубліковано: 2004-07-11 16:39:26 Share Опубліковано: 2004-07-11 16:39:26 Если писать полноценный биллинг (которым хотелось бы видеть СТГ1/2), то туда просто НЕОБХОДИМО включить ВПН! Если всеже кому интересно видеть ВПН, давайте совместно примем усилия, например на исходниках СТГ1, там только интерфейсы по маске слушать, например ppp*. Или вообще от прослушивания отказаться и наваять внешний модуль к pppd, что-бы заливал статистику непосредственно в СТГ, но это ИМХО надо делать в цикле (например раз в 2-5 минут), кто с АПИ ПППД близко общался? В заключение еще базу пользователей в SQL перенести и будет тот самый НАТУР ПРОДУКТ о котором мечты. P.S. Билинг в первую голову должен отвечать требованиям безопасности ПОТРЕБЛЕНИЯ трафика, другими словами что-б трафик (деньги) не перли. При системе открытой сети, пусть и с авторизацией, никто не мешает прописать "хакеру" ИП и МАК того кто уже зарегистрировался в сети, и жрать его трафик по малу или по многу - в зависимости от настроения. С ВПН такая схема невозможна, у каждого свой интерфейс, а доступ пользователей можно регулировать добавлением/удалением ЛОГИН, ПАРОЛЬ,ИП в chap-secret например. В общем - кому интересна данная теме - пишите, вместе чего либо сваяем. Ссылка на сообщение Поделиться на других сайтах
stg-34 0 Опубліковано: 2004-07-11 22:42:39 Share Опубліковано: 2004-07-11 22:42:39 С ВПН такая схема невозможна, у каждого свой интерфейс, а доступ пользователей можно регулировать добавлением/удалением ЛОГИН, ПАРОЛЬ,ИП в chap-secret например. Ты в курсе как можно собирать статистику с ВПН-сервера? Как выглядит эта статистика? Если получится сделать сбор стаитстики с ВПН, скажем раз в минуту, то не проблема прикрутить это к стг. Ссылка на сообщение Поделиться на других сайтах
AlexM 0 Опубліковано: 2004-07-12 14:16:42 Share Опубліковано: 2004-07-12 14:16:42 Для того что бы собирать статистику с VPN или PPoE что IMHO удобнее надо писать Radius Server, а именно плагин к StarGazer чтоб он являлся Radius Server. Что в принципе удобно и красиво... Но потребует значительных затрат времени помойму пока это не актуально, имеет смысл довести текущии режимы до нормальной работоспособности. Ссылка на сообщение Поделиться на других сайтах
den68 0 Опубліковано: 2004-07-12 16:49:51 Share Опубліковано: 2004-07-12 16:49:51 Ты в курсе как можно собирать статистику с ВПН-сервера? Как выглядит эта статистика?Если получится сделать сбор стаитстики с ВПН, скажем раз в минуту, то не проблема прикрутить это к стг. Да, я смотрел примеры плагинов для ПППД, он понимает , там есть реализация опроса. Я попозднее соберу все что у меня есть по данному поводу и кину тебе в мыло. Пока приведу пару ссылк: http://www.chelcom.ru/~anton/projects/pppd-stacker/ http://linux.uatel.net.ua/soft/ppp/ppp-verbose.phtml http://nsg.net.ru:8100/Lists/nsg-linux/Message/237.html http://nsg.net.ru:8100/Lists/nsg-linux/Message/232.html http://nsg.net.ru:8100/Lists/nsg-linux/Message/234.html http://freshmeat.net/projects/pppd-tacacsradius/ http://packages.debian.org/unstable/net/pppdcapiplugin.html мжно пйти и таким путем: http://nibs.net.ua/src/radpppd/radpppd.tgz http://nibs.net.ua/src/radpppd/ http://shs.sumy.ua/cgi-bin/index.cgi?actio...rch&type=recent Ссылка на сообщение Поделиться на других сайтах
AlexM 0 Опубліковано: 2004-07-12 18:40:30 Share Опубліковано: 2004-07-12 18:40:30 Да, я смотрел примеры плагинов для ПППД, он понимает , там есть реализация опроса. Я попозднее соберу все что у меня есть по данному поводу и кину тебе в мыло. Вообще IMHO писать свой плагин вместо того чтобы воспользоватся уже говтовым протоколом(Radius) изврат... Radius именно для этого и предназначен. Ссылка на сообщение Поделиться на других сайтах
den68 0 Опубліковано: 2004-07-12 21:01:55 Share Опубліковано: 2004-07-12 21:01:55 Если получится сделать сбор стаитстики с ВПН, скажем раз в минуту, то не проблема прикрутить это к стг. В догонку - за основу подхода к проблеме можно взять плагин к пппд: http://www.chelcom.ru/~anton/projects/pppd-tacacs+radius/ http://www.chelcom.ru/~anton/projects/file...us-1.4.1.tar.gz и собственно изменить формат слива статистики (аккоунтига), + повыкидывать лишнее, приципить к СТГ килялку процесса ПППД с 0 или отрицательным балансом... :vah: (на первый взгляд) Ссылка на сообщение Поделиться на других сайтах
stg-34 0 Опубліковано: 2004-07-12 22:21:48 Share Опубліковано: 2004-07-12 22:21:48 Народ, извините за неграмотность, но вы можете мне сказать, что такое радиус, где про него почитать, и с чего вдруг радиус имеет отношение к сбору статитсики с впн? Ссылка на сообщение Поделиться на других сайтах
AlexM 0 Опубліковано: 2004-07-13 05:37:57 Share Опубліковано: 2004-07-13 05:37:57 Вот тут достаточно внятное и простое объяснение что такое Radius и TACACS+. Вообще Radius это протокол для учета и аутентификации пользователей подписанных на услуги. А отношение к VPN он имеет потомучто VPN использует pppd для которого существует плагин radius_client.o. Дальше описывать не буду в линке ниже приведен некий алгоритм работы pppd, радиус клиента и радиус сервера в связке. http://www.lanbilling.ru/radius_tacacs.html Ссылка на сообщение Поделиться на других сайтах
den68 0 Опубліковано: 2004-07-13 14:38:12 Share Опубліковано: 2004-07-13 14:38:12 А отношение к VPN он имеет потомучто VPN использует pppd для которого существует плагин radius_client.o. Ну а зачем париться с этй тулзой и внедрять протокол радиуса в СТГ. Ты сам написал ответ - "отношение к VPN он имеет потомучто VPN использует pppd для которого существует плагин radius_client.o" - кстати плагинов к ПППД намного болеше, т третьих разработчиков. Так надо наваять собственный плагин, с протоколом к СТГ, тем более что исходники есть, там все довольно просто. Ссылка на сообщение Поделиться на других сайтах
AlexM 0 Опубліковано: 2004-07-13 16:30:10 Share Опубліковано: 2004-07-13 16:30:10 den68 А вот интересно в "поддержку VPN" вкладывается понятие авторизации или нет, судя по предложению добавлять в chap-secret нет? Никто не спорит что написать свой плагин можно... Но можно подстраиватся под принятые стандарты которые позволят интегрироватся нам не только с pppd, а можно воять свое. Все _развитые комерчиские биллинговые системы_ имеют Radius Server. Почему же тогда нужно изобретать велосипед, когда протокол Radius хорошо описан, стандартизирован и нет абсолютно никакой гарантии что мы придумаем что-то лучше. Также kill ppp c 0 абсолютно не рулит. Просто надо отрубать пользователя плагином. С ВПН такая схема невозможна, у каждого свой интерфейс, а доступ пользователей можно регулировать добавлением/удалением ЛОГИН, ПАРОЛЬ,ИП в chap-secret например. И вообще насчет этого тоже очень спорно учитывая что вопервых насколько я смотрел есть понятие keepalive в старгейзере. А еще ты себе представляеш что будет если два юзвера с одинм IP появится в сети? Работать просто не сможет не один не другой. ВПН даже с секурными паролями ломается не сильно сложнее чем текущее состояние старгейзера. Другой вопрос что у клиента посуществу всегда прямо с операционной системой есть клиент, и это действительно очень удобно. Плюс можно на сервере сделать выдачу реальных IP адресов. Потому я за ВПН, но счетаю что имеет смысл отложить это скажем на третий релиз. Ссылка на сообщение Поделиться на других сайтах
den68 0 Опубліковано: 2004-07-15 09:12:20 Share Опубліковано: 2004-07-15 09:12:20 А еще ты себе представляеш что будет если два юзвера с одинм IP появится в сети? Работать просто не сможет не один не другой. А за чем в схеме с ВПН иметь одинаквые IP, и впрос весьма спорный - как заламать ВПН при правильн поднятом файрволе между входным и выходным (ппп) интерфейсами. А тот факт что могут появиться два пользвателя с одним ИП в принципе исключен самой схемомой реализации: например пптпд или выделяет адрес из пула адресов, соответственно два раза один и тотже адрес он выделить не сможет, или адреса жестко привязаны к логину и паролю в файле *ap-secrets - что тоже исключает двойное назначение. И ествено поскольку линк Поинт-ту-Поинт пользователь не может поменять адрес на выходном интерфейсе, и т.д. Ссылка на сообщение Поделиться на других сайтах
AlexM 0 Опубліковано: 2004-07-15 10:26:09 Share Опубліковано: 2004-07-15 10:26:09 А за чем в схеме с ВПН иметь одинаквые IP Это относилось к фразе, что в Старгейзере очень легко подломать защиту сменой IP адреса и MAC адреса, я какраз и говорил что в локальной сети это не возможно и потому подмена не произойдет, а если компьютер выключен то соответсвенно не работает авторизатор StarGazer и потому подмена нечего не даст. Потому как бы то что ты говориш и так очевидно. Текущая реализация StarGazer с авторизацией не проще в зломе чем VPN. А защищенность VPN никак не звязанна с фаирволом. Ссылка на сообщение Поделиться на других сайтах
stg-34 0 Опубліковано: 2004-08-04 11:50:40 Share Опубліковано: 2004-08-04 11:50:40 Вопрос к любителям ВПН. 1. Как вы представляете работу СТГ + ВПН? Как используетс авторизатор и используется ли вообще? 2. Какими средствами авторизуется пользователь ВПН? 3. Можно ли написать прогу или скрипт, которая обращаясь к радиусу или еще к кому-то могла сказать такое: "пользователь такокй-то скачал столько-то начиная с такого-то времени по таким-то направлениям"? Если п.3 реализуем, я сделаю поддержку ВПН в СТГ. Ссылка на сообщение Поделиться на других сайтах
den68 0 Опубліковано: 2004-08-04 13:47:15 Share Опубліковано: 2004-08-04 13:47:15 Вопрос к любителям ВПН. 1. Как вы представляете работу СТГ + ВПН? Как используетс авторизатор и используется ли вообще? 2. Какими средствами авторизуется пользователь ВПН? 3. Можно ли написать прогу или скрипт, которая обращаясь к радиусу или еще к кому-то могла сказать такое: "пользователь такокй-то скачал столько-то начиная с такого-то времени по таким-то направлениям"? Если п.3 реализуем, я сделаю поддержку ВПН в СТГ. ПО пункту 3 - связка pptpd + pppd + плагин для pppd pppd_radius + *radius server. тлько завязываться на всю эту мутоту вместе ИМХО не имеет смысла при прикручивании к СТГ. Уж больно мнго разнообразного (кривоватого) софта (Радиус имелся в виду). 1. pptpd - собственно слушает порт 1723 и поднимает pppd. 2. в pppd происходит авторизация присвоение ИП итд, на сновании файла pap-secret или chap-secret, или через pppd_radius плугин путем запроса у радиус сервера. 3. Радиус сервер поддерживает верефикацию клиента на момент коннекта, аккаунтинг по времени, трафику итд. - но имеет ИМХО не чень удобный конфиг и вывод информации. 2.а pppd_radius - собственно вот этот плагин и надо переписать под протокол общения с СТГ. Ссылка на сообщение Поделиться на других сайтах
stg-34 0 Опубліковано: 2004-08-04 14:15:24 Share Опубліковано: 2004-08-04 14:15:24 ПО пункту 3 - связка pptpd + pppd + плагин для pppd pppd_radius + *radius server.тлько завязываться на всю эту мутоту вместе ИМХО не имеет смысла при прикручивании к СТГ. Уж больно мнго разнообразного (кривоватого) софта (Радиус имелся в виду). 1. pptpd - собственно слушает порт 1723 и поднимает pppd. 2. в pppd происходит авторизация присвоение ИП итд, на сновании файла pap-secret или chap-secret, или через pppd_radius плугин путем запроса у радиус сервера. 3. Радиус сервер поддерживает верефикацию клиента на момент коннекта, аккаунтинг по времени, трафику итд. - но имеет ИМХО не чень удобный конфиг и вывод информации. 2.а pppd_radius - собственно вот этот плагин и надо переписать под протокол общения с СТГ. Так, ща я поясню как я вижу себе все стыковку. 1. Есть авторизатор. Клиент коннектится. На сервере выполняется скрипт онконект, в нем происходит подъем pppd (я верно мыслю?) 2. Часть сервера stg, ответственная за подсчет трафика остановлена и не работает. 3. Кто-то собирает статистику о трафике (радиус?). 4. Раз в минуту (5, 10 ...) вызывается скрипт, который каким-то боком (это моя проблема каким) передает информацию о статистике серверу стг. 5. сервер снимает деньги на основании переданной ему статистики, и если денег не стало, вызывает ondisconnect, в котором кладет pppd. Вот, в этой схеме меня интересует можно ли в скриптах onconnect и ondisconnrct выполнить установление и разрыв впн-соединения? Ссылка на сообщение Поделиться на других сайтах
AlexM 0 Опубліковано: 2004-08-04 21:51:56 Share Опубліковано: 2004-08-04 21:51:56 pppd_radius - собственно вот этот плагин и надо переписать под протокол общения с СТГ. В принцепе вполне реально. А стыковка должна выглядить примерно так не суть важно RADIUS протокол мы используем или нет: 1. Клиент коннектится по PPTP соответсвенно запускается pppd который стартует плагин(RADIUS CLIENT или СТГ CLIENT). Плагин в свою очередь производит запрос проверки пришедшего ему логин и пароля по ppptp. Для этого он как и авторизатор посылает запрос СТГ Server. В ответ СТГ дает разрешение на установление связи или нет соответсвенно. 2. Допустим авторизация прошла. Дальше наш плагин скидывает статистику с интерфейса СТГ server который обрабатывает ее штатным порядком. Так, ща я поясню как я вижу себе все стыковку. Предложенная схема не совсем верна. 1. Есть авторизатор. Клиент коннектится. На сервере выполняется скрипт онконект, в нем происходит подъем pppd (я верно мыслю?) Авторизатор в том виде как он сейчас есть в СТГ вообще не нужен для VPN. Поскольку инициатор VPN соединения является клиент(можно конечно и извернутся :-)) и при установлении соединения он передает логин и пароль. Тогда задача каким-то макаром дать возможность демону pppd проверить логин и пароль средствами СТГ. Штатно как правильно сказал den68 это либо два plaintext файла papsecret и chapsecret или соответсвенно некий плагин. 2. Часть сервера stg, ответственная за подсчет трафика остановлена и не работает ХЗ возможно и можно прослушивать ppp интерфейс... Тогда теор можно обойтись без пункта 3-и. На днях потестю. Но 100% если использовать libipq то можно статистику снимать файрволом с интерфейсов ppp*. 3. Кто-то собирает статистику о трафике (радиус?). Статистику должен собирать СТГ. Использовать внешний Radius Server врятле получится да и криво.. Потому в СТГ просто придется дописать модуль который и будет собственно Radius server-ом ну или сервером СТГ протокола для сбора статистики. Вот, в этой схеме меня интересует можно ли в скриптах onconnect и ondisconnrct выполнить установление и разрыв впн-соединения? Убить соединение конечно можно :-) Например убив pppd. При наличии плагина это проще. Установить соединение нельзя по преведенной выше проблемме. Ссылка на сообщение Поделиться на других сайтах
den68 0 Опубліковано: 2004-08-05 17:29:51 Share Опубліковано: 2004-08-05 17:29:51 1. Есть авторизатор. Клиент коннектится. На сервере выполняется скрипт онконект, в нем происходит подъем pppd (я верно мыслю?) 2. Часть сервера stg, ответственная за подсчет трафика остановлена и не работает. 3. Кто-то собирает статистику о трафике (радиус?). 4. Раз в минуту (5, 10 ...) вызывается скрипт, который каким-то боком (это моя проблема каким) передает информацию о статистике серверу стг. 5. сервер снимает деньги на основании переданной ему статистики, и если денег не стало, вызывает ondisconnect, в котором кладет pppd. Вот, в этой схеме меня интересует можно ли в скриптах onconnect и ondisconnrct выполнить установление и разрыв впн-соединения? 1. - Авторизатор ИМХО можно не испльзовать, (или переделать его под запуск созданнго ВПН соеденения). Все необхдимое для поднятия ВПН есть в любых Вин и Юникс платфрмах. Детальн описано например: http://spacegate.com.ua/rus/install/vpnwin9x.html 2. Сервер должен запускать сеанс pppd при обращении - стветственно слушать порт 1723 3. Статистику должен сбирать СТГ, с помощью плагина к pppd. За оснву для изготовления плагина мжно взять ppp_radius плагин. Он с заданной передичнстью может сливать информацию о времени и трафике в СТГ. В принципе проще взять пакет pppd и ознакомиться с файлом PLUGINS в крневой деректории, там описано API взаимотношений pppd и возможных плагинов, есть примеры. P.S. Кстати, при этом подходе возможно использвать СТГ как билинг и для Dial-Up! 4.5. Убивать pppd по пиду через тот-же плагин. Кстати, там есть сответствующая функция. Ссылка на сообщение Поделиться на других сайтах
AlexM 0 Опубліковано: 2004-08-05 19:22:16 Share Опубліковано: 2004-08-05 19:22:16 (или переделать его под запуск созданнго ВПН соеденения) А почемуб просто тогда не создать это соединение на лету? Все параметру у авторизатора есть. Только не вижу я смысла вообще в авторизаторе. ВПН соединение вот вам и авторизатор. 2. Сервер должен запускать сеанс pppd при обращении - стветственно слушать порт 1723 Это делает и так демон ppptp все заапустит. И конечно если будет написан плагин то можно будет счетать и DialUp. Вот в общем то о чем я толкую. Но у этой системы в текущем состоянии есть для меня большой недостаток, она не умеет счетать трафик, да еще и написана python. http://ibs.sourceforge.net/ Ссылка на сообщение Поделиться на других сайтах
den68 0 Опубліковано: 2004-08-05 19:27:38 Share Опубліковано: 2004-08-05 19:27:38 В дополнение к сказанному - для просветления понятий о ВПН := http://www.inode.ru/content/admin/2004/06/24/17_1088068255 http://opensource.fstyle.ru/index.php?opti...id=25&Itemid=27 Ссылка на сообщение Поделиться на других сайтах
den68 0 Опубліковано: 2004-08-12 20:20:55 Share Опубліковано: 2004-08-12 20:20:55 Для страждущих, наваял тут патч для pptpd, теперь можно VPN прикрутить к текущему СТГ без глобальных переделок. Смысл патча: - привязка номера ppp интрфейса к IP адресу Пример: наружная сеть: 10.0.100.0 Внутренняя сеть: 192.168.90.0 (где живет СТГ) DHCPD выдает адреса для сети 10.0.100.0 идентичные по последней цифре с сетью 192.168.90.0, например: Пользователь прописан в СТГ с IP адресом 192.168.90.77, как следствие, интерфейс для подсчета трафика ему прописывается ppp77. DHCPD должен выдавать ему IP адрес во внешней сети 10.0.100.77 в CHAP-SECRET в директории /etc/ppp/ соответственно заноситься <логин СТГ> * <пароль СТГ> 192.168.90.77 как следствие, ему при установлении ВПН соеденения присваивается ИП 192.168.90.77 внутренней сети, а интерфейс в результате применения патча становиться ppp77 - СТГ считает трафик. При тестах использовались: pptpd 1.2.1 pppd 2.4.2 mppe pppd + kernel 2.4.26 patch (не обязательно) stargazer-1 (последний релиз (бета ?)) Сам патч: (pptpd 1.2.1) *** /INSTALL/PPTPD/pptpd-1.2.1/pptpctrl.c Tue Aug 10 17:55:12 2004 --- /INSTALL/PPTPD-PATCH/pptpd-1.2.1/pptpctrl.c Thu Aug 12 23:56:24 2004 *************** *** 101,112 **** { char pppLocal[16]; /* local IP to pass to pppd */ char pppRemote[16]; /* remote IP address to pass to pppd */ struct sockaddr_in addr; /* client address */ socklen_t addrlen; int arg = 1; int flags; struct in_addr inetaddrs[2]; ! char *pppaddrs[2] = { pppLocal, pppRemote }; gargc = argc; gargv = argv; --- 101,115 ---- { char pppLocal[16]; /* local IP to pass to pppd */ char pppRemote[16]; /* remote IP address to pass to pppd */ + char ConnectIP[16]; /* Connect IP address to pass to pppd */ + struct sockaddr_in addr; /* client address */ socklen_t addrlen; int arg = 1; int flags; struct in_addr inetaddrs[2]; ! // char *pppaddrs[2] = { pppLocal, pppRemote }; ! char *pppaddrs[3] = { pppLocal, pppRemote, ConnectIP }; gargc = argc; gargv = argv; *************** *** 183,190 **** signal(SIGTERM, &bail); NOTE_VALUE(PAC, call_id_pair, htons(-1)); NOTE_VALUE(PNS, call_id_pair, htons(-1)); ! syslog(LOG_INFO, "CTRL: Client %s control connection started", inet_ntoa(addr.sin_addr)); pptp_handle_ctrl_connection(pppaddrs, inetaddrs); syslog(LOG_DEBUG, "CTRL: Reaping child PPP[%i]", pppfork); if (pppfork > 0) --- 186,198 ---- signal(SIGTERM, &bail); NOTE_VALUE(PAC, call_id_pair, htons(-1)); NOTE_VALUE(PNS, call_id_pair, htons(-1)); ! /* ! !!!!!!!!!!!!!!!!! Insert CONNECT address !!!!!!!!!!!!!!!!!!!!!! ! */ syslog(LOG_INFO, "CTRL: Client %s control connection started", inet_ntoa(addr.sin_addr)); + // + inetaddrs[2] = addr.sin_addr; + // pptp_handle_ctrl_connection(pppaddrs, inetaddrs); syslog(LOG_DEBUG, "CTRL: Reaping child PPP[%i]", pppfork); if (pppfork > 0) *************** *** 374,379 **** --- 382,390 ---- inet_ntoa(inetaddrs[1]), ntohs(((struct pptp_out_call_rply *) (rply_packet))->call_id_peer), ntohs(((struct pptp_out_call_rply *) (rply_packet))->call_id)); + /* + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!! startCall !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!1 + */ if ((pty_fd = startCall(pppaddrs, inetaddrs)) > maxfd) maxfd = pty_fd; *************** *** 595,600 **** --- 606,614 ---- #elif clientSocket > 1 close(clientSocket); #endif + /* + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!! launch_pppd !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + */ launch_pppd(pppaddrs, inetaddrs); syslog(LOG_ERR, "CTRL: PPPD launch failed! (launch_pppd did not fork)"); _exit(1); *************** *** 620,625 **** --- 634,641 ---- { char *pppd_argv[14]; int an = 0; + char m[4][4]; // = {'\0','\0','\0','\0'}; + int z = 0; sigset_t sigs; pppd_argv[an++] = ppp_binary; *************** *** 739,744 **** --- 755,775 ---- pppd_argv[an++] = inet_ntoa(inetaddrs[1]); } + /* + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! PPP-INTERFACE OCTET !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + */ + + z = sscanf(inet_ntoa(inetaddrs[2]), "%s.%s.%s.%s", m[0], m[1], m[2], m[3]); + if ( z > 0 ) + { + pppd_argv[an++] = "unit"; + pppd_argv[an++] = m[3]; + syslog(LOG_DEBUG, "CTRL (PPP-INTERFACE OCTET): ( planed: ppp%s )", m[3]); + } else { + syslog(LOG_DEBUG, "CTRL (PPP-INTERFACE OCTET): ( NOT CONVERT ppp IFACE )"); + } + + /* argv arrays must always be NULL terminated */ pppd_argv[an++] = NULL; /* make sure SIGCHLD is unblocked, pppd does not expect it */ С вопросами - обращайтесь. З.Ы. Патч не претендует на лучшую реализацию, будут поправки - в студию. Ссылка на сообщение Поделиться на других сайтах
den68 0 Опубліковано: 2004-08-13 16:54:05 Share Опубліковано: 2004-08-13 16:54:05 В догонку к патчу: проверка на IP адрес пдключающегося, вставить в /etc/ppp/ip-up: RET1=`echo $REMOTE_IP_ADDRESS | sed -e 's/.*\.[0-9][0-9][0-9]//'` RET2=`echo $IFNAME | sed -e s/ppp/.$*/g` if [ $RET1 != $RET2 ] then /bin/kill -2 $PPPD_PID fi Ссылка на сообщение Поделиться на других сайтах
stg-34 0 Опубліковано: 2004-08-20 19:40:03 Share Опубліковано: 2004-08-20 19:40:03 Хе, есть у меня чувство, что впн к стг прикрутить на раз, два Причем к текущему и без правки кода Ссылка на сообщение Поделиться на других сайтах
den68 0 Опубліковано: 2004-08-20 19:52:47 Share Опубліковано: 2004-08-20 19:52:47 Хе, есть у меня чувство, что впн к стг прикрутить на раз, два Причем к текущему и без правки кода Вот кусок не очень доработанного плагина для pppd коротрый сливает через заданный промежуток времени статистику. Так сказать СЕМПЛ, сливает в лог файл, на это место можно прикрутить в: СТГ, SQL, итд. - по желанию. П.С. Данный пост в основном для СТГ-34, так ка я вроде обещал показать как это реализовать. Дальше - точить напильником ИМХО. #include <stddef.h> #include <time.h> #include "pppd.h" static int pppdstat=0; char pppd_version[] = VERSION; extern u_int32_t remoteIP; static option_t my_options[] = { { "pppdstat", o_int, &pppdstat, "ppp statistics... " }, { NULL } }; void print_info() { update_link_stats(0); info("pppdstat: remoteIP=%I sent %u bytes, recv %u bytes.",remoteIP,link_stats.bytes_out, link_stats.bytes_in); }; static int my_idle(struct ppp_idle *idle) { print_info(); return (idle_time_limit); } static int my_holdoff(void) { if (link_stats_valid) print_info(); return (holdoff); }; void plugin_init(void) { info("pppdstat: plugin running..."); add_options(my_options); idle_time_hook = my_idle; holdoff_hook = my_holdoff; } Ссылка на сообщение Поделиться на других сайтах
Рекомендованные сообщения
Создайте аккаунт или войдите в него для комментирования
Вы должны быть пользователем, чтобы оставить комментарий
Создать аккаунт
Зарегистрируйтесь для получения аккаунта. Это просто!
Зарегистрировать аккаунтВхід
Уже зарегистрированы? Войдите здесь.
Войти сейчас