Pentalgin 8 Posted 2008-05-11 12:57:51 Share Posted 2008-05-11 12:57:51 (edited) Кто подскажет есть ли Веб скрипт для управления DHCP севером (ОС FreeBSD) Нужнот просто добавление и удаление пользователей в конфиге, а то замучался все руками делать.. Edited 2008-05-27 12:05:18 by Foster Link to post Share on other sites
Neelix 33 Posted 2008-05-11 13:10:52 Share Posted 2008-05-11 13:10:52 webmin Link to post Share on other sites
Pentalgin 8 Posted 2008-05-11 13:31:57 Author Share Posted 2008-05-11 13:31:57 Вебмин провбовал но там вручную нужно вибивать мак клиента, а хотелосьбы чтоб вбить только ип нажать кнопочку получить мак и записать в конфиг. Link to post Share on other sites
Neelix 33 Posted 2008-05-11 13:33:48 Share Posted 2008-05-11 13:33:48 аналогично, или он сам должен догадываться какой у кого мак? )) Link to post Share on other sites
centre-lan 1 Posted 2008-05-11 13:56:05 Share Posted 2008-05-11 13:56:05 Вебмин провбовал но там вручную нужно вибивать мак клиента, а хотелосьбы чтоб вбить только ип нажать кнопочку получить мак и записать в конфиг. Сделаю простенький интерфейс который будет по айпи определять мак и заносить в DHCP.. несколько кнопочек управления аля удалить, добавить и т.д. Подробности - в личку. Link to post Share on other sites
Foster 0 Posted 2008-05-11 21:12:09 Share Posted 2008-05-11 21:12:09 дома стоит управлялка DHCP + ./etc/ethers на пхп есть еще обращения к днс и определение производителя по маку но с участием судоерс и прав апача на комманды впринципе оно модульное, надо включил, не надо - выключил в парочке сетей довольно успешно работает но еще писать и писать если кому надо такое - можно выложить Link to post Share on other sites
Neelix 33 Posted 2008-05-11 21:29:20 Share Posted 2008-05-11 21:29:20 Интересно посмотреть Link to post Share on other sites
Den_LocalNet 1,474 Posted 2008-05-11 21:38:26 Share Posted 2008-05-11 21:38:26 2foster выложи Link to post Share on other sites
Foster 0 Posted 2008-05-11 21:46:49 Share Posted 2008-05-11 21:46:49 продайте кто-то времени можно было бы сделать svnчик чтоб обновлялось по ходу написания выложу значит... Link to post Share on other sites
Pentalgin 8 Posted 2008-05-11 21:54:26 Author Share Posted 2008-05-11 21:54:26 2Foster Да плиз очень нужная вещь с меня пиво Link to post Share on other sites
Foster 0 Posted 2008-05-11 23:00:41 Share Posted 2008-05-11 23:00:41 выкладываю As Is, потроху пишется когда скучно баги и пожелания - в ПМ опишу как работает: Помещаем в апачевский веб апач должен стартовать с под пользователя, которому доступны комманды, прописанные в файликах panel/conf/* (конечно кроме class.php) в /etc/sudoers например: apache ALL=NOPASSWD: /bin/chmod,/sbin/iptables,/sbin/arp и в httpd.conf User apache Group apache что в этих файликах: $ cat config ipmac=1 // включать ли привязку IP+MAC ipblock=1 // включить ли модуль блокировки в iptables dhcp=1 // включить ли модуль управления DHCP iface=1 // включить ли модуль складывания статистики интерфейса в мускуль sudo=/usr/bin/sudo // путь к комманде sudo chmod=/bin/chmod // путь к комманде chmod arp=/sbin/arp // путь к команде arp dig=/usr/bin/dig // путь к комманде dig с пакета bind-utils смотрим что где лежит whereis arp whereis iptables $ cat config_dhcp dhcp_file=/etc/dhcpd.conf // где лежит dhcpd.conf dhcp_dir=/etc/dhcp // директория с хранимыми зонами, которые включаются в dhcpd.conf restart=/etc/init.d/dhcpd restart // это помоему еще не работает, так что прийдется ручками рестартовать dhcp zones=10,11 // зоны, через запятую, тут будет 10.0.10.0/24 и 10.0.11.0/24, т.е. по сути - третья цифра в айпишнике $ cat config_iface sql_host=localhost // хост мускуля sql_login=root // логин доступа к мускулю sql_pass=123456 // пароль для доступа к мускулю sql_db=panel // имя базы sql_tb_main=iface // таблица, в которую каждые 5 минут скидывается общая статистика интерфейса sql_tb_arch=iface_arch // таблица архива, куда пересчитывается и складывается общая статистика ifaces=eth1,eth2,vlan7 // интерфейсы, с которых снимать статистику. через запятую $ cat config_ipblock ports=tcp:web:80; // бесполезное iptables=/sbin/iptables // путь к iptables iface=eth0 // внутренний интерфейс, на котором блокируем пользователя $ cat config_ipmac ether_file=/etc/ethers // файлик с синтаксисом IP MAC, который вызывается при старте arp -f да, кстати, используются стили Smarty http://www.smarty.net/ качаем и ставим http://www.smarty.net/download.php банально распаковать в либы PHP, наподобие в /usr/local/lib/php впрочем на сайте смарти - все расписано структура SQL (если используется iface=1): CREATE TABLE IF NOT EXISTS `iface` ( `id` bigint(20) NOT NULL, `time` int(11) NOT NULL, `iface` varchar(7) NOT NULL, `rx` varchar(20) NOT NULL, `tx` varchar(20) NOT NULL ) ENGINE=MyISAM DEFAULT CHARSET=utf8; CREATE TABLE IF NOT EXISTS `iface_arch` ( `year` smallint(6) NOT NULL, `month` varchar(2) NOT NULL, `day` tinyint(4) NOT NULL, `rx` varchar(20) NOT NULL, `tx` varchar(20) NOT NULL, `iface` varchar(17) NOT NULL ) ENGINE=MyISAM DEFAULT CHARSET=utf8; скрипты для крона если понадобятся пишите, сейчас переделывать не буду пример конфига dhcp: $ cat /etc/dhcpd.conf authoritative; log-facility local7; ddns-update-style none; default-lease-time 600; DHCPD_INTERFACE="eth0"; max-lease-time 600; local-address 10.0.10.1; option net-static-routes code 249 = string; subnet 10.0.10.0 netmask 255.255.252.0 { default-lease-time 3600; max-lease-time 3600; option subnet-mask 255.255.252.0; option broadcast-address 10.0.11.255; option domain-name "domain.com"; option domain-name-servers 10.0.10.1; option time-offset -18000; option ntp-servers 10.0.10.1; option routers 10.0.10.1; option netbios-name-servers 192.168.78.1; range 10.0.10.200 10.0.10.254; } include "/etc/dhcp/zone.10"; include "/etc/dhcp/zone.11"; это как пример, просто включаем include синтаксис /etc/dhcp/zone.10 файлов такой: host user1 {hardware ethernet 00:02:44:89:18:BF;fixed-address 10.0.10.5;} host user2 {hardware ethernet 00:0D:87:9A:15:26;fixed-address 10.0.10.6;} host user3 {hardware ethernet 00:18:F3:A2:D7:DB;fixed-address 10.0.10.7;} честно говоря не помню как он там проверяет, рыться сейчас не буду, но должен и построчно понимать и с другим синтаксисом при старте запускаем arp -f /etc/ethers, ну или где они там у нас лежат вроде бы ничего не забыл. Если что звыняйте - два часа ночи все таки. лежит тут Link to post Share on other sites
Pentalgin 8 Posted 2008-05-12 07:18:18 Author Share Posted 2008-05-12 07:18:18 Буду сегодне вечером пробовать поставь под фряхой, о результатах отпишу 2 Foster Огрмное спасибо!!! Давай координаты куда пиво отправлять := Link to post Share on other sites
Колян 2 Posted 2008-05-12 07:27:25 Share Posted 2008-05-12 07:27:25 Я где-то выкладывал скрипт, который из бд СТГ берет данные, и записывает в дхцпд.конф Link to post Share on other sites
Serjio 19 Posted 2008-05-12 07:30:17 Share Posted 2008-05-12 07:30:17 Давай координаты куда пиво отправлять := Сорта пива его не интересуют, по причинам неупотребления оного Link to post Share on other sites
zulu_gluk 23 Posted 2008-05-12 12:04:36 Share Posted 2008-05-12 12:04:36 есть скрипт на пхп для управления дшцп, данные берутся из базы абиллса (скрипт не тот что идет в комплекте с биллингом). кому надо - в личку Link to post Share on other sites
Pretender 5 Posted 2008-05-12 13:08:45 Share Posted 2008-05-12 13:08:45 есть скрипт на пхп для управления дшцп, данные берутся из базы абиллса (скрипт не тот что идет в комплекте с биллингом). кому надо - в личку давайте мне скриптулю с базой правда у мну не абились, но к своему прикручу. тоже надоело руками писать Link to post Share on other sites
911 140 Posted 2008-05-12 13:53:11 Share Posted 2008-05-12 13:53:11 есть скрипт на пхп для управления дшцп а что нет тут ценителей perl ? Link to post Share on other sites
wermer 28 Posted 2008-05-12 14:13:42 Share Posted 2008-05-12 14:13:42 Вопрос ко всем: как сделать, чтобы DHCP на один MAC-адрес выдавал сразу 2 IP-адреса? мне нужно некоторым пользователям выдавать одновременно внутренний (10.X.X.X чтобы пользователь видел локальную сеть) и внешний белый IP-адрес (чтобы пользователь работал в инете) !!! Link to post Share on other sites
Foster 0 Posted 2008-05-12 14:19:37 Share Posted 2008-05-12 14:19:37 отдельным топиком выноси Link to post Share on other sites
911 140 Posted 2008-05-12 15:35:27 Share Posted 2008-05-12 15:35:27 Вопрос ко всем: как сделать, чтобы DHCP на один MAC-адрес выдавал сразу 2 IP-адреса? мне нужно некоторым пользователям выдавать одновременно внутренний (10.X.X.X чтобы пользователь видел локальную сеть) и внешний белый IP-адрес (чтобы пользователь работал в инете) !!! имхо анриал выдавай реальный ип и маршрутизируй его в сетку кстати, какой биллинг и какая система авторизации? Link to post Share on other sites
Колян 2 Posted 2008-05-12 17:28:56 Share Posted 2008-05-12 17:28:56 есть скрипт на пхп для управления дшцп а что нет тут ценителей perl ? А что в перл хорошего? Link to post Share on other sites
Foster 0 Posted 2008-05-12 18:56:20 Share Posted 2008-05-12 18:56:20 скорость, не оффтопьте Link to post Share on other sites
BUM 245 Posted 2008-05-26 11:48:53 Share Posted 2008-05-26 11:48:53 Foster, а что в кроне надо прописать для сбора информации с интерфейсов? (: з.ы. Спасибо за скрипт Link to post Share on other sites
Foster 0 Posted 2008-05-27 10:43:22 Share Posted 2008-05-27 10:43:22 core@iface $ cat iface_traff #!/bin/bash mysql_host="localhost" mysql_login="root" mysql_pass="db_password" mysql_db="db_name" mysql_tb="iface" iface=$1 num=`snmpwalk -Oqn -c public -v2c localhost IfDescr | grep ${iface} | awk 'BEGIN {FS = "."} END {print $12}' | awk 'BEGIN {FS = " "} END {print $1}'` if [ ${num} -gt "-1" ] then eth1_rx=`snmpwalk -Oqv -c public -v2c localhost .1.3.6.1.2.1.2.2.1.10.${num}` eth1_tx=`snmpwalk -Oqv -c public -v2c localhost .1.3.6.1.2.1.2.2.1.16.${num}` id=`mysql -h ${mysql_host} -u ${mysql_login} --password="${mysql_pass}" -D "${mysql_db}" -N -B -e "SELECT id FROM ${mysql_tb} order by id desc limit 0,1"` next_id=`expr $id + 1` eth1_rx_old=`cat /home/foster/iface/base/${iface}_rx` eth1_tx_old=`cat /home/foster/iface/base/${iface}_tx` if [ $((eth1_rx)) -lt $((eth1_rx_old)) ] then eth1_rx_new=$eth1_rx else eth1_rx_new=`expr $((eth1_rx)) - $((eth1_rx_old))` fi if [ $((eth1_tx)) -lt $((eth1_tx_old)) ] then eth1_tx_new=$eth1_tx else eth1_tx_new=`expr $((eth1_tx)) - $((eth1_tx_old))` fi mysql -h $mysql_host -u $mysql_login --password="${mysql_pass}" -D "${mysql_db}" -N -B -e "INSERT INTO ${mysql_tb} VALUES ('$next_id',UNIX_TIMESTAMP(),'${iface}','$eth1_rx_new','$eth1_tx_new')" if [ $((eth1_rx)) -gt 0 ] then echo "${eth1_rx}" > "/home/foster/iface/base/${iface}_rx" fi if [ $((eth1_tx)) -gt 0 ] then echo "${eth1_tx}" > "/home/foster/iface/base/${iface}_tx" fi fi и паковалка в архив на PHP iface $ cat iface_traff2arch.php <?php set_time_limit(0); $tb="db_table"; $tb_arch="db_table_arch"; $link=mysql_connect('db_host', 'db_login', 'db_password') or die("Unable to connect"); mysql_select_db('db_name') or die("Unable to select DB"); mysql_query('SET NAMES cp1251'); $q=mysql_query("SELECT * FROM $tb order by id"); while($r=mysql_fetch_array($q)) { $day=date('d', $r['time']); $month=date('m', $r['time']); $year=date('Y', $r['time']); $q1='';$r1=''; $q1=mysql_query("SELECT * FROM $tb_arch WHERE `iface`='$r[iface]' && `year`='$year' && `month`='$month' && `day`='$day'"); $r1=mysql_fetch_array($q1); if ((empty($r1['tx']) && $r['tx']!='0') or (empty($r1['rx']) && $r['rx']!='0')) mysql_query("INSERT INTO iface_arch VALUES ('$year','$month','$day','$r[rx]','$r[tx]','$r[iface]')"); else { $rx_new=0; $tx_new=0; $rx_new=$r['rx'] + $r1['rx']; $tx_new=$r['tx'] + $r1['tx']; mysql_query("UPDATE iface_arch SET rx='$rx_new',tx='$tx_new' WHERE `iface`='$r[iface]' && `year`='$year' && `month`='$month' && `day`='$day'"); } } mysql_query("TRUNCATE $tb"); mysql_close($link); ?> в кроне соответственно: */5 * * * * /home/foster/iface/iface_traff eth1 1 > /dev/null 2 > /dev/null */5 * * * * /home/foster/iface/iface_traff eth2 1 > /dev/null 2 > /dev/null */5 * * * * /home/foster/iface/iface_traff vlan17 1 > /dev/null 2 > /dev/null 25 3 * * * /usr/local/bin/php -f /home/foster/iface/iface_traff2arch.php 1 > /dev/null 2 > /dev/null статистика по интерфейсам eth1 eth2 vlan17 складывается каждые 5 минут в базу и в 3:25 ночи перекидывается в архив. Там просто лежит за день, т.е. суммируется. Link to post Share on other sites
Foster 0 Posted 2008-05-27 12:46:25 Share Posted 2008-05-27 12:46:25 кстати http://sauron.jyu.fi/ Sauron a free DNS & DHCP management system Some of the Sauron's features include: generates complete BIND (DNS) configuration file set for each server generates complete dhcpd (ISC's DHCP) configuration file set for each server automatically generates "reverse" zones supports smaller than class-C "reverse" zone delegations dynamic host aliases (both CNAME and A-record) support for dynamic DHCP address pools with access control (requires DHCP v3) DHCP failover support (requires ISC DHCP v3 or newer) MX and WKS record templates for hosts hosts may be assigned to a group that defines common attributes for it support for most most of the standard DNS RRs (resource records) ... http://webdhcp.sourceforge.net/ http://sourceforge.net/projects/dixie/ http://webdhcpdns.labs.libre-entreprise.org/index-en.html Link to post Share on other sites
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now