Jump to content

Recommended Posts

Posted

ограниченным перебором. на русской винде используются cp866, cp1251 и utf16. Если у кого-нибудь будет немецкая винда, то вы увидете мусор вместо их национальных символов, предполагая что используется cp866

Понял. thanks

 

 

Теперь по dhcp серверу, вопрос, скорее к Ivan_83:

в request_loop:

в строку

logger("Thread $tid: Got a packet src = $ipaddr:$port length = ".length($buf)); 

добавил $dhcpreq->xid()."\t".

logger($dhcpreq->xid()."\t"."Thread $tid: Got a packet src = $ipaddr:$port length = ".length($buf));

 

и в логе нашел такую запись:

[01/Jun/2011 12:35:15] 4055216833       DHCPTYPE = 3;HOST_NAME = microsof-f284e2
[01/Jun/2011 12:35:15] 4055216833       Thread 0: Got a packet src = 172.16.16.33:68 length = 339
[01/Jun/2011 12:35:15] 4055216833       Thread 2: Got a packet src = 172.16.16.252:68 length = 339
[01/Jun/2011 12:35:15] 4055216833       DHCPTYPE = 3;HOST_NAME = microsof-f284e2
[01/Jun/2011 12:35:15] 4055216833       sw_ip = 172.16.16.166; port = 27
[01/Jun/2011 12:35:15] 4055216833       sw_ip = 172.16.16.252; port = 19
[01/Jun/2011 12:35:15] 4055216833       DHCPTYPE = 3;HOST_NAME = microsof-f284e2
[01/Jun/2011 12:35:15] 4055216833       sw_ip = 172.16.16.33; port = 25
[01/Jun/2011 12:35:15] 4055216833       Sending response to = 172.16.16.33:67 length = 300
[01/Jun/2011 12:35:15] 4055216833       Thread 0: the code took: 0.00656295 wallclock secs ( 0.00 usr +  0.00 sys =  0.00 CPU)
[01/Jun/2011 12:35:15] 4055216833       Sending response to = 172.16.16.252:67 length = 310
[01/Jun/2011 12:35:15] 4055216833       Thread 2: the code took: 0.00982499 wallclock secs ( 0.00 usr +  0.00 sys =  0.00 CPU)
[01/Jun/2011 12:35:15] 4055216833       Sending response to = 172.16.16.166:67 length = 300
[01/Jun/2011 12:35:15] 4055216833       Thread 8: the code took: 0.014338 wallclock secs ( 0.00 usr +  0.00 sys =  0.00 CPU)

 

Непонятно, что за глюк..

Почему в трех разных нитях один и тот же xid? Хотя параметры, к примеру, свитч_порт, которые берутся из того же $dhcpreq, у каждой нити получились свои? А вот $dhcpreq->getOptionValue(DHO_DHCP_MESSAGE_TYPE()) и $dhcpreq->getOptionRaw(DHO_HOST_NAME()) одинаковые. !?!?

 

Перенес строку

my ($buf, $fromaddr, $dhcpreq); # recv data

чуть ниже в

