Alexander Kiriluk писал(а):
цитата:
"Имхо, вряд ли кто-то даст рабочие примеры, т.к. Option 82 - штука довольно редко используемая сейчас.
примеры? легко! их есть у нас

вот, ловите:
Код:
authoritative;
ddns-update-style none;
default-lease-time 1800; # 1/2 hour
max-lease-time 3600; # 1 hour
min-lease-time 900; # 1/4 hour
use-lease-addr-for-default-route on;
one-lease-per-client on;
deny duplicates;
deny bootp;
option arp-cache-timeout 3600;
option netbios-node-type 1; # B-node (Broadcast)
#-----------------------------------------------------------------------------
# специфичные для Microsoft-а вещи:
# DHCP Options Supported by Clients: http://support.microsoft.com/kb/121005
# How to disable NetBIOS over TCP/IP by using DHCP server options: http://support.microsoft.com/kb/313314
# DHCP Tools and Settings: http://technet2.microsoft.com/windowsserver/en/library/a70f1bb7-d2d4-49f0-96d6-4b7414ecfaae1033.mspx?mfr=true
option space microsoft;
option microsoft.disable-netbios-over-tcpip code 1 = unsigned integer 32;
option microsoft.release-on-shutdown code 2 = unsigned integer 32;
# только для Windows 2000 и XP клиентов используется:
# substring(option vendor-class-identifier, 0, 8) = "MSFT 5.0"
if substring(option vendor-class-identifier, 0, 4) = "MSFT" {
vendor-option-space microsoft;
# по дефолту NetBIOS over TCP/IP выключен! пример где включен см. ниже
option microsoft.disable-netbios-over-tcpip 2;
option microsoft.release-on-shutdown 1;
}
#-----------------------------------------------------------------------------
# Classless Static Route aka RFC 3442: http://www.ietf.org/rfc/rfc3442.txt
# Windows Vista и другие не Windows DHCP клиенты:
option classless-static-route code 121 = array of unsigned integer 8;
# Windows 2000 and XP DHCP клиенты:
option classless-static-route-ms code 249 = array of unsigned integer 8;
#-----------------------------------------------------------------------------
# логирование
if exists agent.remote-id and exists agent.circuit-id {
if binary-to-ascii(16, 8, "", substring(option agent.remote-id, 2, 1)) = "0" {
set switch-mac = concat("0", binary-to-ascii(16, 8, "", substring(option agent.remote-id, 2, 1)), ":", binary-to-ascii(16, 8, ":", substring(option ag
ent.remote-id, 3, 6)));
} else {
set switch-mac = binary-to-ascii(16, 8, ":", substring(option agent.remote-id, 2, 6));
}
set switch-addr = binary-to-ascii(10, 8, ".", packet(24, 4));
set switch-port = binary-to-ascii(10, 8, "", substring(option agent.circuit-id, 5, 1));
set switch-port-vlan = binary-to-ascii(10, 8, "", substring(option agent.circuit-id, 2, 2));
log(info, concat("- Lease: ", binary-to-ascii(10, 8, ".", leased-address), " via IP: ", switch-addr, " (MAC: ", switch-mac, ") on port: ", switch-port, "
in VLAN: ", switch-port-vlan));
}
#-----------------------------------------------------------------------------
# подсеть без классов, классический вариант
subnet 172.16.0.0 netmask 255.255.255.0 {
range 172.16.0.60 172.16.0.70;
option routers 172.16.0.251;
option domain-name-servers 172.16.0.253;
# для этой сети NetBIOS over TCP/IP включен
option microsoft.disable-netbios-over-tcpip 1;
}
host host_10 { hardware ethernet 00:0f:ea:f3:42:9a; fixed-address 172.16.0.10; }
...
host host_50 { hardware ethernet 00:19:d1:8c:10:70; fixed-address 172.16.0.50; }
#-----------------------------------------------------------------------------
# описание классов которые используются при DHCP relay + option 82:
# в качестве условия берется МАС адрес свича:
class "your:switch:with:option_82:MAC:address:switch_port_number" {
match if concat(
binary-to-ascii(16, 8, ":", substring(option agent.remote-id, 3, 6)),
":",
binary-to-ascii(10, 8, "", substring(option agent.circuit-id, 5, 1))
) = "your:switch:with:option_82:MAC:address:switch_port_number";
}
# сокращенная запись:
class "your:switch:with:option_82:MAC:address:switch_port_number" {
match if concat(binary-to-ascii(16,8,":",substring(optionagent.remote-id,3,6)),":",binary-to-ascii(10,8,"",substring(optionagent.circuit-id,5,1))) = "your:switch:with:option_82:MAC:address:switch_port_number";
}
# вместо MAC-а из agent.remote-id, берем IP адрес свича из пакета:
class "your.switch.with_option_82.IP_address:switch_port_number" {
match if concat(
binary-to-ascii(10, 8, ".", packet(24, 4)),
":",
binary-to-ascii(10, 8, "", suffix(option agent.circuit-id, 1))
) = "your.switch.with_option_82.IP_address:switch_port_number";
}
# сокращенная запись:
class "your.switch.with_option_82.IP_address:switch_port_number" {
match if concat(binary-to-ascii(10,8,".",packet(24,4)),":",binary-to-ascii(10,8,"",suffix(optionagent.circuit-id,1))) = "your.switch.with_option_82.IP_address:switch_port_number";
}
# MAC адрес клиента как хар-ка класса:
class "some:your:client:hardware:MAC:address" {
match if substring(hardware, 1, 7) = some:your:client:hardware:MAC:address;
}
# ну или любая другая запись вида:
# class "имя_класса" { всяко_разно_что_нужно_чтобы_класс_матчился; }
#-----------------------------------------------------------------------------
# подсети с классами
shared-network "clients" {
# подсеть с железом
# описание небходимо чтобы DHCP знал топологию сети
subnet 10.10.10.0 netmask 255.255.254.0 { }
# подсети с юзерами
# для примера даны 3 подсети, чтобы было видно как прописывается classless static route
# в каждой сети, для примера, даны 5 хостов
subnet 192.168.100.0 netmask 255.255.255.0 {
ping-check off;
option routers 192.168.100.1;
option domain-name-servers 192.168.100.1;
option classless-static-route 24,192,168,110, 192,168,100,1, 24,192,168,120, 192,168,100,1;
option classless-static-route-ms 24,192,168,110, 192,168,100,1, 24,192,168,120, 192,168,100,1;
pool { range 192.168.100.5; allow members of "имя_класса"; }
pool { range 192.168.100.6; allow members of "имя_класса"; }
pool { range 192.168.100.7; allow members of "имя_класса"; }
pool { range 192.168.100.8; allow members of "имя_класса"; }
pool { range 192.168.100.9; allow members of "имя_класса"; }
}
subnet 192.168.110.0 netmask 255.255.255.0 {
ping-check off;
option routers 192.168.110.1;
option domain-name-servers 192.168.110.1;
option classless-static-route 24,192,168,100, 192,168,110,1, 24,192,168,120, 192,168,110,1;
option classless-static-route-ms 24,192,168,100, 192,168,110,1, 24,192,168,120, 192,168,110,1;
pool { range 192.168.110.5; allow members of "имя_класса"; }
pool { range 192.168.110.6; allow members of "имя_класса"; }
pool { range 192.168.110.7; allow members of "имя_класса"; }
pool { range 192.168.110.8; allow members of "имя_класса"; }
pool { range 192.168.110.9; allow members of "имя_класса"; }
}
subnet 192.168.120.0 netmask 255.255.255.0 {
ping-check off;
option routers 192.168.120.1;
option domain-name-servers 192.168.120.1;
option classless-static-route 24,192,168,100, 192,168,120,1, 24,192,168,110, 192,168,120,1;
option classless-static-route-ms 24,192,168,100, 192,168,120,1, 24,192,168,110, 192,168,120,1;
pool { range 192.168.120.5; allow members of "имя_класса"; }
pool { range 192.168.120.6; allow members of "имя_класса"; }
pool { range 192.168.120.7; allow members of "имя_класса"; }
pool { range 192.168.120.8; allow members of "имя_класса"; }
pool { range 192.168.120.9; allow members of "имя_класса"; }
}
# дальше идет еще описание подсетей
# subnet 192.168.XYZ.0 netmask 255.255.255.0 { }
# аналогично тому что выше
}
насчет редкости использования я бы сказал что это кому как надо ... если надо - используют, если не надо, то и не заморачиваются

Alexander Kiriluk писал(а):
Кстати, насколько я знаю, в 3526 DHCP relay реализован ограниченно.
а можно подробностей?

Alexander Kiriluk писал(а):
На 3526 Option 82 добавляется только при назначении собственного интерфейса управления как DHCP Relay агента.
а как иначе то?
Alexander Kiriluk писал(а):
- Интерфейс управления свичом (адрес которого 3526 вставляет в поле giaddr) в одной с клиентами VLAN. Т.е. не получится сделать отдельную VLAN управления для устройств сети доступа.
это почему это не получится? как раз таки получится ... достаточно вынести клиентов в отдельный VLAN, а для управления использовать VLAN default (плюсов у этого решения оч. много

) ... если держать и клиентов и свич в одной подсети то необходимость DHCP Relay вообще теряет смысл, т.к. клиенты могут напрямую обращаться к DHCP серверу (я не беру случаи использования ACL) ... DHCP Relay как таковой был придуман для того чтобы бродкастовые запросы от клиентов одной подсети могли попасть через роутер в другую подсеть в которой собственно и расположен DHCP сервер ... на L2 свичах же это используется в основном для того чтобы можно было повесить DHCP сервер в одном единственном VLAN и таким образом не гонять запросы по всему их множеству ... ну и естессно, при использовании Option 82, Вы всегда знаете с какого именно порта и какого именно свича пришел тот или иной запрос ... это я так, простым языком, упрощенно, все описываю, если Вы не против конечно ...
Alexander Kiriluk писал(а):
- VLAN, в которой осуществляется установка Option 82, – только одна. Т.е. нельзя c помощью DHCP организовать VLAN-per-Service, где для одна VLAN для данных, другая для голоса, третья - для видео и т.д."
б-р-р-р ... relay да, работает только в одном, системном, VLAN, но кто Вам мешает создать другие VLAN и использовать их по Вашему желанию?