Slava 1 Опубликовано: 2011-07-23 20:25:48 Share Опубликовано: 2011-07-23 20:25:48 Доброго времени суток Настраиваю связку dhcp option 82 + D-Link DES 3200-28F на Gentoo Linux dhcp-3.1.3_p1 D-Link DES 3200-28F 1.10.B015 конфиг DES-3200-28F DES-3200-28F:4#show dhcp_local_relay Command: show dhcp_local_relay DHCP/BOOTP Local Relay Status : Enabled DHCP/BOOTP Local Relay VID LIST : 1 DES-3200-28F:4#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 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 : 1C-BD-B9-6E-36-20 Interface Server 1 Server 2 Server 3 Server 4 ------------ --------------- --------------- --------------- -------------- System 10.10.5.200 dhcpd.conf option domain-name-servers 10.5.9.9; lease-file-name "/var/log/dhcpd.leases"; log-facility local7; default-lease-time 60; max-lease-time 120; ddns-update-style none; local-address 10.10.5.200; include "/etc/dhcp/sw-170.conf"; #include "/etc/dhcp/sw-171.conf"; 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, 2, 4)), " port ",binary-to-ascii(10,16, "",substring(option agent.circuit-id, 1, 4)), " VLAN ",binary-to-ascii(10, 16,"",substring(option agent.circuit-id, 2, 2)) ) ); } ################################################################################################################ shared-network test { ############################################################################# subnet 192.168.0.0 netmask 255.255.0.0 { deny unknown-clients; } ############################################################################# subnet 10.10.5.0 netmask 255.255.255.0 { option broadcast-address 10.10.5.255; option domain-name-servers 10.5.9.9; option routers 10.10.5.1; option subnet-mask 255.255.255.0; ######################################################## pool { range 10.10.5.9; allow members of "sw170-1";} pool { range 10.10.5.100; allow members of "sw170-2";} pool { range 10.10.5.101; allow members of "sw170-3";} pool { range 10.10.5.102; allow members of "sw170-4";} pool { range 10.10.5.103; allow members of "sw170-5";} pool { range 10.10.5.104; allow members of "sw170-6";} pool { range 10.10.5.105; allow members of "sw170-7";} .... pool { range 10.10.5.127; allow members of "sw170-28";} } sw-170.conf #Device Type : DES-3200-28F Fast Ethernet Switch #MAC Address : >1C-BD-B9-6E-36-20 #IP Address : 10.10.5.222 (Manual) #VLAN Name : #Subnet Mask : 255.255.255.0 #Default Gateway : 10.10.5.1 #Boot PROM Version : 1.00.B003 #Firmware Version : <-->1.10.B015 #Hardware Version : A1 #System Name :sw-170 class "sw170-1" { match if binary-to-ascii(16, 8, "-", suffix(option agent.remote-id, 5)) = "BD:B9:6E:36:20" and binary-to-ascii(10, 8, "", suffix(option agent.circuit-id, 1)) = "1"; } class "sw170-2" { match if binary-to-ascii(16, 8, "-", suffix(option agent.remote-id, 5)) = "BD:B9:6E:36:20" and binary-to-ascii(10, 8, "", suffix(option agent.circuit-id, 1)) = "2"; } class "sw170-3" { match if binary-to-ascii(16, 8, ":", suffix(option agent.remote-id, 5)) = "BD:B9:6E:36:20" and binary-to-ascii(10, 8, "", suffix(option agent.circuit-id, 1)) = "3"; } class "sw170-4" { match if binary-to-ascii(16, 8, ":", suffix(option agent.remote-id, 5)) = "BD:B9:6E:36:20" and binary-to-ascii(10, 8, "", suffix(option agent.circuit-id, 1)) = "4"; } class "sw170-5" { match if binary-to-ascii(16, 8, ":", suffix(option agent.remote-id, 5)) = "BD:B9:6E:36:20" and binary-to-ascii(10, 8, "", suffix(option agent.circuit-id, 1)) = "5"; } class "sw170-6" { match if binary-to-ascii(16, 8, ":", suffix(option agent.remote-id, 5)) = "BD:B9:6E:36:20" and binary-to-ascii(10, 8, "", suffix(option agent.circuit-id, 1)) = "6"; } class "sw170-7" { match if binary-to-ascii(16, 8, ":", suffix(option agent.remote-id, 5)) = "BD:B9:6E:36:20" and binary-to-ascii(10, 8, "", suffix(option agent.circuit-id, 1)) = "7"; } .... class "sw170-28" { match if binary-to-ascii(16, 8, ":", suffix(option agent.remote-id, 5)) = "BD:B9:6E:36:20" and binary-to-ascii(10, 8, "", suffix(option agent.circuit-id, 1)) = "8"; } tcpdump -i eth0 -nn -s 0 -v port 67 or port 68 tcpdump: listening on eth0, link-type EN10MB (Ethernet), capture size 65535 byte s 23:07:31.921112 IP (tos 0x0, ttl 64, id 63814, offset 0, flags [none], proto UDP (17), length 351) 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:23:cd:b4:99:55, length 323, xid 0xbecbfda1, secs 14317, Flags [none] Client-Ethernet-Address 00:23:cd:b4:99:55 Vendor-rfc1048 Extensions Magic Cookie 0x63825363 DHCP-Message Option 53, length 1: Discover MSZ Option 57, length 2: 1500 Vendor-Class Option 60, length 56: "dhcpcd-5.2.12:Linux-2.6.39-gentoo-r3:x86_64:GenuineIntel" Parameter-Request Option 55, length 15: Subnet-Mask, Classless-Static-Route, Static-Route, Default-Gateway Domain-Name-Server, Hostname, Domain-Name, MTU BR, NTP, Lease-Time, Server-ID RN, RB, Option 119 23:07:31.923041 IP (tos 0x0, ttl 64, id 13384, offset 0, flags [none], proto UDP (17), length 371) 10.10.5.222.68 > 10.10.5.200.67: BOOTP/DHCP, Request from 00:23:cd:b4:99:55, length 343, hops 1, xid 0xbecbfda1, secs 14317, Flags [none] Gateway-IP 10.10.5.222 Client-Ethernet-Address 00:23:cd:b4:99:55 Vendor-rfc1048 Extensions Magic Cookie 0x63825363 DHCP-Message Option 53, length 1: Discover MSZ Option 57, length 2: 1500 Vendor-Class Option 60, length 56: "dhcpcd-5.2.12:Linux-2.6.39-gentoo-r3:x86_64:GenuineIntel" Parameter-Request Option 55, length 15: Subnet-Mask, Classless-Static-Route, Static-Route, Default-Gateway Domain-Name-Server, Hostname, Domain-Name, MTU BR, NTP, Lease-Time, Server-ID RN, RB, Option 119 Agent-Information Option 82, length 18: Circuit-ID SubOption 1, length 6: ^@^D^@^A^@^\ Unknown SubOption 2, length 8: 0x0000: 0006 1cbd b96e 3620 dhcp сервер не отдает адрес в логах: Jul 23 23:11:45 localhost dhcpd: DHCPDISCOVER from 00:23:cd:b4:99:55 via 10.10.5.222: network test: no free leases 00:23:cd:b4:99:55 мак клиента, запрашивающего адрес 10.10.5.222 - ip D-Link DES 3200-28F Может кто знает помогите разобраться. Ссылка на сообщение Поделиться на других сайтах
Abram 98 Опубліковано: 2011-07-23 22:54:38 Share Опубліковано: 2011-07-23 22:54:38 Выбросьте dhcpd. Существуют намного более адекватные решения. Я в своё время бодался-бодался с ним, в конце-концов плюнул и за недельку написал на Perl свой dhcpd, специально для Option 82. Уже полгода горя не знаю. Ссылка на сообщение Поделиться на других сайтах
Slava 1 Опубліковано: 2011-07-24 06:22:17 Автор Share Опубліковано: 2011-07-24 06:22:17 Выбросьте dhcpd. Существуют намного более адекватные решения. Я в своё время бодался-бодался с ним, в конце-концов плюнул и за недельку написал на Perl свой dhcpd, специально для Option 82. Уже полгода горя не знаю. Может подскажите более адекватные решения с названиями и ссылками, которые реально работают с Option 82. з.ы. В программировании не силен настолько, чтоб написать свою реализацию DHCP сервера с поддержкой Option 82. Ссылка на сообщение Поделиться на других сайтах
Slava 1 Опубліковано: 2011-07-24 06:28:19 Автор Share Опубліковано: 2011-07-24 06:28:19 Немного разобрался: проблема с определением самого свича, потому как если написать так: class "sw170-1" { match if binary-to-ascii(16, 8, "-", suffix(option agent.remote-id, 5)) = "BD:B9:6E:36:20" and binary-to-ascii(10, 8, "", suffix(option agent.circuit-id, 1)) = "1"; } то не работает, а если определить только порт class "sw170-1" { match if binary-to-ascii(10, 8, "", suffix(option agent.circuit-id, 1)) = "1"; } все работает. Единственная проблема так нельзя использовать более одного свича. У кого какие мысли на этот счет. Ссылка на сообщение Поделиться на других сайтах
SpiderX 7 Опубліковано: 2011-07-24 08:23:51 Share Опубліковано: 2011-07-24 08:23:51 dhcp-3.1.3_p1 Старая версия. На ней когда-то пробовали сделать что-то похожее, но позже обновились до последней стабильной на тот момент, по-моему там есть какие-то проблемы с option 82. До четвертой ветки думаю есть смысл обновится. 1.10.B015 Крайне старая версия. Обновляться либо до 1.42.B001 (если доступ к свитчам через telnet/web), либо до 1.50.B008 (если используется ssh). Это не истина в последней инстанции, но после ветки 1.4х было столько изменений в реализацию dhcp relay'я в данной серии, что я более чем уверен, что далеко не все еще стабильно работает. DHCP/BOOTP Local Relay Status : Enabled Выключить. Local relay должен быть включен совместно с dhcp relay только на серии DES-3526 для подавления размножения dhcp пакетов. dhcpd.conf authoritative; subnet 192.168.0.0 netmask 255.255.0.0 {deny unknown-clients; } Что это? Дочитал конфиг до объявления подсети, где mgmt интерфейс свитча живет, и понял на сколько все плохо. Раз 10.10.5.222 — адрес свитча, а клиентам выдаются 10.10.5.105. То и клиенты, и свитч в одном широковещательном домене. Либо забываем про dhcp на доступе, либо делаем mgmt vlan. Дальше все еще интереснее. 10.10.5.222 — свитч, 10.10.5.200 — dhcp сервер. У вас и клиенты и свитч в одной сети. Зачем вам dhcp relay? Пакеты от клиента и так дойдут до dhcp сервера. Определитесь для начала, что вы хотите сделать, а потом уже логи, дампы, конфиги показывайте Ссылка на сообщение Поделиться на других сайтах
Slava 1 Опубліковано: 2011-07-24 18:05:57 Автор Share Опубліковано: 2011-07-24 18:05:57 to SpiderX спасибо за подробный ответ. На самом деле это тестовая конфигурация в одной подсети. Обновил DHCP до версии 4.2.1 и в конфиге: class "sw170-1" { match if binary-to-ascii(10, 8, ".", packet(24,4))="10.10.5.222" and binary-to-ascii(10, 8, "", suffix(option agent.circuit-id, 1)) = "1"; } и все завелось. Позже обновлю прошивки свичей. Ссылка на сообщение Поделиться на других сайтах
Abram 98 Опубліковано: 2011-07-27 20:31:56 Share Опубліковано: 2011-07-27 20:31:56 Может подскажите более адекватные решения с названиями и ссылками, которые реально работают с Option 82. з.ы. В программировании не силен настолько, чтоб написать свою реализацию DHCP сервера с поддержкой Option 82. http://forum.nag.ru/forum/index.php?showtopic=64849 Фактически, это готовый сервер (не моё). Просто подставить свои запросы/логику. Ссылка на сообщение Поделиться на других сайтах
Рекомендованные сообщения
Создайте аккаунт или войдите в него для комментирования
Вы должны быть пользователем, чтобы оставить комментарий
Создать аккаунт
Зарегистрируйтесь для получения аккаунта. Это просто!
Зарегистрировать аккаунтВхід
Уже зарегистрированы? Войдите здесь.
Войти сейчас