Перейти к содержимому
Калькуляторы

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

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

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

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

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

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

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

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

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Ребят, подскажите куда копнуть...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;

Изменено пользователем nicol@s

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Хм, по-моему у меня такая же проблема. Конфиги все из примера, 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.

В чем грабли?

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Saper

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

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

 

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

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Вы хотя бы намекните про что вы. У меня всё совпало вот с этим - http://tools.ietf.org/html/rfc2131 и этим http://tools.ietf.org/html/rfc2132

Изменено пользователем Saper

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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 тоже можно ожидать набора маленьких граблей :)

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Saper

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

 

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

 

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

 

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

Изменено пользователем vitalyb

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

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

Изменено пользователем Saper

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

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

Изменено пользователем flash.one

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 смайлов.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.