faq обучение настройка
Текущее время: Вт июл 22, 2025 02:08

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 7 ] 
Автор Сообщение
 Заголовок сообщения: Dhcp linux + D-link Relay option 82
СообщениеДобавлено: Чт апр 11, 2013 13:21 
Не в сети

Зарегистрирован: Вт июл 31, 2012 11:09
Сообщений: 19
Всем привет!
Нужна помощь в настройке 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 в десятичных числах.

Как это сделать я не понимаю.


Вложения:
Комментарий к файлу: Схема
dhcp relay.jpg
dhcp relay.jpg [ 63.28 KiB | Просмотров: 3122 ]
Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Dhcp linux + D-link Relay option 82
СообщениеДобавлено: Чт апр 11, 2013 13:53 
Не в сети

Зарегистрирован: Ср дек 24, 2008 13:07
Сообщений: 137
Откуда: Жигулёвск
Если коротко, то как то так:
Код:
class "match_vlan_101_port_10_ip_10_80_0_2"{
    match if ((binary-to-ascii(10, 16, "",  substring(option agent.circuit-id, 2, 2)) = "101") and (binary-to-ascii(10, 16, "",  substring(option agent.circuit-id, 4, 2)) = "10") and (binary-to-ascii(10, 8, ".",  packet(24, 4)) = "10.80.0.2"));
  }

  pool{
    range 10.1.0.2;
    allow members of "match_vlan_101_port_10_ip_10_80_0_2";
  }

101 = vlan id клиента.
10 = порт на котором клиент.
10.80.0.2 = это адрес коммутатора.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Dhcp linux + D-link Relay option 82
СообщениеДобавлено: Чт апр 11, 2013 15:20 
Не в сети

Зарегистрирован: Ср дек 24, 2008 13:07
Сообщений: 137
Откуда: Жигулёвск
Поторопился, это немного не ваш случай. Мною описан случай dhcp realy на доступе.
А в ващих конфигурациях релей включен и на 3810 и на 3028, relay надо делать только на одном устройстве, лучше на l3.
Если вы отключите на 3810 и сделайте конфиг как у меня, тогда у вас будет релеить сразу коммутатор 3028 и выдавать адрес согласно порту, вилану и адресу коммутатора - это релей на доступе.
И релей надо включать по виланам
Код:
config dhcp_relay add vlanid 101 10.80.0.202

Если вы включите на доступе dhcp_local_relay, то на 3028 будет вставляться опция 82, а 3810 будет релеить dhcp запросы .
На des-3200-28 a1 так делается, могу ошибаться
Код:
enable dhcp_local_relay
config dhcp_local_relay option_82 circuit_id default
config dhcp_local_relay option_82 remote_id default
config dhcp_local_relay option_82 ports 1-24 policy replace
config dhcp_local_relay option_82 ports 25-28 policy keep


А это - (binary-to-ascii(10, 8, ".", packet(24, 4)) = "10.80.0.2") заменить на
(binary-to-ascii(10, 16, "", substring(option agent.remote-id,2,6)) = "00:1b:38:75:a5:ea") - мак свича.

Или если надо выдавать по ип адресу свича, порту и вилану то в remote_id на коммутаторе прописать ип адрес свича, а на в dhcpd.conf на сервере подобрать смещение
(binary-to-ascii(10, 16, "", substring(option agent.remote-id,4,4)) = "10.80.0.2"), я думаю как-то так.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Dhcp linux + D-link Relay option 82
СообщениеДобавлено: Пт апр 12, 2013 05:36 
Не в сети

Зарегистрирован: Вт июл 31, 2012 11:09
Сообщений: 19
На 3810 у меня не включен релей, только на 3028 релей включен.
У меня в сети 25 коммутаторов 3028 и 1 L3 DGS-3627g, будет ли правильным решением включить релей только на 1 коммутаторе уровнем L3?
Попробую на 3028 прописать config dhcp_relay add vlanid 2
Мне нужно выдавать по вилану пуул адресов.
Что конкретно мне нужно прописать на коммутаторе 3028 в remote_id? и dhcpd.conf ?
Спасибо!


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Dhcp linux + D-link Relay option 82
СообщениеДобавлено: Пт апр 12, 2013 07:56 
Не в сети

Зарегистрирован: Ср дек 24, 2008 13:07
Сообщений: 137
Откуда: Жигулёвск
Да, правильным решение будет включать релей на l3, а на доступе включать dhcp_local_relay.
Теперь ко второму вопросу.
Есть вилан 101.
Есть подсеть 192.168.1.0/24.
И вам все равно какой адрес из 192.168.1.0/24 пула выдавать клиенту с виланом 101, так?


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Dhcp linux + D-link Relay option 82
СообщениеДобавлено: Вт апр 16, 2013 05:05 
Не в сети

Зарегистрирован: Вт июл 31, 2012 11:09
Сообщений: 19
Ну в принципе да
укажу диапазон выдачи
range 192.168.1.10 192.168.1.254;


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Dhcp linux + D-link Relay option 82
СообщениеДобавлено: Вт апр 16, 2013 11:32 
Не в сети

Зарегистрирован: Ср дек 24, 2008 13:07
Сообщений: 137
Откуда: Жигулёвск
Наверно как- так тогда:
Код:
class "match_vlan_101_ip_10_80_0_2"{
    match if ((binary-to-ascii(10, 16, "",  substring(option agent.circuit-id, 2, 2)) = "101") and (binary-to-ascii(10, 8, ".",  packet(24, 4)) = "10.80.0.2"));
  }

  pool{
    range 192.168.1.10 - 192.168.1.254;
    allow members of "match_vlan_101_ip_10_80_0_2";
  }

10.80.0.2 - адрес релея, он будет для всех один в случае релея на l3.


Вернуться наверх
 Профиль  
 
Показать сообщения за:  Сортировать по:  
Начать новую тему Ответить на тему  [ Сообщений: 7 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 33


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB