D-Link DGS-1210 Опция ретрансляции DHCP 82

2172
Jeff Merlin

У меня проблемы с ретранслятором DHCP (опция 82) на коммутаторе DGS-1210-10. Конфигурация:

  • Порт 1-8 - это VLAN 80 без тегов (это также PVID). Порты 9 и 10 помечены как VLAN 80 и 99 (где 99 - это моя управляющая VLAN)

  • Коммутатор имеет статический IP-адрес в сети VLAN 99 (управление).

  • Клиенты подключаются по портам 1-8.

Я хотел бы, чтобы коммутатор вставил опцию информации агента ретрансляции DHCP (опция 82) в сообщения DHCP, чтобы идентифицировать порт.

Я сделал это на других коммутаторах, но не могу заставить его работать на D-Link DGS-1210

Вот что я попробовал:

  1. Включено Состояние DHCP-ретрансляции в разделе DHCP-ретрансляция -> Глобальные настройки ретрансляции DHCP (и ничего более). Информация агента ретрансляции DHCP не вставлена, и коммутатор, похоже, ничего не делает.

  2. Включите состояние локальной ретрансляции DHCP и настройте VLAN по VID 80. Информация агента ретрансляции DHCP вставлена, но коммутатор отбрасывает ответ с сервера DHCP. Клиент не может видеть ответ и продолжает отправлять сообщения обнаружения.

  3. В настройках интерфейса ретрансляции DHCP я могу установить DHCP-сервер, но тогда сообщения DHCP приходят на другой интерфейс. Я могу настроить DHCP-сервер для прослушивания обоих интерфейсов, но затем получаю предупреждение Multiple interfaces match the same shared network: eth0 eth1. eth1 - неправильный интерфейс. Мне нужен DHCP-сервер для прослушивания eth0.

У меня вопрос: есть ли способ настроить DGS-1210 для простой вставки информации агента ретрансляции DHCP (опция 82) в сообщения DHCP? У меня нет вариантов. Я, вероятно, должен получить другой переключатель.

Предоставление коммутатору IP в моей подсети DHCP не вариант.

Изменить: я хотел бы указать на несколько вещей.

1) Я согласен, что агент DHCP Relay не является необходимым для работы DHCP. Ведь мой DHCP-сервер находится в той же подсети (широковещательный домен), что и клиенты.

2) Я не согласен с тем, что DHCP-агент не может быть запущен на коммутаторе 2-го уровня, хотя я согласен, что в этом нет необходимости. Это может быть сделано, однако, и мой DGS-1210 делает это. Я могу видеть информацию об агенте ретрансляции DHCP с помощью сниффера пакетов, такого как tcpdump.


Редактировать:

Рассмотрим этот сценарий:

Я хотел бы, чтобы мой DHCP-сервер назначал IP-адреса клиентам в зависимости от того, к какому порту подключен клиент. Если клиент находится на порту 1, я хотел бы, чтобы его IP был 192.168.0.1, клиент, подключенный к порту 2, должен получить 192.168.0.2 и так далее. Теперь нам нужна информация от коммутатора. Это может быть сделано с помощью SNMP, но это, вероятно, будет медленно. Так что, если сообщение DHCP DISCOVER содержит порт? Да, именно здесь в игру вступает Вариант 82. Идентификатор канала может содержать порт. И это то, что делают переключатели. Коммутатор вставляет опцию 82 в сообщения DHCP и пересылает сообщения на сервер DHCP.

