3

У меня проблемы с ретранслятором 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.

2 ответа2

2

Отвечая на мой собственный вопрос. После того, как все испробовано, я думаю, что единственный способ заставить эту работу - позволить коммутатору пересылать сообщения 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

Исходя из ваших комментариев, я думаю, что вы неправильно понимаете агентов ретрансляции 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-адрес).

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .