Jump to content
Калькуляторы

DHCP + SQL БД. Сабж при помощи патча к dhcpd.

Мы тоже доработали скрипт dhcp2radius, вместо pgsql стоит perl+mysql. Так как намного гибче. Авторизует как по свитч+порт, так и просто по мак. Все легко настраивается, работает с netup. Механизм такой:

-при запросе ищем абонента по порту и свитчу либо по маку.

Абонента нет - абоненту выдаем временные настройки с fake-dns, который на любой запрос выдает ip сервера авторизации компа. Там абонент вводит Логин/пароль- и его мак или свитч/порт автоматом к его учетке привязываются. После перезагрузки компа ему уже выдаются его настройки.

Блин, как раз занимаюсь тем, что надо поднять DHCP в сети. Сейчас пробую сабж, но есть сложности: биллинг на mysql, хотелось бы оставить базу DHCP тоже на мускуле, а то городить pgsql-скрипт-mysql совсем не хочется. Не поделителсь ли модифицированной версией скрипта, либо ее частью, которая связывает radius и mysql? Заранее благодарен!

P.S. ответ либо суда, либо на мыло breusovok(собака)mail(точка)ru

Share this post


Link to post
Share on other sites
Вопрос такой есть готовый Dhcp(MysqlPgsql)

кто сколько готов заплатить ??? (смешные цифры не называть ... написав это решение я убил кучу времени поэтому хочу за это денег вроде бы все как должно было бы быть )

решение без костылей готовый сервер тестился на боевой сети 8000 абонентов.

30 - 50 запросов\с предел был 170/c

и не надо бесплатно канючить ... бесплатно юзать можно только грабли которых кучя =) а решать вам.

Сколько хотите денег ? Какое оборудование должно стоять в сети ? Как мы его привяжем к нашей базе абонентов которая ведётся пока в MS Access ? Поможете ?

Решение я оценил в 150 $ полностью рабочее естественно с зашыфрованым исходным кодом ...

Во первых помочь в чём именно ? связать сервер с MS Access ??? за дополнительные деньги можно и в космос полететь.

а что у вас щас стоит ? MS Access и все ????

Помочь в реализации

Есть база абонентов(MYSQL), каждому надо выдавать адрес прописанный в базе исходя из номера свича и порта(прописаны в базе).

Соответсвенно все свичи релеят запросы с opt82 на сервер.

Ничего больше не надо.

Собственно надо будет связаться с нашим админом, обяьснить как все работает, осуществить первичную настройку.

Пока делаем стандартным способом - скриптом из данных базы генерим конфиг dhcp сервера на основе opt 82 и дергаем dhcpd

но столкнулист с проблемой выдачи одного адреса в пуле, когда абонент вытащив провод не может снова получить адрес.

Share this post


Link to post
Share on other sites
Помочь в реализации

Есть база абонентов(MYSQL), каждому надо выдавать адрес прописанный в базе исходя из номера свича и порта(прописаны в базе).

Соответсвенно все свичи релеят запросы с opt82 на сервер.

Ничего больше не надо.

Собственно надо будет связаться с нашим админом, обяьснить как все работает, осуществить первичную настройку.

Пока делаем стандартным способом - скриптом из данных базы генерим конфиг dhcp сервера на основе opt 82 и дергаем dhcpd

но столкнулист с проблемой выдачи одного адреса в пуле, когда абонент вытащив провод не может снова получить адрес.

А сколько вы готовы за это заплатить ?

Share this post


Link to post
Share on other sites

Данных из этого топика достаточно чтобы сделать все самим. Таким образом если цена окажется дешевле чем собственные разработки - то мы готовы заплатить

Share this post


Link to post
Share on other sites

Столкнулся с багом в этом патче. Если в конфигурации isc-dhcpd указать любое значение для radius-cache-ttl, то dhcpd не поднимается с криком

PATCH ERROR: invalid 'cache ttl' length: 4 must be: 8

подозреваю, что это из-за платформы FreebSD amd64.

Share this post


Link to post
Share on other sites
2~nix~

Если не трудно расскажите подробнее о своей разработке.

Можно ли использовать opt82?

Можно ли использовать произвольные option? как в isc-dhcpd?

Структура БД фиксированная или можно гибко адаптировать к своей?

Извеняюсь что долго не отвечал был занят переписывал dummynet + em есле кому интересно пропустил довольно интересное количества трафика ))) 78 Мб\с юзеров 3500 на 1 сервере вертиться нат + шейпинг. ( соглашаюсь с jab ng_car кака... ) ( немного не по теме не пинать ... )

option82 легко изначально и был написан под него а потом добавилось все остальное щас все как в isc-dhcp.

структура запросов + таблиц хранится в конфиге поетому с адаптацыей под свою базу быть не должно.

сейчас занимаюсь подробным документированием так как моим dhcp сервером заинтересовались иностранцы.

 

З.Ы. я немного crazy админ+программер ... потому люблю создавать и ковырять все что написано не так как надо мне и другим )))

 

Вопрос такой есть готовый Dhcp(MysqlPgsql)

кто сколько готов заплатить ??? (смешные цифры не называть ... написав это решение я убил кучу времени поэтому хочу за это денег вроде бы все как должно было бы быть )

решение без костылей готовый сервер тестился на боевой сети 8000 абонентов.

30 - 50 запросов\с предел был 170/c

и не надо бесплатно канючить ... бесплатно юзать можно только грабли которых кучя =) а решать вам.

Сколько хотите денег ? Какое оборудование должно стоять в сети ? Как мы его привяжем к нашей базе абонентов которая ведётся пока в MS Access ? Поможете ?

Решение я оценил в 150 $ полностью рабочее естественно с зашыфрованым исходным кодом ...

Во первых помочь в чём именно ? связать сервер с MS Access ??? за дополнительные деньги можно и в космос полететь.

а что у вас щас стоит ? MS Access и все ????

Помочь в реализации

Есть база абонентов(MYSQL), каждому надо выдавать адрес прописанный в базе исходя из номера свича и порта(прописаны в базе).

Соответсвенно все свичи релеят запросы с opt82 на сервер.

Ничего больше не надо.

Собственно надо будет связаться с нашим админом, обяьснить как все работает, осуществить первичную настройку.

Пока делаем стандартным способом - скриптом из данных базы генерим конфиг dhcp сервера на основе opt 82 и дергаем dhcpd

но столкнулист с проблемой выдачи одного адреса в пуле, когда абонент вытащив провод не может снова получить адрес.

не вопрос вам дока по серверу нужна ?

Share this post


Link to post
Share on other sites

Ребят, подскажите куда копнуть...3й день пытаюсь запустить данную схему...

Поставил PostgreSQL Server 8.3, Client 8.3, Freeradius 2.1.7...делаю все мо мануалу..в логах radius вижу

Wed Oct 14 16:39:59 2009 : Info: rlm_sql (sql): Driver rlm_sql_postgresql (module rlm_sql_postgresql) loaded and linked
Wed Oct 14 16:39:59 2009 : Info: rlm_sql (sql): Attempting to connect to postgres@127.0.0.1:/dhcp
Wed Oct 14 16:39:59 2009 : Info: Ready to process requests.
Wed Oct 14 16:44:11 2009 : Error: rlm_sql_getvpdata: database query error
Wed Oct 14 16:44:11 2009 : Error: [sql] SQL query error; rejecting user

В логах dhcpd.log:

Oct 14 16:44:11 testbilling dhcpd: Convert DHCPDISCOVER 00:1a:4b:74:dd:a6/10.1.10.253 to RADIUS and forwarded to 127.0.0.1
Oct 14 16:44:38 testbilling last message repeated 3 times
Oct 14 16:45:41 testbilling last message repeated 4 times
Oct 14 16:51:19 testbilling last message repeated 4 times

Список пользователей PSQL:

dhcp=# select * from pg_shadow;
usename  | usesysid | usecreatedb | usesuper | usecatupd | passwd | valuntil | useconfig 
----------+----------+-------------+----------+-----------+--------+----------+-----------
postgres |       10 | t           | t        | t         |        |          | 
radius   |    16386 | f           | f        | f         |        |          |

Список баз:

   List of databases
   Name    |  Owner   | Encoding  
-----------+----------+-----------
dhcp      | postgres | SQL_ASCII
postgres  | postgres | SQL_ASCII
template0 | postgres | SQL_ASCII
template1 | postgres | SQL_ASCII
test      | postgres | SQL_ASCII
(5 rows)

Из sql.conf:

sql {
<------>#
<------>#  Set the database to one of:
<------>#
<------>#<----->mysql, mssql, oracle, postgresql
<------>#
<------>database = "postgresql"
<------>#
<------>#  Which FreeRADIUS driver to use.
<------>#
<------>driver = "rlm_sql_${database}"
<------># Connection info:
<------>server = "127.0.0.1"
<------>#port = 3306
<------>login ="postgres"
<------>password ="1234"

Конфиг dhcpd.conf:

ddns-update-style interim;

use-dhcp2radius true;
radius-servers localhost;
radius-secret dhcpdsecret;
radius-password 1234;
#radius-server-restore 1000;
#radius-port 1812;
#radius-client-freq 4;
#radius-freq-summ 10;
#radius-cache-ttl 86400;
#radius-update-arp false;
#radius-cache-maxlen 3000;
#radius-allow-cache true;
#radius-allow-dynamic-cache false;
#radius-use-mac-delimiter false;
radius-send-opts-to-srv 82;

Edited by nicol@s

Share this post


Link to post
Share on other sites

Хм, по-моему у меня такая же проблема. Конфиги все из примера, Ubuntu server 9.04, Freeradius 2.1.7, PostgreSQL Server 8.3, Client 8.3. в выводе радиуса вижу

rad_recv: Access-Request packet from host 127.0.0.1 port 67, id=232, length=68
        User-Name = "001c10591424"
        User-Password = "radius"
        NAS-Port = 3232299731
        DHCP-Message-Type = 0x01
+- entering group authorize {...}
        expand: %{User-Name} -> 001c10591424
[sql] sql_set_user escaped user --> '001c10591424'
rlm_sql (sql): Reserving sql socket id: 3
        expand: SELECT id, UserName, Attribute, Value, ':=' AS Op     FROM dhcpcheck     WHERE id = (SELECT get_id('%{SQL-User-Name}', %{NAS-Port}, btrim('%{DHCP-Message-Type}', '0x')::int2))     ORDER BY id -> SELECT id, UserName, Attribute, Value, ':=' AS Op     FROM dhcpcheck     WHERE id = (SELECT get_id('001c10591424', 3232299731, btrim('0x01', '0x')::int2))     ORDER BY id
rlm_sql_postgresql: Status: PGRES_TUPLES_OK
rlm_sql_postgresql: query affected rows = 1 , fields = 5
[sql] User found in radcheck table
        expand: SELECT id, client_hw_addr, Attribute, Value, ':=' AS Op     FROM dhcp_reply     WHERE client_hw_addr = '%{SQL-User-Name}' AND server_addr = %{NAS-Port} UNION     SELECT id, NULL AS client_hw_addr, Attribute, Value, ':=' AS Op     FROM interfaces     WHERE client_subnet =         (             SELECT client_subnet FROM dhcp_reply                 WHERE client_hw_addr = '%{SQL-User-Name}'                 AND server_addr = %{NAS-Port}                 AND attribute = 'DHCP-Your-IP-Address'             LIMIT 1         )     ORDER BY id -> SELECT id, client_hw_addr, Attribute, Value, ':=' AS Op     FROM dhcp_reply     WHERE client_hw_addr = '001c10591424' AND server_addr = 3232299731 UNION     SELECT id, NULL AS client_hw_addr, Attribute, Value, ':=' AS Op     FROM interfaces     WHERE client_subnet =         (             SELECT client_subnet FROM dhcp_reply                 WHERE client_hw_addr = '001c10591424'                 AND server_addr = 3232299731                 AND attribute = 'DHCP-Your-IP-Address'             LIMIT 1         )     ORDER BY id
rlm_sql_postgresql: Status: PGRES_TUPLES_OK
rlm_sql_postgresql: query affected rows = 2 , fields = 5
rlm_sql (sql): Released sql socket id: 3
++[sql] returns ok
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!    Replacing User-Password in config items with Cleartext-Password.     !!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!! Please update your configuration so that the "known good"               !!!
!!! clear text password is in Cleartext-Password, and not in User-Password. !!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
WARNING: Please update your configuration, and remove 'Auth-Type = Local'
WARNING: Use the PAP or CHAP modules instead.
User-Password in the request does NOT match "known good" password.
Failed to authenticate the user.
Login incorrect: [001c10591424/radius] (from client localhost port 3232299731)
Using Post-Auth-Type Reject
+- entering group REJECT {...}
        expand: %{User-Name} -> 001c10591424
attr_filter: Matched entry DEFAULT at line 11
++[attr_filter.access_reject] returns updated
Delaying reject of request 1 for 1 seconds
Going to the next request
Waking up in 0.9 seconds.
Sending delayed reject for request 1
Sending Access-Reject of id 232 to 127.0.0.1 port 67
Waking up in 0.9 seconds.
Cleaning up request 0 ID 34 with timestamp +14
Waking up in 3.9 seconds.

В чем грабли?

 

Share this post


Link to post
Share on other sites
естественно с зашыфрованым исходным кодом ...
А слова GPL вам что-нибудь говорят, кстати?

 

По теме - у нас тоже написан самописный DHCP-сервер с 82 и хранением БД в MySQL, только выборка всё же идёт оттуда только при изменениях.

Share this post


Link to post
Share on other sites

Хм, после модификации секции post_auth{} радиус - сервер стал сообщать ДХЦП нужные атрибуты, но со статусом REJECT. Соответственно DHCP говорит, REJECT - значит ничего нет для данного клиента. Как заставить радиус сказать ACCEPT и передать атрибуты?

Share this post


Link to post
Share on other sites

Вобщем понятно что у нескольких уже есть свои dhcp-сервера с Opt82 и SQL, разных реализаций под разные платформы с разной тормознутостью. В том числе и у нас есть :-) Но все жмутся выложить это ценное ПО, потому что оно даст другим, возможно конкурентам преимущество или убьёт своё преимущество, а ещё оно стоит денег и им заинтересовались даже иностранцы :-)

Share this post


Link to post
Share on other sites

Saper

Кроме этого нужно написать развернутую инструкцию по внедрению, по использованию и по программированию. А потом заниматься поддержкой как и разного рода "внедренцев", так и всевозможного чудесатого оборудования. Это если специфика совпадает, а если все привыкли работать по-разному и сервер больше заточен "под себя" - вообще финиш. :)

 

Share this post


Link to post
Share on other sites

DHCP это стандарт, Opt 82 тоже стандарт. Как бы не была организована работа, всё "внедрение" сводится к получению единственной таблицы вида "айпишник, параметры Opt 82".

 

Честно говоря, если данные есть, на это у меня ушло бы не больше получаса независимо от сервера БД, структуры и прочего, после чего трогать ничего не нужно вообще.

 

Вот много денег бы кто дал (иностранцы например :-)) за такую охренительно полезную вещь, я как все - бесплатно не работаю :-)

Share this post


Link to post
Share on other sites
DHCP это стандарт, Opt 82 тоже стандарт.
Ага, я тоже так думал сначала 8) А потом узнал много новых его вариантов чтения, понимания "само-собой разумеющихся" частей и особенностей реализации. Даже draft-ietf-dhc-implementation - не последняя инстанция, у некоторых всеравно свое видение.

 

Share this post


