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

DHCPd opt82 + static IP-MAC binding

Здравствуйте коллеги, подскажите как правильнее решить небольшую проблему:

Есть DHCPd сервер для большого кол-ва абонентов, конфиг следующего вида:

 

include "классы для абонентов сети с opt82";

shared-network{

subnet {}; subnet {}; subnet {};

 

subnet {

host {hardware ethernet; fixed-address}; host {hardware ethernet; fixed-address}; host {hardware ethernet; fixed-address};.....

}

pool {allow members "класс"; range ;} pool {allow members "класс"; range ;} pool {allow members "класс"; range ;} .......

}

Проблема появляется если на сегменте сети, где используется option 82 появляется абонент с таким же маком, что и прописанным в subnet со статической привязкой, ему выдается адрес прописанный в host.

DHCP сервер смотрит в сторону маршрутизатора с прописанными dhcp-relay.

Share this post


Link to post
Share on other sites

Добрый день.. vadislaus можешь помочь с мануалом по настройке с опцией 82? я на centos 6 пытаюсь поставить ни чего не выходит.

Edited by maga

Share this post


Link to post
Share on other sites

Проблема появляется если на сегменте сети, где используется option 82 появляется абонент с таким же маком, что и прописанным в subnet со статической привязкой, ему выдается адрес прописанный в host.

 

С наскока эту проблему решить не удалось. Похоже, он статически привязанные IP выдает всегда в первую очередь. Лень в сырцы заглядывать.

Share this post


Link to post
Share on other sites

Добрый день.. vadislaus можешь помочь с мануалом по настройке с опцией 82? я на centos 6 пытаюсь поставить ни чего не выходит.

 

А в чем вопрос? Чаще всего проблема с неправильным разбором данных от коммутатора. Для начала проверь, добавляет ли коммутатор опцию 82 (tcpdump,wireshark). Потом попытайся получить логгирование (

if exists agent.circuit-id

{

log ( info, concat( "Lease for ", binary-to-ascii (10, 8, ".", leased-address), " is connected to interface ", binary-to-ascii (10, 8, "", suffix ( option agent.circuit-id, 1)), ", vlan", binary-to-ascii (10, 16, "", substring( option agent.circuit-id, 2, 2)), " on switch ", binary-to-ascii(16, 8, ":", substring( option agent.remote-id, 2, 6))));

}.

Потом выясняй в какой позиции находятся нужные тебе данные (опция 82 у различных коммутаторов отличается).

Пиши подробности в личку, помогу чем могу.

 

А зачем мак учитывать? Просто по opt 82 отдавать и всё.

Два сегмента сети, работаем с тем, что есть ;)

 

С наскока эту проблему решить не удалось. Похоже, он статически привязанные IP выдает всегда в первую очередь. Лень в сырцы заглядывать.

 

Вот этого я и опасался, надеялся, что subnetами получится разрулить.

Share this post


Link to post
Share on other sites

не охота плодить тупую тему, но хочется узнать как в случае такой связки (да и вообще IPoE в целом) узнать сколько абонентов "онлайн", смотреть по lease time или есть более лучшие и правильные варианты?

Share this post


Link to post
Share on other sites

не охота плодить тупую тему, но хочется узнать как в случае такой связки (да и вообще IPoE в целом) узнать сколько абонентов "онлайн", смотреть по lease time или есть более лучшие и правильные варианты?

 

Я на брасе смотрю кол-во сессий.

Share this post


Link to post
Share on other sites

я установил isc-dhcp apt-get install isc-dhcp-server на ubuntu 21.04, (будет ли работать опция 82 при такой установке&)мне бы настроить dhcp сервера чтоб он раздавал ip по портам нескольких коммутаторов,тоесть будут несколько коммутаторов reley на которых будут подключены клиенты, как это реализовать.. я просто с опцией 82 впервые сталкиваюсь

Edited by maga

Share this post


Link to post
Share on other sites

Проблема появляется если на сегменте сети, где используется option 82 появляется абонент с таким же маком, что и прописанным в subnet со статической привязкой, ему выдается адрес прописанный в host.

DHCP сервер смотрит в сторону маршрутизатора с прописанными dhcp-relay.

А поднять 2 DHCP сервера? Один для opt82 (патченый с отвязкой от маков) и второй стандартный без использования опций. Сменили коммутатор в старом сегменте на предмет рееля с опцией, и это пройдет не заметно...

Share this post


Link to post
Share on other sites

Проблема появляется если на сегменте сети, где используется option 82 появляется абонент с таким же маком, что и прописанным в subnet со статической привязкой, ему выдается адрес прописанный в host.

DHCP сервер смотрит в сторону маршрутизатора с прописанными dhcp-relay.

А поднять 2 DHCP сервера? Один для opt82 (патченый с отвязкой от маков) и второй стандартный без использования опций. Сменили коммутатор в старом сегменте на предмет рееля с опцией, и это пройдет не заметно...

 

Сейчас так и есть, хочу уйти от 4-ех DHCP серверов (по два на сегменты).

