Jump to content
Калькуляторы

Dlink 30XX+DHCP Option 82 для чайников Подробное описание конфигурации des30xx и DHCP

День добрый!

Убив достаточное количество времени, удалось реализовать связку DHCP и des30XX (в моем случае был 3028, так же работает на 3028G, могу предположить что подходит для всего семейства 30ХХ)

Поведаю вам эту страшную историю.

В нашей сети на текущий момент используется оборудование еджкоре (доступ, агрегация, ядро). И все какбэ почти работает. IP-адрес от DHCP с поддержкой Option 82 прилетает. Но как-то иногда. Причины, почему одному и тому же пользователю ип-адрес присваевается через раз пока не выяснены.

Решили взять на тест дес3028. Настраиваем влан

conf vlan default del 1-24

#если порты из 1 влана не удалить в другой они не добавяться. Порты как untag могут быть только в одном влане. Как tag могут одновременно находиться хоть в 4000-х

create vlan vl100 tag 100

#создание влана с именем vl100 и тегом 100

conf vlan vl100 add unt 1-24

conf vlan vl100 add tag 25-28

#добавляем 1-24 порт как антагет и 25-28 порты как тагет

conf vl100 adv en

#включаем влан. до введения этой команды влан создан, но недееспособен.

conf ipif System ipad 192.168.3.251/16

#присваиваем коммутатору ип-адрес и маску.

create iproute default 192.168.0.7

#прописываем шлюз. Впринципе работать абоненты будут и без шлюза. Но если его не прописать - забудьте про пинг, телнет и тем более про веб интерфейс. Придется бегать до коммутатора с ноутбуком и проводом Х_х.

Включаем в цепочку доступ-агрегация-ядро-циска

Подключение к интернету у нас осуществляется посредством протокола PPPoE, т.е внутренний IP-адрес абоненту для этого счастья не нужен. Пробуем - интернет работает.Ура!.

Теперь проверяем присваивается ли IP-адрес.

Настройки коммутатора

enable dhcp_relay

#включаем само dhcp_relay

conf dhcp_relay option82 st enable

#включаем опцию82

conf dhcp_relay add ipif System 172.28.14.10

#указываем адрес релея, те адрес нашего DHCP-сервера

Смотрим лог на DHCP.

DHCPDISCOVER from 00:1b:38:24:dc:11 via 192.168.0.7:network 192.168.3.0/16: no free leases

Очень удивительно, особенно учитывая, что конфиг DHCP выглядит примерно так:

authoritative;
ddns-update-style none;
local-address           172.28.14.10;
option broadcast-address 172.28.14.255;
default-lease-time 3600;
max-lease-time 3660;
log-facility local7;
option ms-classless-static-routes code 249=array of integer 8;
option rfc3442-classless-static-routes code 121=array of integer 8;
subnet 172.28.14.0 netmask 255.255.255.0 {  
}
subnet 172.16.47.128 netmask 255.255.255.192 {
option domain-name-servers 91.142.158.9, 91.142.144.76;
option ms-classless-static-routes 16, 172,16, 172,16,1,61;  
class "Vlan_100Port_1"
{
match if (
binary-to-ascii(10,16,"",substring(option agent.circuit-id, 2, 2))="100"
and binary-to-ascii(10,8,"",suffix(option agent.circuit-id,1))="1");
}
pool 
{range 172.16.47.129;
allow members of "Vlan_100Port_1";}
}
if exists agent.circuit-id
{
log(info, concat("Lease for",
binary-to-ascii(10,16,".",leased-address),
"Switch port:",
binary-to-ascii(10,16,".",option agent.circuit-id),
"Switch vlan:",
binary-to-ascii(10,16,".",option agent.circuit-id)));
}
if exists agent.circuit-id
{
log(info, concat("Port must know",binary-to-ascii(10,8,"",suffix(option agent.circuit-id, 1))));
log(info, concat("Vlan must know",binary-to-ascii(10,16,"",substring(option agent.circuit-id, 2, 2))));
}

 

Т. е подсети 192 вообще нигде не указано O_o. Удаляем на коммутаторе шлюз:

delete iproute default

Теперь коммутатор у нас даже не пингуется. Зато в логе пишет.

DHCPDISCOVER from 00:1b:38:24:dc:11 via 172.16.22.190: network 172.16.22.128/26: no free leases

Поднимаем на отдельной машине DHCP-сервер. Создаем связку - DHCP-dlink-абонент. Все, естественно, в одной подсети - и IP-адрес DHCP и IP-адрес длинка и абонентский пул.

Присваивается. Свободно, быстро и без задержек. Некоторое время чешем репу.

То есть получается, что дело не в конфиге DHCP. И вроде бы как и не в конфиге длинка. По логике что-то случается с пакетом по пути? Ставим снифер. Мирорим 1 (абонентский) и 25 (аплинк) порты на машину, где все эти пакеты и сниферим. И тут можно делать удивленые лица - опции 82 в пакете нет. Все остальные есть, както 12 или 50, а 82 нет. О_О

Смотрим файл dhcpd.leases куда заносяться все выданые ип адреса. Там белым по синему четко написано что такойто ипадрес выдан пользователю с таким-то маком и вот вам его circuit.id.

Совершенно не понимая, как это может происходить, списываемся с ТП Длинка. Те, естественно просят обновить прошивку. Обновляем. После этого резет ребут - все как положенно.

Сниферим пакеты на самом DHCP-сервере. И видим что пакет вообще теперь до DHCP не доходит. И с 25 порта вообще не выходит. Хотя снифер абонентского порта показывает что вот он пакетик-то. Даже опция82 теперь в нем появилась.

Занова прописываем шлюз на коммутаторе

create iproute default 192.168.0.7

Чешем репу. Вспоминаем что есть еще у длинка такая фича как dhcp_local_relay. Хотя нигде в интернетах надобность ее включения вроде как не обсуждалась.

Но тем не менее включаем

enable dhcp_local_relay

Смотрим лог.

Пакет теперь долетает. Но ип-адрес снова пытается присвоиться из подсети коммутатора.

Дописываем на длинке:

conf dhcp_local_relay vlan vl100 st enable

С замерающим дыханием смотрим лог.

И - Ура!

"Тут зрители аплодируют, аплодируют, кончили аплодировать"

Наконец-то свершилось. Ип адрес присваивается. Даже длинку. Даже с поддержкой опции 82. И даже тот, который должен быть.

 

 

Кстати, прикладываю навсякий прошивку, которая должны стоять на длинке

Share this post


Link to post
Share on other sites

И к чему эта эпическая сага? На форуме Dlink'а буквально разжевано все это. Уже больше полугода в сети работает больше сотни 3028, было сконфигурено один раз, после вдумчивого чтения форума(скажу по секрету, там даже думать особо не надо было, все разжевано как для младенцев).

 

 

Share this post


Link to post
Share on other sites

А когда длинк научится делать просто снупинг, без релея?

Share this post


Link to post
Share on other sites
А когда длинк научится делать просто снупинг, без релея?

 

Честно говоря не пробовал, ибо не надо.

Share this post


Link to post
Share on other sites
conf vl100 adv en

это всего навсего включение gvrp анонса данного влана... Что обозначает "влан создан, но недееспособен" ?

Share this post


Link to post
Share on other sites
это всего навсего включение gvrp анонса данного влана... Что обозначает "влан создан, но недееспособен" ?
уфф. спасибо успокоил ;)

час назад прошил 3016 последней прошивкой, настроил для замены установленного свича и положил на полку.

Так было лень доставать, подключать, проверять. Работают в последних прошивках виланы без этого adv en или нет )))

 

Share this post


Link to post
Share on other sites

А когда длинк научится делать просто снупинг, без релея?

3028 умеет.

Share this post


Link to post
Share on other sites
А когда длинк научится делать просто снупинг, без релея?

он уже это гдето как год умеет, если не больше. читайте форум длинк-а.

Share this post


Link to post
Share on other sites

У многих наверное еще и прошивка стоит 1.00.15?

Share this post


Link to post
Share on other sites

Уважаемые, а подскажите в какой прошивке для DES30хx есть dhcp_local_relay? Мне тех.сапп ответил, что и не предвидится на этой линейке (что очень жаль).

Share this post


Link to post
Share on other sites

если это 3028 - то во второй ветке. Если 3026 - то вроде нету ни в какой

Share this post


Link to post
Share on other sites
А когда длинк научится делать просто снупинг, без релея?

он уже это гдето как год умеет, если не больше. читайте форум длинк-а.

Для не очень новых моделей коммутаторов не было и нет.

 

Share this post


Link to post
Share on other sites
И к чему эта эпическая сага? На форуме Dlink'а буквально разжевано все это. Уже больше полугода в сети работает больше сотни 3028, было сконфигурено один раз, после вдумчивого чтения форума(скажу по секрету, там даже думать особо не надо было, все разжевано как для младенцев).

Коллега, а чем вы помогли окружающим? Человек молодец, поделился проблемой и решением.

