DHCP MYSQL: различия между версиями
Материал из noname.com.ua
Перейти к навигацииПерейти к поискуSirmax (обсуждение | вклад) м (Защищена страница «DHCP MYSQL» [edit=sysop:move=sysop]) |
Sirmax (обсуждение | вклад) |
||
| Строка 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 и прочее - это все делается для остатоков неуправляемых сегментов, |
||
Версия 21: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 и прочее - это все делается для остатоков неуправляемых сегментов,