Share this post


Link to post
Share on other sites

Проблема появляется если на сегменте сети, где используется option 82 появляется абонент с таким же маком, что и прописанным в subnet со статической привязкой, ему выдается адрес прописанный в host.

DHCP сервер смотрит в сторону маршрутизатора с прописанными dhcp-relay.

А поднять 2 DHCP сервера? Один для opt82 (патченый с отвязкой от маков) и второй стандартный без использования опций. Сменили коммутатор в старом сегменте на предмет рееля с опцией, и это пройдет не заметно...

 

Сейчас так и есть, хочу уйти от 4-ех DHCP серверов (по два на сегменты).

 

не используйте hosts

используйте конструкцию

 

class 
"match_vlan__3041__port__1__MAC__d4:3d:7e:1:26:8d__switch__0:12:cf:dd:76:c5"  
{    
match if (
                 binary-to-ascii(10, 16, "",  substring(option agent.circuit-id, 2, 2)) = "3041"        
         and     binary-to-ascii(10, 8, "",  substring(option agent.circuit-id, 5, 1)) = "1"        
         and     binary-to-ascii(16,  8, ":", substring(hardware,                1, 6)) = "d4:3d:7e:1:26:8d"        
         and     binary-to-ascii(16,  8, ":", substring(option agent.remote-id, 2, 15)) = "0:12:cf:dd:76:c5"    
         );
}

Естественно, вырезав то что не надо. Ничто не мешает писать классы с привязкой к маку.

Думаю в моем примере выше все понятно - задействованы все идентификаторы. но никто не запрещает использовать только мак. Или порт.

Дальше

    pool { range 127.0.0.1; allow members of "match_vlan__3041__port__1__MAC__d4:3d:7e:1:26:8d__switch__0:12:cf:dd:76:c5"; default-lease-time 300; max-lease-time 300; }

Share this post


Link to post
Share on other sites

А зачем remote_id использовать?

проще ip свича ИМХО.

Если вопрос мне то у меня были свитчи которым нельзя указать "отдавай свой ip" аотому для совместимости с ними сделал так.

что именно использоват на самом делел дело десятое ... все равно все меняется из базы

Share this post


Link to post
Share on other sites

Если вопрос мне то у меня были свитчи которым нельзя указать "отдавай свой ip" аотому для совместимости с ними сделал так.

А и не надо.

вот как то так:

 

# вместо MAC-а из agent.remote-id, берем IP_adress свича из пакета

class "00:19:5b:ed:91:81:5" {

match if binary-to-ascii(10, 8, ".", packet(24, 4)) ="172.31.255.6" and binary-to-ascii(10, 8, "", suffix(option agent.circuit-id, 1)) = "5";

}

Share this post


Link to post
Share on other sites

Если вопрос мне то у меня были свитчи которым нельзя указать "отдавай свой ip" аотому для совместимости с ними сделал так.

А и не надо.

вот как то так:

 

# вместо MAC-а из agent.remote-id, берем IP_adress свича из пакета

class "00:19:5b:ed:91:81:5" {

match if binary-to-ascii(10, 8, ".", packet(24, 4)) ="172.31.255.6" and binary-to-ascii(10, 8, "", suffix(option agent.circuit-id, 1)) = "5";

}

Уточняю - в пакете ВСЕГДА есть адрес того кто вписал "опт 82"?

В моей схеме свитч не является релем, он добавляет опцию 82 но не пересылает на сервер (сеть малая, сервер светится во всех клиентских вланах)

 

 

Ага, проверил - так и есть

Lease for 91.XX.XX.XX is connected to interface  VLAN = 2020 Module = 0 Port= 21 MAC = 90:f6:52:XX:XX:XX Switch ID = 0:22:b0:d:XX:XX Switch IP = 0.0.0.0