3
Это переключатель уровня 2. Вы должны настроить агент ретрансляции DHCP на устройстве уровня 3 (ваш маршрутизатор). DHCP будет работать правильно на уровне 2, потому что широковещательные сообщения работают через широковещательный домен уровня 2. Это уровень 3, который нуждается в помощи, потому что трансляции не пересекают устройство уровня 3. Ron Maupin 7 лет назад 0
Рон, дело в том, что я хочу знать, к какому порту коммутатора подключен клиент. Только коммутатор знает это. Следовательно, коммутатор (даже если это Layer2-коммутатор) должен действовать как агент ретрансляции. И это действительно так. В руководстве говорится: «Агент ретрансляции будет вставлять и удалять информацию ретрансляции DHCP (поле опции 82) в сообщениях между DHCP-серверами и клиентами». Jeff Merlin 7 лет назад 0
Это не то место, куда вы бы поместили агент ретрансляции DHCP. Вы бы поместили его в интерфейс маршрутизатора для локальной сети. Именно маршрутизатор нуждается в помощи для отправки запроса DHCP в другую локальную сеть. Ron Maupin 7 лет назад 0
Рон, никто не нуждается в помощи (кроме меня) ;-) Не могли бы вы объяснить, как маршрутизатор узнает номер порта на другом коммутаторе? Jeff Merlin 7 лет назад 0
Маршрутизатору или любому хосту в локальной сети не нужно ничего знать о портах коммутатора. Коммутатор создает таблицу MAC-адресов, которая связывает MAC-адреса с портами, в которые поступили MAC-адреса. Хосты (маршрутизатор является хостом в локальной сети) просто адресуют кадры с MAC-адресами, и коммутатор отправляет кадры на правильный порт. , Если MAC-адрес отсутствует в таблице MAC-адресов, коммутатор передает кадр на любой другой порт. Хосты будут отправлять на маршрутизатор MAC-адрес, когда IP-адрес находится в другой локальной сети. Запросы DHCP транслируются на каждый хост в локальной сети, включая маршрутизатор. Ron Maupin 7 лет назад 0
Опция 82 была разработана, чтобы позволить агенту ретрансляции DHCP вставлять информацию, специфичную для канала, в запрос, который перенаправляется на сервер DHCP. Подопция Circuit ID должна включать информацию, относящуюся к тому каналу, на который поступил запрос. Это идентификатор, который специфичен для агента ретрансляции, поэтому тип описанной схемы будет зависеть от агента ретрансляции. В сети на основе Ethernet это, вероятно, порт коммутатора. Это то, что я хочу. И DGS-1210 способен на это, даже если это просто коммутатор Layer2. Jeff Merlin 7 лет назад 0
Опция 82 используется маршрутизатором для упаковки широковещательного запроса DHCP и отправки его на сервер DHCP в другой локальной сети. Маршрутизатор действует как агент ретрансляции DHCP, но это должно быть настроено на интерфейсе локальной сети маршрутизатора. DHCP в локальной сети, где запрашивающий и DHCP-сервер оба, не нуждаются в опции 82, поскольку DHCP-сервер будет получать широковещательный DHCP-запрос. Если оба находятся в одной локальной сети, DHCP работает без опции 82. Хосты в локальной сети, включая DHCP-сервер, ничего не знают о коммутаторах или портах коммутаторов, и им это не нужно. Ron Maupin 7 лет назад 0
Рон, я не думаю, что ты понимаешь. Допустим, это коммутатор, некоторые клиенты - сервер DHCP и НИЧЕГО. Нет роутера вообще. DHCP-сервер все еще хочет знать, к какому порту коммутатора подключен клиент. Нет маршрутизатора, на котором будет работать агент ретрансляции DHCP. Что мы делаем? Запустите агент на коммутаторе. Увидеть? Jeff Merlin 7 лет назад 0
Нет, вы не правы. Ни один хост в локальной сети не знает даже о коммутаторе или портах коммутатора. Переключатель является прозрачным устройством. Опция 82 не требуется в локальной сети. Ron Maupin 7 лет назад 0
Так почему же в DGS-1210 есть агент DHCP Relay? Jeff Merlin 7 лет назад 0
Вероятно, потому, что он использует общий код с коммутаторами уровня 3 того же производителя. Я добавлю подробный ответ о том, как это работает. Ron Maupin 7 лет назад 0
Хе-хе ... Ну, это работает на DES-3010G ... Как и ожидалось. :-) Jeff Merlin 7 лет назад 0
Он будет работать на коммутаторе без опции 82, если и DHCP-сервер, и запрашивающий хост находятся в одной локальной сети. Я объясню в моем ответе. Ron Maupin 7 лет назад 0
Когда я говорю «это работает», я имею в виду идентификатор схемы, вставленный в информацию о опции 82. Это не имеет ничего общего с подсетью, DHCP-сервером или маршрутизатором. Это сделано выключателем, и никто другой! ;-) Jeff Merlin 7 лет назад 0
Я хочу сказать, что это не нужно в локальной сети. Опция 82 была разработана, чтобы помочь маршрутизаторам упаковать широковещательный DHCP-запрос для отправки его в другую локальную сеть, поскольку широковещательная передача не может покинуть локальную сеть, в которой они были созданы. Это сообщает серверу DHCP, что это было сделано, и он должен отправить предложение DHCP обратно маршрутизатору, а не отправлять его обратно в свою локальную сеть. Ron Maupin 7 лет назад 0
Кстати, когда вы редактируете вопрос, особенно когда он меняет вопрос, вы должны пометить изменение в вопросе. Ron Maupin 7 лет назад 0
Вопрос не изменился. Я все еще хочу знать, возможно ли настроить DGS-1210 для добавления информации о опции 82 к сообщениям DHCP, как это делает DES-3010. Сценарий, который я добавил, состоял в том, чтобы привести пример того, почему мне нужен ретранслятор на коммутаторе 2-го уровня. Вы сказали: «Вы должны настраивать агент ретрансляции DHCP на устройстве уровня 3», и это не работает (или довольно бессмысленно). Jeff Merlin 7 лет назад 0

