mrsaygo Опубликовано 10 июня, 2011 · Жалоба Ubuntu server 11.04 apt-get install dhcp3-server никаких танцев с включением USE_SOCKETS не проводилось, - все из коробки. 2 локальных интерфейса 192.168.10.1 - оттдает ИП с привязкой к маку - все работает 10.0.0.1 - отдает на d-link 3550 и далее (на данный момент тестируется только с d-link 3550) Конфиги: dhcpd.conf subnet 10.0.0.0 netmask 255.255.0.0 { include "/etc/dhcp/pb.conf"; } subnet 192.168.0.0 netmask 255.255.0.0{ include "/etc/dhcp/sb.conf"; } pb.conf option domain-name-servers хх.хх.хх.хх ,хх.хх.хх.хх; option routers 10.0.0.1; default-lease-time 30; max-lease-time 70; authoritative; option broadcast-address 10.0.255.255; option ntp-servers 195.137.202.4; #allow unknown-clients; log(info, "***"); if exists agent.circuit-id { log( info,concat("*Leased ",binary-to-ascii(10,8,".",leased-address)," (with opt82)") ); log( info,concat("*Remote-ID: ",binary-to-ascii(16,8,":",substring(option agent.remote-id,2,6))) ); log( info,concat("*Port: ",binary-to-ascii(10,8,"",suffix(option agent.circuit-id,1))) ); } else { log( info,concat("*Leased ",binary-to-ascii(10,8,".",leased-address)," (without opt82)") ); } log(info, "***"); class "10.0.2.254:7" { match if binary-to-ascii (10, 8, "", suffix( option agent.circuit-id, 1)) = "7" and binary-to-ascii(10,8,".",packet(24,4))="10.0.2.254"; } pool { range 10.0.2.7; allow members of "10.0.2.254:7"; } sb.conf range 192.168.200.1 192.168.200.250; option domain-name-servers хх.хх.хх.хх,хх.хх.хх.хх; option routers 192.168.10.1; default-lease-time 1114400; max-lease-time 11172800; authoritative; option broadcast-address 192.168.255.255; option ntp-servers хх.хх.хх.хх host 1a23{ hardware ethernet 00:1c:25:0f:30:a9; fixed-address 192.168.10.33; } (В файлах даны настройки по одному хосту для каждой подсети) А теперь суть проблемы - включаю ноут в 7 порт свича,- и получаю 10.0.2.7 - все хорошо. Syslog ubuntu dhcpd: *** ubuntu dhcpd: *Leased 10.0.2.7 (with opt82) ubuntu dhcpd: *Remote-ID: 0:19:5b:8b:7:10 ubuntu dhcpd: *Port: 7 ubuntu dhcpd: *** ubuntu dhcpd: DHCPREQUEST for 10.0.2.7 (10.0.0.1) from 00:13:77:69:76:34 (homa) via 10.0.2.254 ubuntu dhcpd: DHCPACK on 10.0.2.7 to 00:13:77:69:76:34 (homa) via 10.0.2.254 Перетыкаю патчкорд в другой ноут - Syslog сначала дает Jun 10 16:23:14 ubuntu dhcpd: DHCPDISCOVER from 00:1e:33:07:ef:89 via 10.0.2.254: network 10.0.0.0/16: no free leases Jun 10 16:23:23 ubuntu dhcpd: DHCPDISCOVER from 00:1e:33:07:ef:89 via eth0: network 10.0.0.0/16: no free leases Jun 10 16:23:23 ubuntu dhcpd: DHCPDISCOVER from 00:1e:33:07:ef:89 via 10.0.2.254: network 10.0.0.0/16: no free leases Оно то и понятно - leases Но потом начинается такое - Jun 10 16:26:06 ubuntu dhcpd: *** Jun 10 16:26:06 ubuntu dhcpd: DHCPDISCOVER from 00:1e:33:07:ef:89 via 10.0.2.254 Jun 10 16:26:06 ubuntu dhcpd: DHCPOFFER on 10.0.2.7 to 00:1e:33:07:ef:89 (NOUT233) via 10.0.2.254 Jun 10 16:26:06 ubuntu dhcpd: DHCPREQUEST for 10.0.2.7 (10.0.0.1) from 00:1e:33:07:ef:89 via eth0: lease 10.0.2.7 unavailable. Jun 10 16:26:06 ubuntu dhcpd: DHCPNAK on 10.0.2.7 to 00:1e:33:07:ef:89 via eth0 Jun 10 16:26:06 ubuntu dhcpd: *** Jun 10 16:26:06 ubuntu dhcpd: *Leased 10.0.2.7 (with opt82) Jun 10 16:26:06 ubuntu dhcpd: *Remote-ID: 0:19:5b:8b:7:10 Jun 10 16:26:06 ubuntu dhcpd: *Port: 7 Jun 10 16:26:06 ubuntu dhcpd: *** Jun 10 16:26:06 ubuntu dhcpd: DHCPREQUEST for 10.0.2.7 (10.0.0.1) from 00:1e:33:07:ef:89 (NOUT233) via 10.0.2.254 Jun 10 16:26:06 ubuntu dhcpd: DHCPACK on 10.0.2.7 to 00:1e:33:07:ef:89 (NOUT233) via 10.0.2.254 Jun 10 16:26:07 ubuntu dhcpd: DHCPDISCOVER from 00:1e:33:07:ef:89 via eth0: network 10.0.0.0/16: no free leases Jun 10 16:26:07 ubuntu dhcpd: *** Jun 10 16:26:07 ubuntu dhcpd: *Leased 10.0.2.7 (with opt82) Jun 10 16:26:07 ubuntu dhcpd: *Remote-ID: 0:19:5b:8b:7:10 Jun 10 16:26:07 ubuntu dhcpd: *Port: 7 Jun 10 16:26:07 ubuntu dhcpd: *** Jun 10 16:26:07 ubuntu dhcpd: DHCPDISCOVER from 00:1e:33:07:ef:89 via 10.0.2.254 Jun 10 16:26:07 ubuntu dhcpd: DHCPOFFER on 10.0.2.7 to 00:1e:33:07:ef:89 (NOUT233) via 10.0.2.254 Jun 10 16:26:07 ubuntu dhcpd: DHCPREQUEST for 10.0.2.7 (10.0.0.1) from 00:1e:33:07:ef:89 via eth0: lease 10.0.2.7 unavailable. Jun 10 16:26:07 ubuntu dhcpd: DHCPNAK on 10.0.2.7 to 00:1e:33:07:ef:89 via eth0 Jun 10 16:26:07 ubuntu dhcpd: *** Jun 10 16:26:07 ubuntu dhcpd: *Leased 10.0.2.7 (with opt82) Jun 10 16:26:07 ubuntu dhcpd: *Remote-ID: 0:19:5b:8b:7:10 Jun 10 16:26:07 ubuntu dhcpd: *Port: 7 Jun 10 16:26:07 ubuntu dhcpd: *** Jun 10 16:26:07 ubuntu dhcpd: DHCPREQUEST for 10.0.2.7 (10.0.0.1) from 00:1e:33:07:ef:89 (NOUT233) via 10.0.2.254 Jun 10 16:26:07 ubuntu dhcpd: DHCPACK on 10.0.2.7 to 00:1e:33:07:ef:89 (NOUT233) via 10.0.2.254 При этом ноут адрес не получает, но логи пишут вроде адрес отдан. Пробовал менять время leases - толку нет. Цель - заставить option 82 работать правильно, - при смене устройства не засорять логи, а по истечении скажем 10 минут (default-lease-time 600;) отдавать правильный адрес уже другому маку. В какую сторону смотреть? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
dsk Опубликовано 12 июня, 2011 · Жалоба То ли RX в вашем ноуте не работает, то ли свич релеящий бузит и до ноута ответ дхцп сервера не доводит. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
mrsaygo Опубликовано 13 июня, 2011 · Жалоба То ли RX в вашем ноуте не работает, то ли свич релеящий бузит и до ноута ответ дхцп сервера не доводит. RX отпадает - тестил на разных машинках, при чем периодически отдает нормально (связано с лиз таймом). Свич - тоже менял, 3526 - поведение такое же. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
dex Опубликовано 9 января, 2012 · Жалоба ubuntu 11.10, isc-dhcp-server-4.1.1-P1-17ubuntu10.1, настроен под option 82, конфиги один в один тестовый свич des-3828 с натсройками: DES-3800:admin#show dhcp_relay Command: show dhcp_relay DHCP/BOOTP Relay Status : Enabled DHCP/BOOTP Hops Count Limit : 4 DHCP/BOOTP Relay Time Threshold : 0 DHCP Relay Agent Information Option 82 State : Enabled DHCP Relay Agent Information Option 82 Check : Enabled DHCP Relay Agent Information Option 82 Policy : Replace Interface Server 1 Server 2 Server 3 Server 4 ------------ --------------- --------------- --------------- -------------- System 192.168.168.6 Те же грабли, адрес выдается, DHCPREQUEST возвращает unavailable, и тут же проходит dhcpnak с отбоем. И цикл повторяется с ***енной скоростью, в syslog сыпятся те же, что и выше сообщения. Как решилась задачка? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
lan-viper Опубликовано 9 января, 2012 · Жалоба dex, по проблеме топикстартера: у него для класса 10.0.2.254:7 (в который попадает абсолютно всё с порта 7 свича с ip 10.0.2.254) описан пул с range из одного ip 10.0.2.7, по этому переткнув патчкорд, новое устройство в порту сможет получить адрес 10.0.2.7 только по прошествии как минимум default-lease-time, как максимум max-lease-time. У него в конфиге минимум - 0,5 мин. Учитывал он это или нет, остаётся загадкой. У меня в сети для некоторых коммутаторов структура конфига подобно, только время больше 300 - 5 мин. Это время нужно выждать, что-бы получить ип машине с другим маком. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
dex Опубликовано 9 января, 2012 · Жалоба на самом деле проблема в циклической выдаче и мгновенной отмене выданного адреса, это видно по логам: Jan 10 00:19:31 testd dhcpd: DHCPINFORM from 192.168.169.50 via 192.168.171.254 Jan 10 00:19:31 testd dhcpd: DHCPACK to 192.168.169.50 (00:17:31:81:23:19) via eth0 Jan 10 00:19:43 testd dhcpd: DHCPDISCOVER from 00:1f:16:37:84:03 via eth0: network test: no free leases Jan 10 00:19:43 testd dhcpd: *** Jan 10 00:19:43 testd dhcpd: *Leased 192.168.168.244 (with opt82) Jan 10 00:19:43 testd dhcpd: *Remote-ID: 0:1c:f0:23:51:0 Jan 10 00:19:43 testd dhcpd: *Port: 4 Jan 10 00:19:43 testd dhcpd: ### Jan 10 00:19:43 testd dhcpd: DHCPDISCOVER from 00:1f:16:37:84:03 via 192.168.171.254 Jan 10 00:19:44 testd dhcpd: DHCPOFFER on 192.168.168.244 to 00:1f:16:37:84:03 (pc) via 192.168.171.254 Jan 10 00:19:44 testd dhcpd: DHCPREQUEST for 192.168.168.244 (192.168.168.6) from 00:1f:16:37:84:03 via eth0: lease 192.168.168.244 unavailable. Jan 10 00:19:44 testd dhcpd: DHCPNAK on 192.168.168.244 to 00:1f:16:37:84:03 via eth0 Jan 10 00:19:44 testd dhcpd: *** Jan 10 00:19:44 testd dhcpd: *Leased 192.168.168.244 (with opt82) Jan 10 00:19:44 testd dhcpd: *Remote-ID: 0:1c:f0:23:51:0 Jan 10 00:19:44 testd dhcpd: *Port: 4 Jan 10 00:19:44 testd dhcpd: ### Jan 10 00:19:44 testd dhcpd: DHCPREQUEST for 192.168.168.244 (192.168.168.6) from 00:1f:16:37:84:03 (pc) via 192.168.171.254 Jan 10 00:19:44 testd dhcpd: DHCPACK on 192.168.168.244 to 00:1f:16:37:84:03 (pc) via 192.168.171.254 Jan 10 00:19:44 testd dhcpd: DHCPDISCOVER from 00:1f:16:37:84:03 via eth0: network test: no free leases Jan 10 00:19:44 testd dhcpd: *** Jan 10 00:19:44 testd dhcpd: *Leased 192.168.168.244 (with opt82) Jan 10 00:19:44 testd dhcpd: *Remote-ID: 0:1c:f0:23:51:0 Jan 10 00:19:44 testd dhcpd: *Port: 4 Jan 10 00:19:44 testd dhcpd: ### Jan 10 00:19:44 testd dhcpd: DHCPDISCOVER from 00:1f:16:37:84:03 via 192.168.171.254 Jan 10 00:19:44 testd dhcpd: DHCPOFFER on 192.168.168.244 to 00:1f:16:37:84:03 (pc) via 192.168.171.254 Jan 10 00:19:44 testd dhcpd: DHCPREQUEST for 192.168.168.244 (192.168.168.6) from 00:1f:16:37:84:03 via eth0: lease 192.168.168.244 unavailable. Jan 10 00:19:44 testd dhcpd: DHCPNAK on 192.168.168.244 to 00:1f:16:37:84:03 via eth0 Jan 10 00:19:44 testd dhcpd: *** Jan 10 00:19:44 testd dhcpd: *Leased 192.168.168.244 (with opt82) Jan 10 00:19:44 testd dhcpd: *Remote-ID: 0:1c:f0:23:51:0 Jan 10 00:19:44 testd dhcpd: *Port: 4 и до windows машины ответы эти долетают, только адрес никакой не присваивается, и syslog заполняется с ужосающей скоростью. вот еще выдежка из dhcpd.leases: lease 192.168.168.244 { starts 1 2012/01/09 12:19:52; ends 2 2012/01/10 00:19:52; cltt 1 2012/01/09 12:19:52; binding state active; next binding state free; hardware ethernet 00:1f:16:37:84:03; uid "\001\000\037\0267\204\003"; option agent.circuit-id 0:4:0:1:0:4; option agent.remote-id 0:6:0:1c:f0:23:51:0; client-hostname "pc"; } lease 192.168.168.244 { starts 1 2012/01/09 12:19:52; ends 1 2012/01/09 12:19:52; tstp 1 2012/01/09 12:19:52; cltt 1 2012/01/09 12:19:52; binding state free; hardware ethernet 00:1f:16:37:84:03; uid "\001\000\037\0267\204\003"; } lease 192.168.168.244 { starts 1 2012/01/09 12:19:53; ends 2 2012/01/10 00:19:53; cltt 1 2012/01/09 12:19:53; binding state active; next binding state free; hardware ethernet 00:1f:16:37:84:03; uid "\001\000\037\0267\204\003"; option agent.circuit-id 0:4:0:1:0:4; option agent.remote-id 0:6:0:1c:f0:23:51:0; client-hostname "pc"; } lease 192.168.168.244 { starts 1 2012/01/09 12:19:53; ends 1 2012/01/09 12:19:53; tstp 1 2012/01/09 12:19:53; cltt 1 2012/01/09 12:19:53; binding state free; hardware ethernet 00:1f:16:37:84:03; uid "\001\000\037\0267\204\003"; и так до бесконечности ... перепробовал включать и отключать стандартные опции в dhcpd.conf, не помогает (( хоть бы идею какую-никакую в какую сторону копать ... Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
xcme Опубликовано 28 января, 2012 · Жалоба Как добиться такого глюка? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
dex Опубликовано 21 февраля, 2012 · Жалоба пришло наконец новое оборудование, сейчас пробую на DES-3200-18 и все работает! с теме же конфигами! значит проблема была в DES-3828, будем крутить его, хотя варианты с разными его настройками я перебрал еще тогда ... Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
kitan Опубликовано 23 сентября, 2013 (изменено) · Жалоба Пришел к подобной проблеме. Ранее идентификация клиента происходила следующем образом: class "sw-10.0.5.23-p7" { match if option agent.remote-id = 0:6:00:1e:58:9e:c5:72 and substring(option agent.circuit-id,5,1)=7; } В данном случае приходится при смене коммутатора приходится менять МАК коммутатора на dhcp сервере, что не очень удобно. При попытке отказаться от опции RemoteID в dhcpd в пользу Relay IP появилась такая же проблема как у топикастера. Она заключается в следующем: На некоторых коммутаторах Dlink не перехватываются релеем юникастные пакеты dhcp. Например не перехватываются на устройствах DES-3200-xx-c1. В следствии чего запрос DHCP Request посылается напрямую dhcp серверу. При идентификации dhcp сервером клиента только по опции 82 проблемы с "lease x.x.x.x unavailable" не возникает. Даже когда запрос посылается напрямую серверу (юникастно). Если же использовать запись следующего вида: class "10.0.2.254:7" { match if binary-to-ascii (10, 8, "", suffix( option agent.circuit-id, 1)) = "7" and binary-to-ascii(10,8,".",packet(24,4))="10.0.2.254"; } т.е. вместо remote ID используется Relay agent IP, то при посылке клиентов юникастных запросов сервер отвечает DHCPNAK. Как мне кажется это происходит из-за того, что при посылке юникастного запроса значение Relay agent IP (packet(24,4)) выставляется в 0.0.0.0 . Пробовал выставлять значение класса след. образом: class "10.0.2.254:7" { match if binary-to-ascii (10, 8, "", suffix( option agent.circuit-id, 1)) = "7" and ((binary-to-ascii(10,8,".",packet(24,4))="10.0.2.254")or(binary-to-ascii(10,8,".",packet(24,4))="0.0.0.0")); } результата не дало. Кто-нибудь смог решить похожую проблему? Изменено 23 сентября, 2013 пользователем kitan Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
kitan Опубликовано 24 сентября, 2013 (изменено) · Жалоба Нашел как обойти отправление dhcpnak сервером. Если объявить класс подобным образом: class "10.0.2.254:p2" { match if ((substring(option agent.circuit-id,5,1)=2) or (not exists agent.circuit-id)) and ((binary-to-ascii(10, 8, ".", packet(24, 4))="10.0.2.254") or(binary-to-ascii(10, 8, ".", packet(24, 4))="0.0.0.0")); } то сервер отвечает на юникасты от клиентов корректно. Но в данном случае каждый класс объявленный подобным образом соответствует любому пакету без опции 82 пришедшему на сервер. В данном случае ответ выдается на основе информации из leases. Кто-нибудь использует подобную конфигурацию? Изменено 24 сентября, 2013 пользователем kitan Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
hsvt Опубликовано 6 августа, 2014 (изменено) · Жалоба Здравствуйте. Я вот тут тоже решил попробовать схему с isc-dhcp43-server-4.3.0_2 + Options 82 на FreeBSD 9.2 и с D-Link DES-3528 (dhcp_relay + dhcp snoop). Опыта в этом не имею, поэтому прошу совета у экспертов. Выдача адреса БЕЗ классов и привязок к портам, макам и remote-id работает, но если дописывать преобразование и смещение то isc-dhcp игнорит Options 82 от коммутатора и адрес не выдает. Вот конфиги: default-lease-time 100; max-lease-time 7200; min-lease-time 1000; ddns-update-style none; authoritative; one-lease-per-client false; deny duplicates; ignore client-updates; local-address 192.168.254.218; log-facility local7; class "4" { match if binary-to-ascii(10, 8, ".", packet(24, 4)) ="192.168.254.1" and binary-to-ascii(10, 8, "", suffix(option agent.circuit-id, 1)) = "4"; } subnet 192.168.254.0 netmask 255.255.255.0 { option routers 192.168.254.250; option subnet-mask 255.255.255.0; option broadcast-address 192.168.254.255; pool { range 192.168.254.81; allow members of "4"; } } D-Link: DES-3528:admin#show dhcp_relay Command: show dhcp_relay DHCP/BOOTP Relay Status : Enabled DHCP/BOOTP Hops Count Limit : 16 DHCP/BOOTP Relay Time Threshold : 0 DHCP Vendor Class Identifier Option 60 State: Disabled DHCP Client Identifier Option 61 State: Disabled DHCP Relay Agent Information Option 82 State : Enabled DHCP Relay Agent Information Option 82 Check : Disabled DHCP Relay Agent Information Option 82 Policy : Replace DHCP Relay Agent Information Option 82 Remote ID : AC-F1-DF-3D-74-50 Interface Server 1 Server 2 Server 3 Server 4 ------------ --------------- --------------- --------------- --------------- Server VLAN ID List --------------- ----------------------------------------------------------- 192.168.254.218 254 dhcpdump: TIME: 2014-08-06 18:00:30.911 IP: 192.168.254.1 (3c:61:04:47:1f:f0) > 192.168.254.218 (44:1e:a1:54:31:e5) OP: 1 (BOOTPREQUEST) HTYPE: 1 (Ethernet) HLEN: 6 HOPS: 1 XID: ac65d38a SECS: 7424 FLAGS: 0 CIADDR: 0.0.0.0 YIADDR: 0.0.0.0 SIADDR: 0.0.0.0 GIADDR: 192.168.254.1 CHADDR: 8c:89:a5:02:99:06:00:00:00:00:00:00:00:00:00:00 SNAME: . FNAME: . OPTION: 53 ( 1) DHCP message type 1 (DHCPDISCOVER) OPTION: 116 ( 1) DHCP Autoconfiguration 01 . OPTION: 61 ( 7) Client-identifier 01:8c:89:a5:02:99:06 OPTION: 12 ( 8) Host name admin OPTION: 60 ( 8) Vendor class identifier MSFT 5.0 OPTION: 55 ( 11) Parameter Request List 1 (Subnet mask) 15 (Domainname) 3 (Routers) 6 (DNS server) 44 (NetBIOS name server) 46 (NetBIOS node type) 47 (NetBIOS scope) 31 (Perform router discovery) 33 (Static route) 249 (MSFT - Classless route) 43 (Vendor specific info) OPTION: 43 ( 2) Vendor specific info dc00 .. OPTION: 82 ( 18) Relay Agent Information Circuit-ID 00:04:00:fe:00:04 <unknown-0> 02:08:00:06 <unknown-0> ac:f1:df:3d:74:50 tshark: option: (82) Agent Information Option Length: 18 Option 82 Suboption: (1) Agent Circuit ID Length: 6 Agent Circuit ID: 000400fe0004 Option 82 Suboption: (2) Agent Remote ID Length: 8 Agent Remote ID: 0006acf1df3d7450 Логов к сожалению предоставить не могу, не удается заставить isc-dhcp из "песочницы" писать логи в /var/log/dhcpd.log. Может кто нибудь помочь добиться выдачи адреса по параметрам из Option 82 (хотя бы без всяких патчей и самописнных серверов, коих тут в поиске по темам достаточно, но хотелось бы начать с оригинального сервера). Изменено 6 августа, 2014 пользователем hsvt Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
hsvt Опубликовано 7 августа, 2014 · Жалоба Разобрался с помощью dhpcd -d дебаг. В конфиге dhcpd.conf не было добавлено сетки с которой релеит свич. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
hsvt Опубликовано 8 августа, 2014 (изменено) · Жалоба Теперь столкнулся с проблемой "no free leases". default-lease-time 120; max-lease-time 7200; min-lease-time 1000; ddns-update-style none; authoritative; one-lease-per-client false; deny duplicates; ignore client-updates; local-address 192.168.254.218; log-facility local7; if exists agent.circuit-id { log(info, concat("Lease" ," IP ", binary-to-ascii(10, 8, ".", leased-address) ," MAC ", binary-to-ascii(16, 8, ":", substring(hardware, 1, 6)) ," switch ", substring(option agent.remote-id, 2, 15) ," port ", binary-to-ascii(10, 16, "", substring(option agent.circuit-id, 4, 2)) ," VLAN ", binary-to-ascii(10, 16, "", substring(option agent.circuit-id, 2, 2)) ) ); } class "4" { match if ( binary-to-ascii(10, 16, "", substring(option agent.circuit-id, 2, 2)) = "254" and binary-to-ascii(10, 16, "", substring(option agent.circuit-id, 4, 2)) = "4" and binary-to-ascii(16, 8, ":", substring(hardware, 1, 6)) = "8c:89:a5:02:99:06" and binary-to-ascii(10, 8, ".", packet(24, 4)) = "10.100.0.1" ); } shared-network "sw" { subnet 10.100.0.0 netmask 255.255.255.0 { } subnet 192.168.254.0 netmask 255.255.255.0 { option routers 192.168.254.250; option subnet-mask 255.255.255.0; option broadcast-address 192.168.254.255; pool { range 192.168.254.81; allow members of "4"; } } } При запуске: Starting dhcpd. Internet Systems Consortium DHCP Server 4.3.0 Copyright 2004-2014 Internet Systems Consortium. All rights reserved. For info, please visit https://www.isc.org/software/dhcp/ Wrote 0 class decls to leases file. Wrote 0 leases to leases file. Listening on BPF/igb1/44:1e:a1:54:31:e5/sw Sending on BPF/igb1/44:1e:a1:54:31:e5/sw Sending on Socket/fallback/fallback-net Server starting service. DHCPDISCOVER from 8c:89:a5:02:99:06 via 10.100.0.1: network sw: no free leases DHCPDISCOVER from 8c:89:a5:02:99:06 via igb1: network sw: no free leases DHCPDISCOVER from 8c:89:a5:02:99:06 via 10.100.0.1: network sw: no free leases DHCPDISCOVER from 8c:89:a5:02:99:06 via igb1: network sw: no free leases DHCPDISCOVER from 8c:89:a5:02:99:06 via 10.100.0.1: network sw: no free leases DHCPDISCOVER from 8c:89:a5:02:99:06 via igb1: network sw: no free leases DHCPDISCOVER from 8c:89:a5:02:99:06 via 10.100.0.1: network sw: no free leases DHCPDISCOVER from 8c:89:a5:02:99:06 via igb1: network sw: no free leases dhcp_relay включен на коммутаторе с адресом 10.100.0.1 (D-Link DES-3528) (проброшен vlan и всё это проходит с сервера через маршрутизатор т.е. сетки друг друга видят и пингуются), если убирать строчку shared-network "sw" { subnet 10.100.0.0 netmask 255.255.255.0 { } Тогда получаю сообщения такого вида: DHCPDISCOVER from 8c:89:a5:02:99:06 via 10.100.0.1: unknown network segment DHCPDISCOVER from 8c:89:a5:02:99:06 via igb1: network 192.168.254.0/24: no free leases DHCPDISCOVER from 8c:89:a5:02:99:06 via 10.100.0.1: unknown network segment DHCPDISCOVER from 8c:89:a5:02:99:06 via igb1: network 192.168.254.0/24: no free leases Ткинте пожалуйста где косяк. Я понимаю что dhcp_relay agent находится в другой сети (10.100.0.0/24) но из этого диапазона адреса выдавать не нужно, нужно только пересылать Option 82. Или нужно обязательно выносить коммутатор в такую же сетку адресов как 192.168.254.0/24 ? Изменено 8 августа, 2014 пользователем hsvt Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
0pl0pl Опубликовано 8 августа, 2014 · Жалоба and binary-to-ascii(16, 8, ":", substring(hardware, 1, 6)) = "8c:89:a5:02:99:06" изменения в and binary-to-ascii(16, 8, ":", substring(hardware, 1, 6)) = "8c:89:a5:2:99:6" преобразование число-текст отрезает не значащие нули слева Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Negator Опубликовано 8 августа, 2014 · Жалоба DHCPDISCOVER from 8c:89:a5:02:99:06 via 10.100.0.1: unknown network segment у вас сервер ниего не знает об этой сети, оттого и запись поэтому shared network нужен. что касается no free leases - это совсем другая проблема Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
hsvt Опубликовано 8 августа, 2014 (изменено) · Жалоба Это исправил, спасибо, но проблему с выдачей адреса не решило. Переделал последний блок на: shared-network sw { subnet 192.168.254.0 netmask 255.255.255.0 { option routers 192.168.254.250; option subnet-mask 255.255.255.0; option broadcast-address 192.168.254.255; pool { range 192.168.254.81; allow members of "4"; } } } На D-Link выключил dhcp_relay и попробовал через dhcp_local_relay чтобы в пакете не было CIADDR коммутатора и релеился только по нужному vlan. TIME: 2014-08-08 11:43:22.756 IP: 0.0.0.0 (8c:89:a5:02:99:06) > 255.255.255.255 (ff:ff:ff:ff:ff:ff) OP: 1 (BOOTPREQUEST) HTYPE: 1 (Ethernet) HLEN: 6 HOPS: 0 XID: d7aa5ac7 SECS: 6656 FLAGS: 0 CIADDR: 0.0.0.0 YIADDR: 0.0.0.0 SIADDR: 0.0.0.0 GIADDR: 0.0.0.0 CHADDR: 8c:89:a5:02:99:06:00:00:00:00:00:00:00:00:00:00 SNAME: . FNAME: . OPTION: 53 ( 1) DHCP message type 1 (DHCPDISCOVER) OPTION: 116 ( 1) DHCP Autoconfiguration 01 . OPTION: 61 ( 7) Client-identifier 01:8c:89:a5:02:99:06 OPTION: 12 ( 8) Host name admin OPTION: 60 ( 8) Vendor class identifier MSFT 5.0 OPTION: 55 ( 11) Parameter Request List 1 (Subnet mask) 15 (Domainname) 3 (Routers) 6 (DNS server) 44 (NetBIOS name server) 46 (NetBIOS node type) 47 (NetBIOS scope) 31 (Perform router discovery) 33 (Static route) 249 (MSFT - Classless route) 43 (Vendor specific info) OPTION: 43 ( 2) Vendor specific info dc00 .. OPTION: 82 ( 18) Relay Agent Information Circuit-ID 00:04:00:fe:00:04 <unknown-0> 02:08:00:06 <unknown-0> ac:f1:df:3d:74:50 DHCPDISCOVER from 8c:89:a5:02:99:06 via igb1: network sw: no free leases DHCPDISCOVER from 8c:89:a5:02:99:06 via igb1: network sw: no free leases DHCPDISCOVER from 8c:89:a5:02:99:06 via igb1: network sw: no free leases DHCPDISCOVER from 8c:89:a5:02:99:06 via 10.100.0.1: unknown network segment у вас сервер ниего не знает об этой сети, оттого и запись поэтому shared network нужен. что касается no free leases - это совсем другая проблема shared-network прописан, пробовал уже по разному. С этой сети только информация Option 82 приходит. Изменено 8 августа, 2014 пользователем hsvt Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
alexaaa Опубликовано 15 августа, 2014 · Жалоба Вот Вам рабочий конфиг который работает с DGS-3612 и QSW-8300-28F, уже 5 лет работает без проблем, адресса выдаются по vlan id, если с не заработает, то значит версия dhcp кривя, или прошивка свитча. option domain-name "server.ru"; option domain-name-servers 10.230.0.5,10.230.0.8; default-lease-time 10512000; max-lease-time 10512000; server-identifier 10.230.0.5; always-broadcast on; authoritative; ddns-update-style none; ignore client-updates; option ip-forwarding on; deny duplicates; log-facility local6; option ms-classless-static-routes code 249 = array of integer 8; option rfc3442-classless-static-routes code 121 = array of integer 8; option space MSFT; option MSFT.DisableNetBIOS code 1 = unsigned integer 32; option MSFT.ReleaseOnShutdown code 2 = unsigned integer 32; option MSFT.DefaultRouteMetric code 3 = unsigned integer 32; if exists agent.circuit-id { log(info, concat("Lease" ," IP ", binary-to-ascii(10, 8, ".", leased-address) ," MAC ", binary-to-ascii(16, 8, ":", substring(hardware, 1, 6)) ," port ", binary-to-ascii(10, 16, "", substring(option agent.circuit-id, 4, 2)) ," VLAN ", binary-to-ascii(10, 16, "", substring(option agent.circuit-id, 2, 2)) ," switch ", binary-to-ascii(16, 8, ":", substring(option agent.remote-id, 2, 20)) ) ); } subnet 10.230.0.0 netmask 255.255.248.0 { } subnet 10.230.16.0 netmask 255.255.248.0 { class "gorod2" { match if ( binary-to-ascii(10, 16, "", substring(option agent.circuit-id, 2, 2)) = "202"); } pool { range 10.230.16.100 10.230.23.254; option routers 10.230.16.1; option broadcast-address 10.230.23.255; option ms-classless-static-routes 16, 10,200, 10,230,16,1, 16, 10,230, 10,230,16,1; option rfc3442-classless-static-routes 16, 10,200, 10,230,16,1, 16, 10,230, 10,230,16,1; allow members of "gorod2"; } Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
hsvt Опубликовано 15 августа, 2014 · Жалоба Вот Вам рабочий конфиг который работает с DGS-3612 и QSW-8300-28F, уже 5 лет работает без проблем, адресса выдаются по vlan id, если с не заработает, то значит версия dhcp кривя, или прошивка свитча. option domain-name "server.ru"; option domain-name-servers 10.230.0.5,10.230.0.8; default-lease-time 10512000; max-lease-time 10512000; server-identifier 10.230.0.5; always-broadcast on; authoritative; ddns-update-style none; ignore client-updates; option ip-forwarding on; deny duplicates; log-facility local6; option ms-classless-static-routes code 249 = array of integer 8; option rfc3442-classless-static-routes code 121 = array of integer 8; option space MSFT; option MSFT.DisableNetBIOS code 1 = unsigned integer 32; option MSFT.ReleaseOnShutdown code 2 = unsigned integer 32; option MSFT.DefaultRouteMetric code 3 = unsigned integer 32; if exists agent.circuit-id { log(info, concat("Lease" ," IP ", binary-to-ascii(10, 8, ".", leased-address) ," MAC ", binary-to-ascii(16, 8, ":", substring(hardware, 1, 6)) ," port ", binary-to-ascii(10, 16, "", substring(option agent.circuit-id, 4, 2)) ," VLAN ", binary-to-ascii(10, 16, "", substring(option agent.circuit-id, 2, 2)) ," switch ", binary-to-ascii(16, 8, ":", substring(option agent.remote-id, 2, 20)) ) ); } subnet 10.230.0.0 netmask 255.255.248.0 { } subnet 10.230.16.0 netmask 255.255.248.0 { class "gorod2" { match if ( binary-to-ascii(10, 16, "", substring(option agent.circuit-id, 2, 2)) = "202"); } pool { range 10.230.16.100 10.230.23.254; option routers 10.230.16.1; option broadcast-address 10.230.23.255; option ms-classless-static-routes 16, 10,200, 10,230,16,1, 16, 10,230, 10,230,16,1; option rfc3442-classless-static-routes 16, 10,200, 10,230,16,1, 16, 10,230, 10,230,16,1; allow members of "gorod2"; } Приемно благодарен, я уже сам практически разобрался вот с таким конфигом. default-lease-time 300; max-lease-time 300; min-lease-time 120; ddns-update-style none; authoritative; one-lease-per-client true; deny duplicates; ignore client-updates; local-address 192.168.254.218; log-facility local7; log(info, "***"); if exists agent.circuit-id { log( info,concat("Leased IP: ",binary-to-ascii(10,8,".",leased-address)," (with opt82)") ); log( info,concat("MAC: ",binary-to-ascii(16,8,":",substring(hardware,1,6))) ); log( info,concat("Remote-ID: ",binary-to-ascii(16,8,":",substring(option agent.remote-id,2,6))) ); log( info,concat("Switch addr: ",binary-to-ascii(10,8, ".", packet(24, 4))) ); log( info,concat("Port: ",binary-to-ascii(10,8,"",suffix(option agent.circuit-id,1))) ); log( info,concat("VLAN: ",binary-to-ascii(10,16,"",substring(option agent.circuit-id,2,2))) ); } log(info, "***"); shared-network vlan254 { include "/usr/local/etc/dhcpd.d/10.100.0.1.conf"; subnet 10.100.0.0 netmask 255.255.255.0 { } subnet 192.168.254.0 netmask 255.255.255.0 { pool { allow members of "10.100.0.1:4"; range 192.168.254.81; option routers 192.168.254.250; option broadcast-address 192.168.254.255; option subnet-mask 255.255.255.0; } } } 10.100.0.1.conf class "10.100.0.1:4" { match if ( binary-to-ascii(10,16, "", substring(option agent.circuit-id,2,2)) = "254" and binary-to-ascii(10,16, "", substring(option agent.circuit-id,4,2)) = "4" and binary-to-ascii(16,8, ":", suffix (option agent.remote-id,6)) = "ac:f1:df:3d:74:50" ); } Осталось продумать логику привязок и с гостевым диапазоном с редиректом для дальнейших инструкций... Использует ли кто еще класс привязки по MAC? binary-to-ascii(16,8, ":", substring(hardware,1, 6)) = "0:14:22:8d:ca:a6" Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...