Статические IP-адреса
Я хочу, чтобы моему Raspberry Pis были назначены статические IP-адреса.
С моей терминологией они не являются "статичными". Устройство выбирает свой собственный «статический IP-адрес».
Но, основываясь на этом вопросе, я могу сказать, что вы ищете: динамический адрес, который зарезервирован сервером.
Если Raspberry Pi даже не спрашивает DHCP-сервер, он статический (и DHCP-сервер все еще может резервировать адрес). Если адрес поступает "от" DHCP-сервера, как вы указали, то Raspberry Pi запрашивает DHCP-сервер с адреса, поэтому он "динамический" (в том смысле, что Raspberry Pi принимает все, что указывает сервер, и поэтому, если DHCP-сервер действительно изменил адрес, Raspberry Pi предположительно примет это изменение. Таким образом, с точки зрения Raspberry Pi, он динамический, даже если DHCP-сервер называет его зарезервированным динамическим адресом.
Можно ли заставить Raspberry Pi (или любое другое устройство в этом отношении) запрашивать определенный статический IP-адрес с DHCP-сервера?
Нет, потому что если адрес запрашивается, то он не является статическим. (Это может сделать запрос и получить зарезервированный адрес.)
Модем имеет веб-адрес 192.168.0.1, который позволит мне управлять назначением DHCP статических ips на основе mac-адресов.
Это зарезервированные адреса, а не статические.
Извините, что так много раз говорил об этом, но в вопросе использовалась фраза "статический", с чем я не согласен, поэтому я надеюсь, что привычка будет исправлена хорошо и рано. Работа в сети может быть довольно запутанной, даже если терминология используется правильно, поэтому я рекомендую вам использовать термин "статический IP", чтобы не ссылаться на адреса, полученные из протокола автоматического назначения адресов, такого как DHCP. (Хотя DHCP является наиболее распространенным в IPv4, это не единственный возможный вариант. Например, есть "Реклама маршрутизатора", которая, вероятно, более широко используется с IPv6, чем IPv4, просто потому, что DHCP был так, так широко поддерживается в IPv4, и опыт показывает, что он работает нормально).
Запрос IP
Возможно ли, чтобы устройство запрашивало назначение определенного IP-адреса от сервера DHCP (статический или динамический)
Да. Протокол DHCP позволяет это. Это было бы не статично, а "зарезервировано".
Если вы посмотрите на связь DHCP, DHCP следует подходу DORA . ДОРА означает ОТКРЫТЬ, ПРЕДЛОЖЕНИЕ, ЗАПРОС, ПОДТВЕРЖДЕНИЕ.
В простой транзакции последовательность может быть такой же простой, как DORA. (Это означает, что есть один ОТКРЫТИЕ, одно ПРЕДЛОЖЕНИЕ, одно ЗАПРОС и одно ПРИЗНАНИЕ.) Клиент DHCP может запросить любой адрес, который он хочет. Это часто можно сделать, если клиент покидает сеть, а затем возвращается и предпочитает ранее использовавшийся адрес. Если DHCP-клиент запрашивает адрес, который является неприемлемым, это может привести к более длительной связи, например, к DORORA. Ниже приводится краткое изложение таких сообщений.
Сначала несколько заметок:
-
Жирные буквы, описывающие один из шагов DORA, представляют собой сообщение, которое фактически отправлено.
-
Жирные буквы также используются, чтобы помочь идентифицировать машины.
-
В следующих примерах подсеть 192.0.2 использовалась в соответствии с RFC 5737
-
следующие адреса были буквальными:
- 0.0.0.0
- 255.255.255.255
- FF-FF-FF-FF-FF-FF
-
Ниже приведены дополнительные примеры адресов, которые будут настроены:
-
11-11-11-22-22-22
- и 33-33-33-44-44-44
А теперь обещанное резюме сообщений:
-
[Клиент]: «У меня нет IP-адреса. Я хочу, чтобы это изменилось. "
-
[Клиент] использует IP-адрес 0.0.0.0, MAC 11-11-11-22-22-22 и отправляет на 255.255.255.255, FF-FF-FF-FF-FF-FF: и отправляет сообщение DISCOVER. (Привет! Есть ли там DHCP-серверы?)
-
Необязательный шаг: [Агент ретрансляции DHCP] связывается с [Сервер DHCP], который может находиться в другой подсети. Чтобы упростить, мы не будем вдаваться в подробности связи между [Агент ретрансляции DHCP] и [Сервер DHCP]. Обратите внимание, что [Клиент DHCP] не должен замечать каких-либо различий между [Сервер DHCP] или [Агент ретрансляции DHCP]. (Случайно, я не помню, возможно ли даже для [DHCP-клиента] сделать такое различие.)
-
[DHCP-сервер или агент ретрансляции] в той же подсети отвечает с IP-адреса 192.0.2.1 MAC-48, адреса 33-33-33-44-44-44, на 0.0.0.0 MAC-48, адрес 11-11-11- 22-22-22: ПРЕДЛОЖЕНИЕ 192.0.2.140. (Что означает это ПРЕДЛОЖЕНИЕ, так это то, что [Сервер или агент ретрансляции] может разрешить клиенту резервировать 192.0.2.140, если это необходимо.)
-
Если несколько [клиентов DHCP] обмениваются данными одновременно, это нормально, даже если они могут использовать один и тот же IP-адрес, например 0.0.0.0, поскольку отдельные адреса MAC-48 можно использовать для отслеживания отдельных разговоров.
-
[Клиент DHCP] игнорирует предложенный адрес 192.0.2.140, потому что [Клиент] предпочтет адрес 192.0.2.135, который был у Клиента вчера. Таким образом, клиенту разрешено полностью игнорировать адрес, предоставленный ПРЕДЛОЖЕНИЕМ, и просто запрашивать все, что он хочет. (Это должно быть продемонстрировано в следующем сообщении.)
-
Это представляет собой "рычаг", который имеет клиент. Это не абсолютная мощность, но может оказать влияние, если [DHCP-сервер] будет любезно сотрудничать.
-
(В реальных условиях это может быть несколько распространено для ноутбуков, которые выходят из спящего режима?)
-
[Клиент DCHP] на [DHCP-сервер или агент ретрансляции], в той же подсети, с 0.0.0.0 MAC-48 11-11-11-22-22-22 и отправляет на 192.0.2.1 адрес 33-33-33- 44-44-44: ЗАПРОС на желаемое 192.0.2.135
-
В этот момент Клиент отправил свой запрос и надеется получить подтверждение.
-
[DHCP-сервер] понимает, что 192.0.2.135 больше не доступен.
-
[DHCP-сервер или агент ретрансляции], с 192.0.2.1 по адресу 33-33-33-44-44-44, до 0.0.0.0 MAC-48 11-11-11-22-22-22: ПРЕДЛОЖЕНИЕ 192.0.2.140
-
[Клиент DHCP] разочаровывается тем, что ПРЕДЛОЖЕНИЕ не соответствует ЗАПРОСУ. Клиент, разочарованный тем, что он не получил желаемого предложения, снова пытается попробовать что-то, что более вероятно будет принято этим несколько неработающим сервером.
-
[Клиент DHCP], от 0.0.0.0 MAC-48 11-11-11-22-22-22 до 192.0.2.1 адреса 33-33-33-44-44-44, ЗАПРОС 192.0.2.140
-
[DHCP-сервер или агент ретрансляции] решает сотрудничать. Это делает две вещи:
-
[DHCP-сервер] Запоминает аренду, чтобы он больше не раздавал тот же адрес.
-
Адрес сейчас официально недоступен для всех остальных. Предположительно, клиент будет доволен этим адресом, потому что он был запрошен. Клиенту не нужно указывать какие-либо дальнейшие соглашения
-
[DHCP-сервер или агент ретрансляции], с 192.0.2.1 MAC-48 33-33-33-44-44-44, до MAC-48 11-11-11-22-22-22, отмечает, что он решил ACKNOWLEDGE (и тем самым утвердить) запрос 192.0.2.140.
Клиенту DHCP разрешено использовать предложенный адрес только после того, как этот клиент получит ACKNOWLEDGE. (На самом деле, DHCP-серверу разрешено предлагать адрес нескольким компьютерам, и это не должно вызывать конфликтов, поскольку эти адреса должны оставаться неиспользованными до тех пор, пока не будет предоставлен фактический ACKNOWLDGE.) Таким образом, в этом смысле клиент DHCP не получает никакого абсолютного разрешения, пока не получит ответ ACKNOWLEDGE, но он все еще может иметь некоторую влиятельную силу, решая, что он хочет ЗАПРОСИТЬ.
Если сервер не хочет сотрудничать с ЗАПРОСОМ, все, что он должен сделать, это НЕ ПОДТВЕРЖДАТЬ. Это может быть вежливо, выбрав ПРЕДЛОЖЕНИЕ что-то еще, или может просто игнорировать несоответствующее ЗАПРОС, все без какого-либо риска санкционировать использование нежелательного IP-адреса. Когда сервер DHCP получает запрос, сервер DHCP может решить посмотреть запрашивающий адрес MAC-48 и использовать эту информацию при принятии решения о том, что он хочет ПРЕДЛОЖИТЬ. Таким образом, сервер может эффективно ограничить адрес ПРЕДЛОЖЕНИЯ только тем, что указано в резервировании DHCP.
Так что, да, REQUEST может запросить любой конкретный IP-адрес, который он желает. Если клиент DHCP не знает, какой IP-адрес, вероятно, будет безопасен для ЗАПРОСА, клиент DHCP может просмотреть последнее ПРЕДЛОЖЕНИЕ или отправить пакет DISCOVER и найти новое ПРЕДЛОЖЕНИЕ.
В заключение,
Мне любопытно узнать, возможно ли это автоматизировать с помощью запроса от самого raspberry pi.
При использовании Unix проверьте наличие файла /etc/dhclient.conf. Я знаю, что такой файл может использоваться, чтобы указать, какие параметры DHCP используются. (Примерами наиболее распространенных "параметров DHCP" являются размер подсети ("маска подсети"), адрес маршрутизатора ("шлюз по умолчанию"), но другая информация также может передаваться сервером DHCP и использоваться (или игнорироваться) сервером. DHCP-клиент Я подозреваю, что файл может быть, где вы можете указать желаемый адрес. Похоже, что желаемой строкой может быть: « send dhcp-requested-address 192.0.2.135;
» (см. Справочную страницу ISC dhclient.conf и справочную страницу ISC для dhcp-options, и вопрос с самоответом: как запросить конкретный IP-адрес от DHCP-сервера?)