log (info,
       concat
       (
       "Lease for ", binary-to-ascii (10, 8, ".", leased-address), " is connected to interface ",
       " VLAN = ", binary-to-ascii(10, 16, "",  substring(option agent.circuit-id, 2, 2)),
       " Module = ", binary-to-ascii(10, 8, "",  substring(option agent.circuit-id, 4, 1)),
       " Port= ", binary-to-ascii(10, 8, "",  substring(option agent.circuit-id, 5, 1)),
       " MAC = ",binary-to-ascii(16,  8, ":", substring(hardware,                1, 6)),
       " Switch ID = ", binary-to-ascii(16,  8, ":", substring(option agent.remote-id, 2, 15)),
       " Switch IP = ", binary-to-ascii(10, 8, ".", packet(24, 4))

Edited by sirmax

Share this post


Link to post
Share on other sites

Добрый день.. vadislaus можешь помочь с мануалом по настройке с опцией 82? я на centos 6 пытаюсь поставить ни чего не выходит.

 

А в чем вопрос? Чаще всего проблема с неправильным разбором данных от коммутатора. Для начала проверь, добавляет ли коммутатор опцию 82 (tcpdump,wireshark). Потом попытайся получить логгирование (

if exists agent.circuit-id

{

log ( info, concat( "Lease for ", binary-to-ascii (10, 8, ".", leased-address), " is connected to interface ", binary-to-ascii (10, 8, "", suffix ( option agent.circuit-id, 1)), ", vlan", binary-to-ascii (10, 16, "", substring( option agent.circuit-id, 2, 2)), " on switch ", binary-to-ascii(16, 8, ":", substring( option agent.remote-id, 2, 6))));

}.

Потом выясняй в какой позиции находятся нужные тебе данные (опция 82 у различных коммутаторов отличается).

Пиши подробности в личку, помогу чем могу.

 

А зачем мак учитывать? Просто по opt 82 отдавать и всё.

Два сегмента сети, работаем с тем, что есть ;)

 

С наскока эту проблему решить не удалось. Похоже, он статически привязанные IP выдает всегда в первую очередь. Лень в сырцы заглядывать.

 

Вот этого я и опасался, надеялся, что subnetами получится разрулить.

Я не знаю как правильно настроить dhcp.conf файл.. вернее как ее правильно подправить.. мне уже дали настроенный коммутатор с подержкой опции 82, адрес ее 192.168.0.5 b и есть сервер c ip 192.168.0.3, установил на ubuntu 12.04 isc-dhcp-server, мне нужно было подправить сам файл dhcp.conf, как ее правильно заполнить с подершкой 82 опции, обычным способом чтоб работал я ее настроил, а вот чтоб с этой опцией ни как не получается

 

Просто в 2021 только выдет Ваша ОС...

ой я промахнулся с ос 12.04 :)

Share this post


Link to post
Share on other sites

Добрый день.. vadislaus можешь помочь с мануалом по настройке с опцией 82? я на centos 6 пытаюсь поставить ни чего не выходит.

 

А в чем вопрос? Чаще всего проблема с неправильным разбором данных от коммутатора. Для начала проверь, добавляет ли коммутатор опцию 82 (tcpdump,wireshark). Потом попытайся получить логгирование (

if exists agent.circuit-id

{

log ( info, concat( "Lease for ", binary-to-ascii (10, 8, ".", leased-address), " is connected to interface ", binary-to-ascii (10, 8, "", suffix ( option agent.circuit-id, 1)), ", vlan", binary-to-ascii (10, 16, "", substring( option agent.circuit-id, 2, 2)), " on switch ", binary-to-ascii(16, 8, ":", substring( option agent.remote-id, 2, 6))));

}.

Потом выясняй в какой позиции находятся нужные тебе данные (опция 82 у различных коммутаторов отличается).

Пиши подробности в личку, помогу чем могу.

 

А зачем мак учитывать? Просто по opt 82 отдавать и всё.

Два сегмента сети, работаем с тем, что есть ;)

 

С наскока эту проблему решить не удалось. Похоже, он статически привязанные IP выдает всегда в первую очередь. Лень в сырцы заглядывать.

 

Вот этого я и опасался, надеялся, что subnetами получится разрулить.

Я не знаю как правильно настроить dhcp.conf файл.. вернее как ее правильно подправить.. мне уже дали настроенный коммутатор с подержкой опции 82, адрес ее 192.168.0.5 b и есть сервер c ip 192.168.0.3, установил на ubuntu 12.04 isc-dhcp-server, мне нужно было подправить сам файл dhcp.conf, как ее правильно заполнить с подершкой 82 опции, обычным способом чтоб работал я ее настроил, а вот чтоб с этой опцией ни как не получается

 

Просто в 2021 только выдет Ваша ОС...

ой я промахнулся с ос 12.04 :)

Судя по вопросу вы хотите что бы вам кто то настроил? За деньги тут люди найдуться, безплатно вряди, тут прямо в этой теме ВСЕ расписано, если что не понятно - гуглите ....

Share this post


Link to post
Share on other sites

в принципе да.. можно и за оплату.. но если он заработает.. или мне кажется что установленная система isc-dhcp установлен без этой опции.. надо будет еще раз пересобрать

Share this post


Link to post
Share on other sites

мне кажется что установленная система isc-dhcp установлен без этой опции.. надо будет еще раз пересобрать

 

Я такого не встречал.

Share this post


Link to post
Share on other sites

Ребята еще один вопрос.. если коммутатор SNR-S2940-8G-v2 настройки в конфиге тоже будут отличаться от dlink-а?

 

Тебе что, на гугле забанили?

Не хочешь сам работать - найми админа. У длинков куча свитчей с разным CLI, телепатов нет, все в отпуске, на Марсе.

Включи наконец мозги.

Share this post


Link to post
Share on other sites

sirmax не хочешь помочь так не пиши.. а зачем тогда создали тему? если тут вопрос нельзя задать? почувствовал себя супер админом ненадо так отшивать.. если такие как ты будут отшивать на гугл так откуда там информации взяться? и я тебя не заставляю помочь? и вообще я тебя просил чтоб помог?

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.