2 ответа на вопрос

2
Jeff Merlin

Отвечая на мой собственный вопрос. После того, как все испробовано, я думаю, что единственный способ заставить эту работу - позволить коммутатору пересылать сообщения DHCP в его VLAN управления. Это вариант 3 в моем первоначальном вопросе.

В настройках интерфейса ретрансляции DHCP я могу установить DHCP-сервер, но тогда сообщения DHCP приходят на другой интерфейс. Я могу настроить DHCP-сервер для прослушивания обоих интерфейсов, но затем получаю предупреждение: несколько интерфейсов соответствуют одной общей сети: eth0 eth1. eth1 - неправильный интерфейс. Мне нужен DHCP-сервер для прослушивания eth0.

Вставка идентификатора агента и удаленного идентификатора агента выполняется, как и ожидалось, без каких-либо проблем, несмотря на то, что это коммутатор уровня 2. Возможно, где-то где-то скрыты функциональные возможности Уровня 3 :-)

DHCP-сервер доволен, кроме предупреждения Multiple interfaces match the same shared network. Да, сервер DHCP прав; Есть несколько интерфейсов в одной общей сети, но это так ...

Решением этой проблемы было бы объединение двух интерфейсов, но пока все работает, я в порядке.

Обратите внимание: этот вопрос был о коммутаторах серии D-Link DGS-1210, а не о том, как использовать (или не использовать) агент ретрансляции DHCP. DGS-1210 может выступать в качестве агента ретрансляции DHCP. Это можно настроить из веб-интерфейса. Это также задокументировано в руководстве.

0
Ron Maupin

Исходя из ваших комментариев, я думаю, что вы неправильно понимаете агентов ретрансляции DHCP и опцию DHCP 82. Я объясню это ниже.

Необходимо понимать разницу между адресами уровня 2 (MAC) и адресами уровня 3 (IP) и как они используются.

Адреса уровня 2 используются в локальной сети для доставки кадров с одного хоста в локальной сети напрямую на другой хост в локальной сети. Кадры уровня 2 имеют адреса источника и назначения уровня 2 (MAC). Узел, отправляющий на узел в той же локальной сети, будет использовать адрес уровня 2 (MAC) хоста назначения в качестве адреса уровня назначения 2 (MAC), а протокол уровня 2 (ethernet) будет доставлять кадры напрямую хосты назначения. Узел, отправляющий кадры из одной ЛВС в другую ЛВС, будет использовать адрес уровня 2 (MAC) своего настроенного шлюза (маршрутизатора) в качестве адреса уровня 2 назначения (MAC). Хост-отправитель ничего не знает о том, как Ethernet это делает (через прямое соединение, коммутатор, концентратор или что-то еще); он только знает, что отправляет кадрыиз его интерфейса. Это означает, что хост не знает ни о каких коммутаторах или портах коммутаторов в локальной сети.

Уровень 2 (MAC) имеет специальный широковещательный адрес (ff-ff-ff-ff-ff-ff), который означает, что кадры с этим адресом доставляются всем хостам в локальной сети. Запрос DHCP использует этот широковещательный адрес в качестве адреса уровня 2 (MAC) назначения, поэтому его получит каждый хост в локальной сети, включая DHCP-сервер. Кадры уровня 2 существуют только в той локальной сети, в которой они были созданы (объяснено ниже), поэтому это создает проблему для широковещательных рассылок, включая запросы DHCP, поскольку их нельзя отправить из локальной сети в другую локальную сеть. Именно поэтому были созданы агенты ретрансляции DHCP и опция DHCP 82.

Адреса уровня 3 используются для доставки пакетов из одной локальной сети в другую, и они имеют адреса источника и назначения уровня 3 (IP). Когда маршрутизатор получает кадр уровня 2 с его адресом уровня 2 (MAC), он удаляет и отбрасывает кадр уровня 2, включая адреса уровня 2 (MAC), чтобы раскрыть пакет уровня 3 . Маршрутизатор посмотрит адрес назначения уровня 3 (IP) и сравнит его с сетями назначения в своей таблице маршрутизации. Если if обнаружит, что адрес уровня 3 (IP) соответствует одной из сетей в таблице маршрутизации, он отправит пакет следующему интерфейсу и создаст новый кадр уровня 2для протокола нового интерфейса, который может или не может использовать MAC-адреса, но адреса уровня 2 для нового кадра уровня 2 будут для нового интерфейса; вся информация предыдущего кадра уровня 2 была отброшена.

Когда хост отправляет запрос DHCP, он отправляется на широковещательный адрес уровня 2 (MAC) в кадре и широковещательный адрес уровня 3 (IP) ( 255.255.255.255который нельзя маршрутизировать) в пакете . Если DHCP-сервер находится в той же локальной сети, что и запрашивающий хост, это работает хорошо, поскольку DHCP-сервер получает запрос. Затем DHCP-сервер отправит предложение DHCP обратно запрашивающему хосту. В зависимости от того, как настроен сервер DHCP, он может отправить его на широковещательный адрес уровня 2 (MAC) или на адрес хоста уровня 2 (MAC), поскольку он узнал об этом из кадра запроса DHCP уровня 2 . Это также хорошо работает, если DHCP-сервер и запрашивающий хост находятся в одной локальной сети. Никаких специальных параметров DHCP не требуется.

Проблема возникает, когда DHCP-сервер и запрашивающий хост находятся в разных локальных сетях. DHCP сломан, потому что они не могут передавать друг другу, и адрес уровня 2 (MAC) запрашивающего хоста не подходит для локальной сети DHCP-сервера. Фактически, адрес запрашивающего хоста уровня 2 (MAC) будет удален на первом маршрутизаторе.

Чтобы решить эту проблему, были созданы агенты ретрансляции DHCP. Агент ретрансляции DHCP настроен на интерфейсе локальной сети маршрутизатора. Маршрутизатор получит запрос DHCP, поскольку он отправляется на широковещательный адрес уровня 2 (MAC). Агент ретрансляции DHCP настроен с адресами уровня 3 (IP) одного или нескольких серверов DHCP. Это связано с тем, что DHCP-серверы находятся в других локальных сетях. Агент ретрансляции DHCP будет принимать широковещательный запрос DHCP и упаковать его в слое-3 пакет и отправить его в локальные сети, где сервера DHCP находятся.

Следующая проблема возникает, когда DHCP-серверу необходимо отправить обратно предложение DHCP. Обычно он отправляет его на широковещательный адрес уровня 2 (MAC) или исходный адрес уровня 2 (MAC), видимый в кадре запроса DHCP в локальной сети DHCP-сервера, но это не то место, где находится запрашивающий хост. Это не будет работать, потому что запрашивающий хост находится в другой локальной сети. Это где опция DHCP 82 приходит.

Параметр DHCP 82 позволяет агенту ретрансляции DHCP сообщать серверу DHCP, чтобы он отправлял обратно предложение DHCP, вместо того, чтобы пытаться доставить его в ЛВС, где сервер DHCP находится, как обычно. Это схема, на которую вы ссылаетесь в своих комментариях.

Как вы можете видеть, DHCP работает хорошо, когда DHCP-сервер и запрашивающий хост находятся в одной локальной сети, и в этом случае DHCP-агент не требует агента ретрансляции DHCP или опции DHCP 82. Агенты ретрансляции DHCP и опция 82 DHCP были позже добавлены к DHCP как способ централизации серверов DHCP в локальной сети, которая отличается от локальной сети, где находятся запрашивающие хосты. Использование агента ретрансляции DHCP и опции 82 DHCP, когда и DHCP-сервер, и запрашивающий хост находятся в одной и той же локальной сети, бессмысленно, и они фактически добавляют ненужную сложность процессу DHCP, но они важны для ситуации, когда сервер DHCP и запрашивающий хост находится в разных локальных сетях.


Редактировать:

Рассмотрим этот сценарий:

