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