Всем привет!
Нужна помощь в настройке DHCP сервера на Linux а именно на Centos 6.3 и коммутаторов D-Link с опцией DHCP Relay Option 82.
Задача стоит следующая.
Нужно что бы DHCP сервер понимал из какого vlana пришел запрос от клиента, и понимал какой пул адресов выдать в данный vlan клиентам.
Например в vlan V2 нужно выдать пул адресов 192.168.2.10 192.168.2.254, а в vlan V3 192.168.3.10 192.168.3.254, и т.д.
Собрал стенд:
1. Dhcp server Centos 6.3 ip 192.168.80.6/24 gw 192.168.80.1
2. Des-3810-28 Выступает в роли маршрутизатора, 10.90.90.80
3. Des-3028 Relay option 82
Привожу конфиги устройств:
DHCP server
/etc/dhcp/dhcpd.conf
# DHCP Server Configuration file.
# see /usr/share/doc/dhcp*/dhcpd.conf.sample
# see 'man 5 dhcpd.conf'
ddns-update-style interim;
log-facility local7;
local-address 192.168.80.6;
subnet 192.168.80.0 netmask 255.255.255.0 {
}
class "v2" {
match if binary-to-ascii(10,16,"",substring(option agent.circuit-id,2,2)) = "2";
} # V2
class "v3" {
match if binary-to-ascii(10,16,"",substring(option agent.circuit-id,2,2)) = "3";
} # v3
subnet 192.168.2.0 netmask 255.255.255.0 {
pool {
allow members of "v2";
default-lease-time 600;
max-lease-time 7200;
range 192.168.2.10 192.168.2.199;
option routers 192.168.2.1;
option subnet-mask 255.255.255.0;
option domain-name-servers 192.168.2.1;
}
}
subnet 192.168.3.0 netmask 255.255.255.0 {
pool {
allow members of "v3";
default-lease-time 600;
max-lease-time 7200;
range 192.168.3.10 192.168.3.199;
option routers 192.168.3.1;
option subnet-mask 255.255.255.0;
option domain-name-servers 192.168.3.1;
}
}
__________________________________________________________________________________
/etc/sysconfig/dhcpd
# Command line options here
DHCPDARGS=eth0
___________________________________________________________________________________
При попытки клиентом получить адрес сервер выдает вот такое сообщение
Mar 30 19:16:13 dhcp dhcpd: DHCPDISCOVER from 00:13:46:5f:21:c7 via 10.90.90.85: unknown network segment
Mar 30 19:16:22 dhcp dhcpd: DHCPDISCOVER from 00:13:46:5f:21:c7 via 10.90.90.85: unknown network segment
Mar 30 19:16:38 dhcp dhcpd: DHCPDISCOVER from 00:13:46:5f:21:c7 via 10.90.90.85: unknown network segment
Des-3810
config vlan default delete 1-12
create vlan switch tag 100
config vlan switch add tagged 1-10, 12
config vlan switch add untagged 11, 13, 15
create vlan v2 tag 2
create vlan v3 tag 3
create vlan v80 tag 80
config vlan v2 add tagged 1-10, 21
config vlan v3 add tagged 1-10, 21
config vlan v80 add untagged 11-12, 14
create ipif v2 192.168.2.1/24 v2 state enable
create ipif v3 192.168.3.1/24 v3 state enable
create ipif v80 192.168.80.1/24 v80 state enable
config ipif System ipaddress 10.90.90.80/8 vlan switch
Des-3028
config vlan default delete 1-10, 25
create vlan switch tag 100
config vlan switch add tagged 25
create vlan v2 tag 2
config vlan v2 add untagged 1-10
config vlan v2 add tagged 25
enable dhcp_relay
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 add ipif System 192.168.80.6
create iproute default 10.90.90.80
config ipif System ipaddress 10.90.90.85/8 vlan switch
Ну вот в принципе все настройки.
Итог, клиент не получает ип адресс.
Сервер dhcp пишет
DHCPDISCOVER from 00:13:46:5f:21:c7 via 10.90.90.85: unknown network segment
Не совсем понятно как нужно прописывать классы в конфиги dhcp для свичей, какие значения тут должны быть? Может из-за этого не работает?
class "v2" {
match if binary-to-ascii(10,16,"",substring(option agent.circuit-id,2,2)) = "2";
} # V2
Прошивка на Des-3028 DES_3028_52_V2.92-B03
Мануал по dhcpd.conf брал отсюда
http://ua.zyxel.com/kb/2030В нем указанно проверить синтаксис:
Перед редактированием dhcpd.conf нужно знать синтаксис, поддерживаемый этим сервером:substring(option agent.circuit-id,2,2) Оператор substring анализирует данные и возвращает строку данных, которая начинается от указанного значения offset и имеет длину, равную указанной в length. Offset и Length — числовые выражения. Offset (смещение) 2 байта и Length (длина) 2 байта. Эти значения указаны в VID части Agent Circuit ID.
binary-to-ascii(10,16,"",substring(option agent.circuit-id,2,2)) Преобразует результат вычисления оператора substring в текстовую строку, содержащую по одному числу для каждого элемента результата вычисления оператора substring. 10 - это указание системы исчисления (десятичная), 16 указывает количество битов на каждое число, полученное в результате преобразования. Результат этого значения указан в VID в десятичных числах.
Как это сделать я не понимаю.