Вопрос или проблема
У меня есть настройка, где моя система подключена к обычной домашней сети, подключенной к маршрутизатору. Маршрутизатор назначает IP моему устройству без проблем.
Я хотел бы использовать один и тот же IP каждый раз для моего устройства. Либо установить его как статический, либо как предпочитаемый.
Это полностью контролируемая среда, так что не должно быть проблем с получением предпочитаемого IP от DHCP.
Обновление: Я не могу ничего изменить на стороне DHCP-сервера, мне нужно найти решение на стороне клиента. Сервер — это ICS и не может быть настроен.
Вопросы
Мой вопрос: возможно ли это с помощью dhcpcd
? Могу ли я вообще использовать статический IP с dhcpcd
? Или даже предпочитаемый?
Я не могу избежать использования dhcpcd
из-за некоторых не связанных требований.
Сделано на данный момент
Что я пробовал до сих пор, это добавить следующие строки в файл /etc/dhcpcd.conf
:
interface eth0
static ip_address=192.168.1.135/24
static routers=192.168.1.1
static domain_name_servers=8.8.8.8
Вот что говорят manpages для dhcpcd.conf
:
static значение
Настраивает статическое значение. Если вы установите ip_address, dhcpcd не будет пытаться получить аренду и просто использовать значение для адреса с бесконечным временем аренды. Вот пример, который настраивает статический адрес, маршруты и dns. interface eth0 static ip_address=192.168.0.10/24 static routers=192.168.0.1 static domain_name_servers=192.168.0.1
Но проблема в том, что даже когда я делаю это таким образом, я вижу свое устройство с этим IP только в течение короткого времени,
после чего он, кажется, теряется и заменяется другим IP, скорее всего назначенным через DHCP (наверное, следующим в пуле).
Вот полное содержание моего файла dhcpcd.conf
:
# Информирует DHCP-сервер о нашем имени хоста для DDNS.
hostname
# Используйте тот же DUID + IAID, что и в DHCPv6 для DHCPv4 ClientID согласно RFC4361.
duid
# Сохранять конфигурацию интерфейса при выходе из dhcpcd.
persistent
# Поддержка быстрого ответа.
# Безопасно включать по умолчанию, так как требует настройки эквивалентного выбора
# на сервере, чтобы действительно работать.
option rapid_commit
# Список опций для запроса на DHCP-сервер.
option domain_name_servers, domain_name, domain_search, host_name
option classless_static_routes
# Большинство дистрибутивов имеют поддержку NTP.
option ntp_servers
# ServerID требуется по RFC2131.
require dhcp_server_identifier
# Предоставлен скрипт-запуск, который ищет имя хоста, если не установлено DHCP
# сервером, но по умолчанию он не должен быть запущен.
nohook lookup-hostname
noipv4ll
interface eth0
static ip_address=192.168.1.135/24
static routers=192.168.1.1
static domain_name_servers=8.8.8.8
Мне нужно добавить больше опций, чтобы сообщить DHCP, что мне не нужен новый IP-адрес или что-то еще?
Или я полностью неправильно понял тему?
Я попытался искать более подробную информацию в интернете, но либо нет много информации по этой теме,
либо, что более вероятно, я недостаточно знаю о теме, чтобы выполнить правильный поиск.
Любая помощь приветствуется!
вам нужно сделать резервирование по MAC-адресу, вот так:
host vnbandk3920.dsdk12.schoollocal {
hardware ethernet 00:c0:ee:7d:bc:80;
fixed-address 172.30.176.243;
}
Если вы используете dhcpcd (демон клиента, большинство людей здесь путают его с DHCP и DHCPd, которые отличаются), то добавьте следующий текст в конец /etc/dhcpcd.conf
static
interface eth0
static ip_address=192.168.1.135/24
static routers=192.168.1.1
static domain_name_servers=8.8.8.8
Конечно, не забудьте заменить информацию об IP на данные вашей сети.
Вопрос был:
Могу ли я вообще использовать статический IP с dhcpcd? Или даже предпочитаемый? Я не могу избежать использования dhcpcd из-за некоторых не связанных требований.
Да, вы можете. Вы выразили желание в своём вопросе: “Я хотел бы использовать один и тот же IP каждый раз для моего устройства. Либо установить его как статический, либо как предпочитаемый.”
Установка предпочитаемого IP адреса в dhcpcd
очень проста: в /etc/dhcpcd.conf
добавьте эту единственную строку:
# вместо статического IP:
interface wlan0
request 192.168.1.135/24
Запрос
лучше чем назначение статического
IP, поскольку ваш DHCP-сервер остаётся вовлечённым и выполняет работу, на которую был “нанят”. Обратите внимание, что это не гарантирует, что вы получите запрошенный
IP-адрес, но вы получите его, если он доступен.
Поскольку у вас нет доступа администратора к DHCP-серверу/маршрутизатору, вы можете использовать адрес, который DHCP назначает вашей системе изначально; например, допустим, что 192.168.1.178
был назначен изначально. Это вероятно означает, что администратор сервера настроил DHCP-сервер так, чтобы 192.168.1.178
был в “пуле” динамических адресов хостов. Но если вы “примете” этот IP-адрес, вы можете добавить строку request 192.168.1.178/24
в свой файл dhcpcd.conf
и, возможно, иметь его столько, сколько вам нужно. DHCP-серверы всегда предпочитают назначать тот же IP-адрес хосту, но запрос
позволяет выразить предпочтение к этому адресу серверу.
Вы пытаетесь использовать статический адрес, который попадает в пул адресов маршрутизатора? Если да, нет уверенности, что маршрутизатор будет делать. Проверьте пулы адресов маршрутизатора в интерфейсе, и выберите адрес вне пула.
Вы можете проверить, сталкиваетесь ли вы всё ещё с такими явлениями, просто остановив сетевой менеджер (я предполагаю, что вы его используете), задавая себе адрес,
ip link set dev eth0 down
ip addr flush dev eth0
ip addr add 192.168.1.whatever/24 dev eth0
ip link set dev eth0 up
ip route add default via 192.168.1.1
без использования dhcpcd. Это имеет преимущество изолирования проблемы: если она возникает снова, то это вина вашего маршрутизатора, в противном случае это был некорректный выбор статического IP-адреса.
Ответ или решение
Для того чтобы ответить на ваш вопрос о возможности использования статического IP с помощью dhcpcd
и выбрать предпочитаемый IP-адрес для устройства в домашней сети, необходимо понять некоторые теоретические и практические аспекты работы DHCP и конфигурации клиента dhcpcd
.
Теория
dhcpcd
— это демон клиента DHCP, который, как правило, используется для автоматического получения IP-адресов от DHCP-сервера. Однако, он также поддерживает возможность установки статических настроек IP на уровне клиента. Это полезно в контексте вашей задачи, когда доступ к настройкам DHCP-сервера отсутствует. При статической настройке IP-адреса с помощью dhcpcd
, клиент предоставляет эти настройки из файла конфигурации dhcpcd.conf
, вместо того чтобы получать их от сервера.
Пример
Предположим, что вы хотите, чтобы ваше устройство всегда имело IP-адрес 192.168.1.135
. Для этого можно использовать static
или, как более гибкий вариант, request
, чтобы сохранить участие DHCP-сервера в управлении сетью. В конфигурационном файле /etc/dhcpcd.conf
вы можете указать:
interface eth0
static ip_address=192.168.1.135/24
static routers=192.168.1.1
static domain_name_servers=8.8.8.8
# Или, предпочтительно:
interface eth0
request 192.168.1.135/24
Команда request
позволяет запросить предпочтительный IP-адрес. Хотя она не гарантирует его назначение, это увеличивает вероятность сохранения вашего выбора.
Применение
-
Убедитесь в корректности сети: Прежде чем использовать статический адрес, проверьте, что адрес
192.168.1.135
находится вне пула динамических адресов вашего маршрутизатора, чтобы избежать конфликтов. Зачастую статические IP должны назначаться за пределами динамического пула, выделенного DHCP-сервером. -
Проверьте конфигурацию вручную: Вы можете временно настраивать интерфейс вручную, чтобы исключить влияние
dhcpcd
и убедиться, что проблема не в маршрутизаторе. Используйте такие команды:ip link set dev eth0 down ip addr flush dev eth0 ip addr add 192.168.1.135/24 dev eth0 ip link set dev eth0 up ip route add default via 192.168.1.1
Если это работает, причина проблемы может заключаться в подаче неверной конфигурации dhcpcd
или в конфликте IP-адресов в сети.
В общем, с учетом вышеизложенных рекомендаций и подходов, вы сможете добиться стабильной настройки IP на вашем устройстве с помощью dhcpcd
.