Андрей писал(а):Абонент сидит в 5 порту. Этих 5 портов у меня 122 штуки. Как DHCP поймет какому клиенту какой ip выдать, если сеть поделена на сегменты с маской подсети /24 в каждом сегменте?
потому что можно указать не только порт, но и IP-адрес свича:
10.0.1.1 - адрес DHCP сервера
10.0.1.15 - адрес свича
10.2.8.22 - адрес выдаваемый абоненту
dhcpd.conf:
- Код: Выделить всё
option domain-name "domain.ru";
option domain-name-servers 1.1.1.1, 2.2.2.2;
lease-file-name "/var/db/dhcpd/dhcpd.leases";
default-lease-time 1200;
max-lease-time 1200;
authoritative;
ddns-update-style none;
log-facility local7;
option subnet-mask 255.255.255.0;
use-lease-addr-for-default-route on;
one-lease-per-client on;
deny duplicates;
deny bootp;
ping-check off;
option arp-cache-timeout 3600;
option netbios-node-type 1; # B-node (Broadcast)
# MS routes: adds extras to supplement routers option
option ms-classless-static-routes code 249 = array of unsigned integer 8;
# RFC3442 routes: overrides routers option
option rfc3442-classless-static-routes code 121 = array of unsigned integer 8;
option space microsoft;
option microsoft.disable-netbios-over-tcpip code 1 = unsigned integer 32;
option microsoft.release-on-shutdown code 2 = unsigned integer 32;
if substring(option vendor-class-identifier, 0, 4) = "MSFT" {
vendor-option-space microsoft;
option microsoft.disable-netbios-over-tcpip 2;
option microsoft.release-on-shutdown 1;
}
option classless-static-route code 121 = array of unsigned integer 8;
option classless-static-route-ms code 249 = array of unsigned integer 8;
log(info, concat("- Log anyway: ", binary-to-ascii(10, 8, ".", leased-address), " via IP: ", switch-addr, " (MAC: ", switch-mac, ") on port: ", switch-port, " in VLAN: ", switch-port-vlan, " Class Name: ",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)))));
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, 16, "", substring(option agent.circuit-id, 2, 2));
class "10.0.1.15:19" {
match if concat(binary-to-ascii(10,8,".",packet(24,4)),":",binary-to-ascii(10,8,"",substring(option agent.circuit-id,5,1))) = "10.0.1.15:19";
}
shared-network switches {
subnet 10.2.8.0 netmask 255.255.255.0 {
option ms-classless-static-routes 16, 10,2, 10,2,8,1;
option rfc3442-classless-static-routes 16, 10,2, 10,2,8,1;
pool {
range 10.2.8.22;
allow members of "10.0.1.15:19";
}
}
}
на свиче, на примере Dlink DES-3526, для этого дожна быть включена "опция 82", вот полная секция в конфиге:
- Код: Выделить всё
# DHCP_RELAY
enable dhcp_relay
config dhcp_relay hops 4 time 0
config dhcp_relay option_82 state enable
config dhcp_relay option_82 check disable
config dhcp_relay option_82 policy replace
config dhcp_relay option_82 remote_id default
config dhcp_relay option_60 state disable
config dhcp_relay option_60 default mode drop
config dhcp_relay option_61 state disable
config dhcp_relay option_61 default drop
config dhcp_relay add ipif System 10.0.1.1
# DHCP_LOCAL_RELAY
config dhcp_local_relay option_82 ports 1-26 policy keep
таким образом абонент за 19-м портом свича с IP 10.0.1.15 получает адрес 10.2.8.22 и статик маршрут в подсеть 10.2.0.0/16 через 10.2.8.1