Перейти до

dhcp option 82 + D-Link DES 3200-28F


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

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

Настраиваю связку 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

 

Может кто знает помогите разобраться.

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

Выбросьте dhcpd. Существуют намного более адекватные решения.

Я в своё время бодался-бодался с ним, в конце-концов плюнул и за недельку написал на Perl свой dhcpd, специально для Option 82. Уже полгода горя не знаю.

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

Выбросьте dhcpd. Существуют намного более адекватные решения.

Я в своё время бодался-бодался с ним, в конце-концов плюнул и за недельку написал на Perl свой dhcpd, специально для Option 82. Уже полгода горя не знаю.

Может подскажите более адекватные решения с названиями и ссылками, которые реально работают с Option 82.

з.ы. В программировании не силен настолько, чтоб написать свою реализацию DHCP сервера с поддержкой Option 82.

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

Немного разобрался: проблема с определением самого свича, потому как если написать так:

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";
}

все работает.

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

У кого какие мысли на этот счет.

Ссылка на сообщение
Поделиться на других сайтах
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 сервера.

 

Определитесь для начала, что вы хотите сделать, а потом уже логи, дампы, конфиги показывайте :blink:

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

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";
}

и все завелось.

Позже обновлю прошивки свичей.

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

Может подскажите более адекватные решения с названиями и ссылками, которые реально работают с Option 82.

з.ы. В программировании не силен настолько, чтоб написать свою реализацию DHCP сервера с поддержкой Option 82.

http://forum.nag.ru/forum/index.php?showtopic=64849

Фактически, это готовый сервер (не моё). Просто подставить свои запросы/логику.

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

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

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

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

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

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

Вхід

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

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

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

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