Я хотел бы, чтобы мой DHCP-сервер назначал IP-адреса клиентам в зависимости от того, к какому порту подключен клиент. Если клиент находится на порту 1, я хотел бы, чтобы его IP был 192.168.0.1, клиент, подключенный к порту 2, должен получить 192.168.0.2 и так далее. Теперь нам нужна информация от коммутатора. Это может быть сделано с помощью SNMP, но это, вероятно, будет медленно. Так что, если сообщение DHCP DISCOVER содержит порт? Да, именно здесь в игру вступает Вариант 82. Идентификатор канала может содержать порт. И это то, что делают переключатели. Коммутатор вставляет опцию 82 в сообщения DHCP и пересылает сообщения на сервер DHCP.

Как я объяснил в моих комментариях, коммутатор является прозрачным устройством, и как DHCP-сервер, так и хосты, подключенные к коммутатору, не знают о коммутаторе или его портах. Это не то, как работает DHCP-сервер, и DHCP назначается не так, как вам хотелось бы, и если вы переместили хост с одного порта коммутатора на другой во время его аренды DHCP, он все равно получит тот же IP-адрес, потому что он основан на его MAC-адрес.

DHCP использует области в качестве пулов, из которых можно выбрать IP-адреса для назначения MAC-адресам. Поскольку DHCP-сервер и хосты не знают даже о том, используется ли коммутатор или нет, вы не можете назначать адреса DHCP, используя нужный вам метод.

Если вам важно знать, какой IP-адрес назначен какому порту коммутатора, вы можете найти эту информацию, сравнив назначения MAC / IP-адресов DHCP (сообщая, какой IP-адрес назначен какому MAC-адресу), и таблицу MAC-адресов коммутатора (сообщает Вы к какому порту коммутатора подключен MAC-адрес).

Рон, пожалуйста, посмотрите мои изменения и описанный сценарий. Jeff Merlin 7 лет назад 0
Смотрите мои правки, чтобы объяснить, что это невозможно. Ron Maupin 7 лет назад 0
Пожалуйста, прочтите RFC 3046 section-3.1 [rfc3046 # section-3.1] (https://tools.ietf.org/html/rfc3046#section-3.1) 3.1 Подопция Идентификатор канала агента. Возможные варианты использования этого поля: Номер порта коммутатора-концентратора. Jeff Merlin 7 лет назад 0
Это относится к фактическим технологиям сетей WAN, а не к коммутаторам Ethernet в локальной сети. Я не думаю, что ваш агент ретрансляции DHCP даже знает, какой порт коммутатора используется запрашивающим хостом. Проблема в том, что вы хотите, чтобы агент ретрансляции DHCP решал, какой IP-адрес он запрашивает, но он не знает, какие IP-адреса доступны в области DHCP. Ron Maupin 7 лет назад 0
Извините за разглагольствование ... Но у меня есть еще один коммутатор - управляемый 8-портовый 10-Мегабитный коммутатор DES-3010G Layer 2, который делает именно то, что мне нужно. Коммутатор (да, уровень 2) вставляет опцию 82 в сообщения DHCP (все они) и отправляет ее на сервер DHCP. Ваш ответ "не должно быть сделано", что я не могу принять. Если ваш ответ «не может быть сделан на коммутаторе 2-го уровня», я позволю себе не согласиться, потому что это то, что я делаю на 3010. Jeff Merlin 7 лет назад 0
Что вы утверждаете, что я сказал, что не может быть сделано? Ретранслятор DHCP и Вариант DHCP 82? Мой ответ не говорит этого. Подопция «Идентификатор цепи агента» предназначена для того, чтобы сообщить серверу DHCP, как вернуть агента ретрансляции DHCP. «Схема» - это то, что находится между агентом ретрансляции DHCP и сервером DHCP, а не то, что находится между агентом ретрансляции DHCP и запрашивающим хостом. Ron Maupin 7 лет назад 0
Вы сказали: «Если вам важно знать, какой IP-адрес назначен какому порту коммутатора, вы можете найти эту информацию, сравнив назначения MAC / IP-адресов DHCP (сообщает, какой IP-адрес назначен какому MAC-адресу) и MAC-адресом коммутатора. таблица (сообщает, к какому порту коммутатора подключен MAC-адрес) ". Я утверждаю, что «Подопция Идентификатор цепи агента» содержит эту информацию, если коммутатор является агентом ретрансляции. Добраться до таблицы MAC-адресов коммутатора кажется громоздким, если не сказать больше. Не говоря уже о том, что это должно быть сделано между DISCOVERY и OFFER сервером DHCP. Jeff Merlin 7 лет назад 0

Похожие вопросы