while( $RUNNING == 1 ) {
          my ($buf, $fromaddr, $dhcpreq); # recv data

 

может из-за этого?

  • Replies 364
  • Created
  • Last Reply

Top Posters In This Topic

Top Posters In This Topic

Posted Images

Posted

В винде оно теперь называется: OEMCP, я тоже подбирал для своего виндового снифера.

 

На вскидку: возможно "$dhcpreq->xid()" в данном случае интерпретируется как указатель/адрес на функцию.

 

$dhcpreq->Xid попробуйте так, прямое обращение к переменной.

 

 

Posted (edited)

В винде оно теперь называется: OEMCP, я тоже подбирал для своего виндового снифера.

 

На вскидку: возможно "$dhcpreq->xid()" в данном случае интерпретируется как указатель/адрес на функцию.

 

$dhcpreq->Xid попробуйте так, прямое обращение к переменной.

Thread 3: Caught error in main loop: Can't locate object method "Xid" via package "Net::DHCP::Packet" at ./dhcpsql.pl line 273

Line273:

logger($dhcpreq->xid()."\t"."Thread $tid: Got a packet src = $ipaddr:$port length = ".length($buf));

 

 

 

PS

Перенес строку

my ($buf, $fromaddr, $dhcpreq); # recv data

чуть ниже в

while( $RUNNING == 1 ) {
          my ($buf, $fromaddr, $dhcpreq); # recv data

Это тоже не помогло..

Edited by versen
  • 2 weeks later...
Posted

Доброго времени суток.

 

Господа, есть вопрос:

 

скачал файл DHCP-сервера из шапки, все необходимые модули установил. Далее хочу запустить все это. Не могли бы вы на пальцах объяснить, какова должна быть изначальная структура БД, с которой будет работать сервер. А еще лучше, ткнуть носом в нужные строки скрипта, где эта самая структура задается. Я так понял, что вся конфигурация сервера хранится именно в БД.

 

Извиняюсь за дошкольные вопросы, просто с Perl-ом пришлось столкнуться впервые. Если что-то я не правильно понял, поправьте пожалуйста.

 

Спасибо.

Posted

Создать базу и написать запросы - домашнее задание :)

 

В моём случае база была, она специфична. Поэтому я вынес всю работу с ней в отдельные функции, максимально разделив и реализовав всю обвязку.

 

 

  • 1 month later...
Posted

Винда XP Prof SP3 не хочет просить адреса DNS (отдавал дпже принудительно, см. ниже) ... Хотя в связке с Dlink DIR-615 все впорядке. мистика.

 

QcBfkERR.jpg

 

 

Options :

DHO_DHCP_MESSAGE_TYPE(53) = DHCPACK

DHO_DHCP_SERVER_IDENTIFIER(54) = 91.1.1.2

DHO_ROUTER_DISCOVERY(31) = 0

DHO_VENDOR_ENCAPSULATED_OPTIONS(43) = \x01\x04\x00\x00\x00\x02\x02\x04\x00\x00\x00\x01\xFF

DHO_NETBIOS_NODE_TYPE(46) = 8

(249) = \x16[\xCA\x08\xAC\x10\x02\x01

DHO_DHCP_LEASE_TIME(51) = 300

DHO_DHCP_RENEWAL_TIME(58) = 400

DHO_DHCP_REBINDING_TIME(59) = 500

DHO_SUBNET_MASK(1) = 255.255.255.0

DHO_ROUTERS(3) = 172.16.2.1

DHO_DOMAIN_NAME_SERVERS(6) = 1.2.3.4

DHO_DOMAIN_NAME(15) = kuku2.net

DHO_ROUTER_DISCOVERY(31) = 0

DHO_VENDOR_ENCAPSULATED_OPTIONS(43) = \x01\x04\x00\x00\x00\x02\x02\x04\x00\x00\x00\x01\xFF

DHO_NETBIOS_NODE_TYPE(46) = 8

(249) = \x16[\xCA\x08\xAC\x10\x02\x01

DHO_DHCP_AGENT_OPTIONS(82) = \x01\x06\x00\x04\x00\xCA\x00\x09\x02\x08\x00\x06\xF0}h5\xD1

padding [0] =

Posted

zep

Может в настройках соединения стоит "получить адрес автоматически", но нет галочки "получить dns автоматически"?

 

нет. там все ок.

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

Posted

zep,

В спецификации протокола написано, что клиент ДОЛЖЕН запрашивать списком опции (и принимать пакет только с тем, что он запросил, остальные - считать ошибочными), а сервер ДОЛЖЕН отдавать только те, что запросил клиент.

На деле же получается, что множество клиентов (читай: винда) неправильно запрашивают, отсюда у серверов костыль - некоторые опции отдавать всегда, отсюда у клиентов костыль - игнорировать опции, которые клиент не запрашивал... Вот так и живем :).

Posted
Вообще идея с этой программой хорошая, но стиль написания непредсказуемый. Наверно буду переписывать. П.С. Не в обиду разработчику

 

Я и сам такой. %)

 

 

  • 2 months later...
