DHCP MYSQL: различия между версиями

Материал из noname.com.ua
Перейти к навигацииПерейти к поиску
м (Защищена страница «DHCP MYSQL» [edit=sysop:move=sysop])
Строка 1: Строка 1:
 
=Конфиг для DHCP средсвами MYSQL=
 
=Конфиг для DHCP средсвами MYSQL=
  +
Есть желание уйти от всяких скриптов (php, bash, perl) для получения конфига из MySQL для dhcpd а так же с помошью представлений отказаться от привязки к конкретным таблицам.
  +
Заодно проверить какое из решений будет работать быстрее.
  +
  +
==Создание представдения==
  +
Для того что бы не быть привязаным к структуре базы (которую программист биллинга вообще-то может менять по своему усмотрению) все данные для dhcp буду получать из view.
  +
<P>
  +
Стараюсь хранить данные в виде их "физических сущностей" - а именно IP - как INT UNSIGNED
  +
<PRE>
  +
DROP view mtraf_status;
  +
CREATE VIEW
  +
mtraf_status
  +
AS
  +
SELECT
  +
domain AS domain,
  +
IF( 0n_a<0 OR ( 0n_a=0 AND debt=0 ) ,0,1) AS status,
  +
ip AS ip,
  +
mac AS mac,
  +
IF( 0n_a<0 OR ( 0n_a=0 AND debt=0), inet_ntoa(inet_aton(ip)+6553600),ip) AS ip_dhcp,
  +
lower(substr(replace(concat(':', mac), ':0', ':') from 2)) AS mac_dhcp ,
  +
INET_NTOA(network_mask.network) AS network
  +
FROM
  +
mtraf,
  +
network_mask
  +
WHERE
  +
INET_ATON(mtraf.ip)&network_mask.mask=network_mask.network;
  +
<PRE>
  +
Условие в IF - условие когда абонент "должен" - ему нужно дать другой IP (у меня вместо, например, 10,0,136,10 он получит 10,100,136,10) и соответвенно, пускать только на биллинг (если короко, то файрволл не пускает абонентов никуда кроме отдельного ДНСа (или отдельного view) который на все запросы отвечает адресом странички "дай денег, дорогой абонент" и собственно биллинга) Всем кто будет напоминать про dhcp snooping, opt 82 и прочее - это все делается для остатоков неуправляемых сегментов,

Версия 22:37, 26 марта 2010

Конфиг для DHCP средсвами MYSQL

Есть желание уйти от всяких скриптов (php, bash, perl) для получения конфига из MySQL для dhcpd а так же с помошью представлений отказаться от привязки к конкретным таблицам. Заодно проверить какое из решений будет работать быстрее.

Создание представдения

Для того что бы не быть привязаным к структуре базы (которую программист биллинга вообще-то может менять по своему усмотрению) все данные для dhcp буду получать из view.

Стараюсь хранить данные в виде их "физических сущностей" - а именно IP - как INT UNSIGNED

DROP view  mtraf_status;
CREATE VIEW
    mtraf_status
AS
    SELECT
        domain AS domain,
        IF( 0n_a<0 OR ( 0n_a=0 AND debt=0 )  ,0,1) AS status,
        ip AS ip,
        mac AS mac,
        IF( 0n_a<0 OR ( 0n_a=0 AND debt=0), inet_ntoa(inet_aton(ip)+6553600),ip) AS ip_dhcp,
        lower(substr(replace(concat(':', mac), ':0', ':') from 2)) AS  mac_dhcp ,
        INET_NTOA(network_mask.network) AS network
FROM
    mtraf,
    network_mask
WHERE
    INET_ATON(mtraf.ip)&network_mask.mask=network_mask.network;
Условие в IF - условие когда абонент "должен" - ему нужно дать другой IP (у меня вместо, например, 10,0,136,10 он получит 10,100,136,10) и соответвенно, пускать только на биллинг (если короко, то файрволл не пускает абонентов никуда кроме отдельного ДНСа (или отдельного view) который на все запросы отвечает адресом странички "дай денег, дорогой абонент" и собственно биллинга) Всем кто будет напоминать про dhcp snooping, opt 82 и прочее - это все делается для остатоков неуправляемых сегментов,