Link to post
Share on other sites

Saper

http://tools.ietf.org/html/draft-ietf-dhc-implementation-02 - это набор официальных уточнений к реализации RFC2131.

 

Кроме того, некоторым клиентам важен порядок опций (message type - первая, opt82 - последняя); есть два разных стиля leasequery (rfc и draft); некоторые железки частично забивают на lease time в leasequery (и клиент отваливается раньше времени); запросы после релея идут с 68 порта, а не с 67; релей выставляет giaddr, но пакет идет в общем вилане, а не в менеджменте (соответственно отвечать надо не юникастом на giaddr, а как обычно, как будто релея и нет); и т.д. вплоть до "формат opt82 зависит от версии прошивки".

 

Я потом появляется MS RRAS, который если не отфильтровать тоже кровушки попьет.

 

Собственно, каждая железка (Cisco uBR/CASA/Zyxel/"китай c opt82") даже небольшой, но свой прибабах имеет. Думаю от разношерстных IPTV STB/PacketCable CPE тоже можно ожидать набора маленьких граблей :)

 

Share this post


Link to post
Share on other sites

Обалдеть, где ж вы такой зоопарк собрали. Вообще существуют сети которые используют как коммутатор доступа Cisco/CASA/Zyxel/"китай c opt82" ? А что за модели ?

 

В качестве клиента я думаю будет правдой сказать что Windows, домашние роутеры и приставка AminoNet это 99% всего, у нас без проблем получают и те и другие, всем отсылается одно и тоже. Мне кажется вы преувеличиваете, я вообще с описанными вами проблемами не столкнулся.

Share this post


Link to post
Share on other sites

Saper

У нас разные технологии, и "голого" ethernet'а сейчас вообще нет, а список выше - на чем проводились испытания/допиливания. Реально живут сейчас доксис и hpna. Сервер же "один", точнее база одна общая, а серверов-"пользователей базы" несколько.

 

А с клиентами да, проблем обычно нет.

 

Собственно, я только хотел обратить ваше внимание, что есть нюансы и поддерживать постоянно прийдется, а то иностранцы денег не дадут :)

 

Interoperability - штука коварная...

Edited by vitalyb

Share this post


Link to post
Share on other sites
Реально живут сейчас доксис и hpna.
Собственно, я только хотел обратить ваше внимание, что есть нюансы и поддерживать постоянно прийдется, а то иностранцы денег не дадут :)

Я с такими древними иностранцами работать не согласный - забирайте их себе, мне отдайте новых и богатых ethernet-иностранцев.

Edited by Saper

Share this post


Link to post
Share on other sites
Saper, я бы выложил, но разработка не моя. Сегодня спрошу, можно ли зарелизить, в случае положительного ответа выложу наш вариант.

Share this post


Link to post
Share on other sites

Saper, я бы выложил, но разработка не моя. Сегодня спрошу, можно ли зарелизить, в случае положительного ответа выложу наш вариант.

Былоб неплохо.

Share this post


Link to post
Share on other sites

Сегодня спрошу, можно ли зарелизить, в случае положительного ответа выложу наш вариант.

Что с ответом? Ждем с нетерпением.

Edited by flash.one

Share this post


Link to post
Share on other sites

Могу прервать ваше нетерпение, но за деньги. Приобщитесь к избранным, владеющим секретным стратегическим ПО.

Share this post


Link to post
Share on other sites

Хм, после модификации секции post_auth{} радиус - сервер стал сообщать ДХЦП нужные атрибуты, но со статусом REJECT. Соответственно DHCP говорит, REJECT - значит ничего нет для данного клиента. Как заставить радиус сказать ACCEPT и передать атрибуты?

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

Share this post


Link to post
Share on other sites

Обращение к гражданам, имеющий свой самописный DHCP-сервер с поддержкой БД, которые желают продать разработку в пользование - как поговорить о фичах и ценах?

 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this