Share this post


Link to post
Share on other sites

А я вот на 3526 столкнулся со стойким размножением dhcp пакетов при включении коммутаторов цепочкой. Шаманство с настройками local relay не помогло. В итоге плюнул, поставил кошку 3550, и сделал ip unnumbered. Там правда тоже оказались свои грабли, но вроде решаемые.

Share this post


Link to post
Share on other sites

Подскажите пожалуйста, а каким образом выдается default gateway в такой связке?

Из описания следует, что глобально прописывается в настройках шлюза DHCP ( dhcp.router=x.x.x.x ), где так же указано, что этот параметр можно переопределить в каждом из шлюзов. Но ведь не переопределяется.

Что не так?

Share this post


Link to post
Share on other sites

subnet N.N.N.N X.X.X.X {

option routers a.a.a.a;

}

Share this post


Link to post
Share on other sites
subnet N.N.N.N X.X.X.X {

option routers a.a.a.a;

}

Я про связку скриптового шлюза и шлюза доступа типа dlink.

 

Похоже разобрался - BGDHCP не подхватывает свои настройки из параметров в билинге, пока не удалил и dhcp.data и не перегрузил его.

Share this post


Link to post
Share on other sites

А как узнать поддерживает ли DHCP сервер эту Option 82?

У меня стоит ISC DHCP Server 4.1.1-P1 - по манам в упор не вижу ничего по этой теме.

Share this post


Link to post
Share on other sites
А как узнать поддерживает ли DHCP сервер эту Option 82?

У меня стоит ISC DHCP Server 4.1.1-P1 - по манам в упор не вижу ничего по этой теме.

Поддерживает

 

if exists agent.circuit-id

{

log ( info, concat( " Lease for ",binary-to-ascii (10, 8, ".", leased-address

" Swith port: ",binary-to-ascii (10, 8, ".", option agent.circuit-id),

" Switch MAC: ",binary-to-ascii (16, 8, ":", suffix ( option agent.remote-id,

" Switch IP: ",binary-to-ascii(10, 8, ".", packet(24, 4)),

" VLAN: ",binary-to-ascii (10, 16, "", substring( option agent.circuit-id, 2,

" MAC on the port: ",binary-to-ascii (16, 8, ":", substring(hardware, 1, 7)),

" Port report: ",binary-to-ascii (10, 8, ",", suffix( option agent.circuit-id

}

 

Share this post


Link to post
Share on other sites
А как узнать поддерживает ли DHCP сервер эту Option 82?

У меня стоит ISC DHCP Server 4.1.1-P1 - по манам в упор не вижу ничего по этой теме.

Поддерживает

 

if exists agent.circuit-id

{

log ( info, concat( " Lease for ",binary-to-ascii (10, 8, ".", leased-address

" Swith port: ",binary-to-ascii (10, 8, ".", option agent.circuit-id),

" Switch MAC: ",binary-to-ascii (16, 8, ":", suffix ( option agent.remote-id,

" Switch IP: ",binary-to-ascii(10, 8, ".", packet(24, 4)),

" VLAN: ",binary-to-ascii (10, 16, "", substring( option agent.circuit-id, 2,

" MAC on the port: ",binary-to-ascii (16, 8, ":", substring(hardware, 1, 7)),

" Port report: ",binary-to-ascii (10, 8, ",", suffix( option agent.circuit-id

}

Ты видимо выделением крайние правые столбцы не зацепил, перепость пожалуйста.

Share this post


Link to post
Share on other sites

А лучше расскажите или дайте линк на толковый манул как правильно писать вот эти вещи binary-to-ascii (10, 8, ".", leased-address..... - что, как и зачем в них пишется, читаю манул по 3028 - ну там побайтовые структуры нарисованы, а как увязать это с анализом для логов и отдельных фишек 82 опции в isc dhcp - не понятно.

Нашелся man dhcp-eval(5), вопрос, пожалуй можно снять.

Edited by DukeNukem3D

Share this post


Link to post
Share on other sites

Топик-стартеру:

Функция dhcp local relay создана для изолирования одного или нескольких vlan от основного dhcp relay. Например если у нас на всех портах есть свой vlan 100, в котором сидят клиенты, а на одном порту сидит vlan 101, который в аренде у третьей фирмы и у них там свой dhcp сервер. Если ничего не трогать, то свич перехватит dhcp запросы из 101 vlan, а через local relay можно указать какой vlan не трогать и просто передавать запросы дальше.

Edited by DukeNukem3D

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this