Posted

Ёкарный бабай... А банально структуру требуемой базы описать нельзя? Хотя бы в форме sql. Приходится заниматься ананизмом...

 

Идея и реализация - большое спасибо. Но довести бы "до ума", вообще цены небыло бы.

  • 3 weeks later...
Posted

Всем привет!

А можно дописать возможность к данному серверу обновлять зоны днс?

И все же не помешала бы структура базы!

для теста создал пару таблиц

CREATE TABLE IF NOT EXISTS `subnets_routes` (
 `destination` text NOT NULL,
 `mask` text NOT NULL,
 `gateway` text NOT NULL,
 `subnet_id` int(10) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

CREATE TABLE IF NOT EXISTS `subnets` (
 `dhcp_lease_time` text NOT NULL,
 `dhcp_renewal` text NOT NULL,
 `dhcp_rebind_time` text NOT NULL,
 `mask` text NOT NULL,
 `gateway` text NOT NULL,
 `dns2` text NOT NULL,
 `dns1` text NOT NULL,
 `subnet_id` int(10) NOT NULL,
 `domain` text NOT NULL,
 `vlan_id` int(5) NOT NULL,
 `type` text NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

CREATE TABLE IF NOT EXISTS `dhcp_log` (
 `created` date NOT NULL,
 `client_mac` varchar(255) NOT NULL,
 `client_ip` text NOT NULL,
 `gateway_ip` text NOT NULL,
 `client_ident` text NOT NULL,
 `requested_ip` text NOT NULL,
 `hostname` text NOT NULL,
 `dhcp_vendor_class` text NOT NULL,
 `dhcp_user_class` text NOT NULL,
 `dhcp_opt82_chasis_id` text NOT NULL,
 `dhcp_opt82_unit_id` text NOT NULL,
 `dhcp_opt82_port_id` text NOT NULL,
 `dhcp_opt82_vlan_id` text NOT NULL,
 UNIQUE KEY `client_mac` (`client_mac`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

CREATE TABLE IF NOT EXISTS `users` (
 `id` int(5) NOT NULL AUTO_INCREMENT,
 `ip` text NOT NULL,
 `mac` text NOT NULL,
 PRIMARY KEY (`id`),
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 ;

Но такой вариант не работает

Может подскажите чуток?

Posted

Что значить "обновлять зоны днс"?

 

Где их обновлять?

 

 

 

 

В вашем примере, лучше всего делать не днс1, днс2... а сделать просто днс, в ответе оно всё равно пакутеся в один массив, там может быть хоть 10 днс серверов.

 

 

Posted

Что значить "обновлять зоны днс"?

 

Где их обновлять?

 

 

 

 

В вашем примере, лучше всего делать не днс1, днс2... а сделать просто днс, в ответе оно всё равно пакутеся в один массив, там может быть хоть 10 днс серверов.

Обновлять днс как при связке isc-dhcpd-server и bind - когда клиент регистрируется на дхцп то вносится запись в днс с именем и ипом новой тачки.

Posted

Обновлять днс как при связке isc-dhcpd-server и bind - когда клиент регистрируется на дхцп то вносится запись в днс с именем и ипом новой тачки.

 

Ну подправьте немного код, чтобы делался insert/update в базу dns-сервера (bind9-dlz, powerdns умеют хранить зоны в базе)

Posted

Ну подправьте немного код, чтобы делался insert/update в базу dns-сервера (bind9-dlz, powerdns умеют хранить зоны в базе)

При чем тут вставить в базу

Нужно чтоб когда, например, комп с именем test1 получал ип 10.10.10.10 и зону example.org ещ был доступен как test1.example.org

В примере звязки приведенной мной выше дхцп сервер посылает какие-то данные днс по rndc на сколько я знаю

Posted

А я предлагаю решить эту задачу другим способом, более универсальным.

Если делать таким способом то придется рестартовать днс чтоб обновилась зона

Posted (edited)

Программирую на php, с перлом встретился впервые... 4 часа сижу над кодом... Сервер запустился, вроде отдает все, но клиент IP не принимает =(

 perl dhcpd.pl -b 0.0.0.0 -v 2
Switch will be removed from the Perl core distribution in the next major release. 
Please install it from CPAN. It is being used at dhcpd.pl, line 19.
[06/Nov/2011 19:46:20] BIND_ADDR: 0.0.0.0, THREADS_COUNT: 4, PIDFILE: /var/run/perl-dhcpd.pid
[06/Nov/2011 19:46:20] Thread (1): START
[06/Nov/2011 19:46:20] Thread (2): START
[06/Nov/2011 19:46:20] Thread (0): START
[06/Nov/2011 19:46:20] Thread (3): START
[06/Nov/2011 19:46:23] Thread 0: Got a packet src = 0.0.0.0:68 length = 576
[06/Nov/2011 19:46:23] op = BOOTREQUEST
htype = HTYPE_ETHER
hlen = 6
hops = 0
xid = 1a13
secs = 0
flags = 8000
ciaddr = 0.0.0.0
yiaddr = 0.0.0.0
siaddr = 0.0.0.0
giaddr = 0.0.0.0
chaddr = 0019ffcb8641
sname = 
file = 
Options : 
DHO_DHCP_MESSAGE_TYPE(53) = DHCPDISCOVER
DHO_DHCP_MAX_MESSAGE_SIZE(57) = 1152
DHO_DHCP_CLIENT_IDENTIFIER(61) = \x00cisco-0019.ffcb.8641-Vl939
DHO_HOST_NAME(12) = SPb-Salova-switch
DHO_DHCP_PARAMETER_REQUEST_LIST(55) = 1 6 15 44 3 33 150 43
DHO_DHCP_OPTION_OVERLOAD(52) = 3
padding [265] = 000000000000000000000000000000000.......................000000000000000000
[06/Nov/2011 19:46:23] Sending response to = 255.255.255.255:68 length = 311
[06/Nov/2011 19:46:23] op = BOOTREPLY
htype = HTYPE_ETHER
hlen = 6
hops = 0
xid = 1a13
secs = 0
flags = 8000
ciaddr = 0.0.0.0
yiaddr = 192.168.238.11
siaddr = 0.0.0.0
giaddr = 0.0.0.0
chaddr = 0019ffcb8641
sname = 
file = 
Options : 
DHO_DHCP_MESSAGE_TYPE(53) = DHCPOFFER
DHO_DHCP_SERVER_IDENTIFIER(54) = 192.168.239.1
DHO_DHCP_LEASE_TIME(51) = 100
DHO_SUBNET_MASK(1) = 255.255.254.0
DHO_ROUTERS(3) = 192.168.238.1
DHO_DOMAIN_NAME_SERVERS(6) = 8.8.8.8 8.8.8.8
DHO_HOST_NAME(12) = client
DHO_DOMAIN_NAME(15) = flag.ru
DHO_VENDOR_ENCAPSULATED_OPTIONS(43) = \x01\x04\x00\x00\x00\x02\x02\x04\x00\x00\x00\x01\xFF
padding [0] = 

[06/Nov/2011 19:46:23] Thread 0: the code took: 0.0151272 wallclock secs ( 0.01 usr +  0.00 sys =  0.01 CPU)

Подскажите, что не так сервер отдает?

Edited by BlackSnow
Posted

Он писался и отлаживался для работы с релей агентом, напрямую он не тестировался.

 

Посмотрите dhcpdump / tcpdump ~ом, действительно ли пакеты с ответом уходят клиенту, и посмотрите мак адрес на который они улетают, должен быть ff::ff

 

 

Join the conversation

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

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


×
×
  • Create New...
На сайте используются файлы cookie и сервисы аналитики для корректной работы форума и улучшения качества обслуживания. Продолжая использовать сайт, вы соглашаетесь с использованием файлов cookie и с Политикой конфиденциальности.