Перейти до

Stargazer+dhcpd


Рекомендованные сообщения

Решил внедрить себе в сеть дхцп сервер.

В данный момент в скрипт OnChange добавил следующие строки:

 

ip=`cat /var/stargazer/users/$login/conf | grep 'IP=' | cut -d "=" -f2`

mac=`cat /var/stargazer/users/$login/conf | grep 'Userdata3=' | cut -d "=" -f2`

num=`cat /etc/dhcp/dhcpd.conf | grep -n "$ip;" | cut -d: -f1`

hst=$login

if [ -z $num ]; then

if [ -n $mac ]; then

echo "host host-$hst {hardware ethernet $mac; fixed-address $ip;}" >> /etc/dhcp/dhcpd.conf

fi

fi

Конфиг дхцп заточен под локалку, тест на 5ти юзерах прошел отлично.

Подскажите, не могут ли обьявится подводные камни с такой конфигурацией?

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

#!/usr/local/bin/php
<?php
$conf="
       default-lease-time 600; 
       max-lease-time 7200; 
       authoritative; 
       ddns-update-style interim; 
       log-facility local7;
       subnet 10.10.2.0 netmask 255.255.255.0 {
           range 10.10.2.10 10.10.2.100;
           option routers 10.10.2.1; 
           option domain-name-servers 10.10.1.1;
       }
       subnet 10.10.3.0 netmask 255.255.255.0 {
           range 10.10.3.1 10.10.3.100; 
           option routers 10.10.3.1; 
           option domain-name-servers 10.10.1.1; 
       }
       subnet 10.10.4.0 netmask 255.255.255.0 {
           range 10.10.4.1 10.10.4.100; 
           option routers 10.10.4.1; 
           option domain-name-servers 10.10.1.1;
       }
       subnet 10.10.5.0 netmask 255.255.255.0 {
           range 10.10.5.1 10.10.5.100; клиентам
           option routers 10.10.5.1; 
           option domain-name-servers 10.10.1.1; 
       }
       subnet 10.10.6.0 netmask 255.255.255.0 {
           range 10.10.6.1 10.10.6.100; 
           option routers 10.10.6.1; 
           option domain-name-servers 10.10.1.1; 
       }
       subnet 10.10.7.0 netmask 255.255.255.0 {
           range 10.10.7.1 10.10.7.100; 
           option routers 10.10.7.1; 
           option domain-name-servers 10.10.1.1;
       }
";
mysql_connect("10.10.1.1", "user", "password");
mysql_select_db("stargazer");
$q=mysql_query("select `IP`, `Userdata0`, `Userdata1`, `login` from `users`;");
while($res=mysql_fetch_array($q, MYSQL_NUM)){
       if (!$res[1]=="" && !$res[2]==""){
               $conf.="
               host $res[3].lan { 
               hardware ethernet $res[1];
               fixed-address $res[0];
               option routers $res[2];
               }
               ";
       }
}
file_put_contents("/usr/local/etc/dhcpd.conf", $conf);
system("/usr/local/etc/rc.d/isc-dhcpd restart");
?>

Ну думаю, тут все понятно. Запускать по крону каждые 10 минут. ДХЦП-сервер и СТГ сервер - разные машины.

Что куда писать?

`Userdata0` - мак адрес

`Userdata1` - гейтвей

Тестировалось, работает.

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

Окончательный вариант. Засовывается в OnChange.

 

ip=`cat /var/stargazer/users/$login/conf | grep 'IP=' | cut -d "=" -f2`

mac=`cat /var/stargazer/users/$login/conf | grep 'Userdata3=' | cut -d "=" -f2`

num1=`cat /etc/dhcp/dhcpd.conf | grep -n "$ip;" | cut -d: -f1`

hst=$login

if [ -z $num1 ]; then

if [ $mac1 -eq "18" ]; then

echo " host host-$hst {hardware ethernet $mac; fixed-address $ip;}" $

fi

else

if [ $mac1 -eq "18" ]; then

cat /etc/dhcp/dhcpd.conf | sed '/'$ip';/ c\

host host-'$hst' {hardware ethernet '$mac'; fixed-address '$ip';}

' >> /var/tmp/dhcpd.temp

fi

rm /etc/dhcp/dhcpd.conf

mv /var/tmp/dhcpd.temp /etc/dhcp/dhcpd.conf

fi

Ссылка на сообщение
Поделиться на других сайтах
  • 4 months later...
#!/usr/local/bin/php
<?php
$conf="
       default-lease-time 600; 
       max-lease-time 7200; 
       authoritative; 
       ddns-update-style interim; 
       log-facility local7;
       subnet 10.10.2.0 netmask 255.255.255.0 {
           range 10.10.2.10 10.10.2.100;
           option routers 10.10.2.1; 
           option domain-name-servers 10.10.1.1;
       }
       subnet 10.10.3.0 netmask 255.255.255.0 {
           range 10.10.3.1 10.10.3.100; 
           option routers 10.10.3.1; 
           option domain-name-servers 10.10.1.1; 
       }
       subnet 10.10.4.0 netmask 255.255.255.0 {
           range 10.10.4.1 10.10.4.100; 
           option routers 10.10.4.1; 
           option domain-name-servers 10.10.1.1;
       }
       subnet 10.10.5.0 netmask 255.255.255.0 {
           range 10.10.5.1 10.10.5.100; клиентам
           option routers 10.10.5.1; 
           option domain-name-servers 10.10.1.1; 
       }
       subnet 10.10.6.0 netmask 255.255.255.0 {
           range 10.10.6.1 10.10.6.100; 
           option routers 10.10.6.1; 
           option domain-name-servers 10.10.1.1; 
       }
       subnet 10.10.7.0 netmask 255.255.255.0 {
           range 10.10.7.1 10.10.7.100; 
           option routers 10.10.7.1; 
           option domain-name-servers 10.10.1.1;
       }
";
mysql_connect("10.10.1.1", "user", "password");
mysql_select_db("stargazer");
$q=mysql_query("select `IP`, `Userdata0`, `Userdata1`, `login` from `users`;");
while($res=mysql_fetch_array($q, MYSQL_NUM)){
       if (!$res[1]=="" && !$res[2]==""){
               $conf.="
               host $res[3].lan { 
               hardware ethernet $res[1];
               fixed-address $res[0];
               option routers $res[2];
               }
               ";
       }
}
file_put_contents("/usr/local/etc/dhcpd.conf", $conf);
system("/usr/local/etc/rc.d/isc-dhcpd restart");
?>

Ну думаю, тут все понятно. Запускать по крону каждые 10 минут. ДХЦП-сервер и СТГ сервер - разные машины.

Что куда писать?

`Userdata0` - мак адрес

`Userdata1` - гейтвей

Тестировалось, работает.

 

классно, а кто может это на перл или баш перевести?

Ссылка на сообщение
Поделиться на других сайтах
классно, а кто может это на перл или баш перевести?

#!/usr/bin/perl -w

use DBI;
use strict;

my $db_user = "stg";
my $db_pass = "";
my $db_host = "localhost";
my $db_name = "stargazer";

my $dhcp_conf = "/usr/local/etc/dhcpd.conf"; # where dhcp.conf ?
my $dhcp_rc = "/usr/local/etc/rc.d/isc-dhcpd"; # where dhcp init script?

my $dsn = "DBI:mysql:$db_name:$db_host";

my $conf = "default-lease-time 600;
max-lease-time 7200;
authoritative;
ddns-update-style interim;
log-facility local7;

subnet 10.10.2.0 netmask 255.255.255.0 {
range 10.10.2.10 10.10.2.100;
option routers 10.10.2.1;
option domain-name-servers 10.10.1.1;
}
subnet 10.10.3.0 netmask 255.255.255.0 {
range 10.10.3.1 10.10.3.100;
option routers 10.10.3.1;
option domain-name-servers 10.10.1.1;
}
subnet 10.10.4.0 netmask 255.255.255.0 {
range 10.10.4.1 10.10.4.100;
option routers 10.10.4.1;
option domain-name-servers 10.10.1.1;
}
subnet 10.10.5.0 netmask 255.255.255.0 {
range 10.10.5.1 10.10.5.100;
option routers 10.10.6.1;
option domain-name-servers 10.10.1.1;
}
subnet 10.10.7.0 netmask 255.255.255.0 {
range 10.10.7.1 10.10.7.100;
option routers 10.10.7.1;
option domain-name-servers 10.10.1.1;
}
";

my $dbh = DBI->connect($dsn, $db_user, $db_pass) || die "Could not connect to database: $DBI::errstr";
my $sql = "SELECT IP, Userdata0, Userdata1, login FROM users";
my $sth = $dbh->prepare($sql);
$sth->execute();
my @row;
while ( @row = $sth->fetchrow_array() ) {
if ( $row[1] ne "" && $row[2] ne "" ) {
	$conf = join "", $conf, "
host $row[3].local {
hardware ethernet $row[1];
fixed-address $row[0];
option routers $row[2];
}
"	  ;
}
}
$sth->finish();
$dbh->disconnect();

open(DHCP, "> $dhcp_conf");
print DHCP $conf;
close DHCP;

my @args = ("$dhcp_rc", "restart");
system(@args) == 0 or die "system @args failed: $?";

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

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Вхід

Уже зарегистрированы? Войдите здесь.

Войти сейчас
  • Зараз на сторінці   0 користувачів

    Немає користувачів, що переглядають цю сторінку.

×
×
  • Створити нове...