Назад | Перейти на главную страницу

Почему dhclient не использует статический IP-адрес, который я прошу запросить?

Вот мой /etc/dhcp3/dhclient.conf:

request subnet-mask, broadcast-address, time-offset, routers,
        domain-name, domain-name-servers, domain-search, host-name,
        netbios-name-servers, netbios-scope, interface-mtu;
timeout 60;
alias {
  interface "eth0";
  fixed-address 192.168.1.222;
}
lease {
  interface "eth0";
  fixed-address 192.168.1.222;
  option subnet-mask 255.255.255.0;
  option broadcast-address 255.255.255.255;
  option routers 192.168.1.254;
  option domain-name-servers 192.168.1.254;
}

Когда я запускаю "dhclient eth0", я получаю следующее:

There is already a pid file /var/run/dhclient.pid with pid 6511
killed old client process, removed PID file
Internet Systems Consortium DHCP Client V3.1.1
Copyright 2004-2008 Internet Systems Consortium.
All rights reserved.
For info, please visit http://www.isc.org/sw/dhcp/

wmaster0: unknown hardware address type 801
wmaster0: unknown hardware address type 801
Listening on LPF/eth0/00:1c:25:97:82:20
Sending on   LPF/eth0/00:1c:25:97:82:20
Sending on   Socket/fallback
DHCPREQUEST of 192.168.1.27 on eth0 to 255.255.255.255 port 67
DHCPACK of 192.168.1.27 from 192.168.1.254
bound to 192.168.1.27 -- renewal in 1468 seconds.

Я использовал strace, чтобы убедиться, что dhclient действительно читает этот файл conf. Почему он не обращает внимания на мою строку «фиксированный адрес 192.168.1.222»? Почему вместо этого выполняется DHCPREQUEST для 192.168.1.27?

Как правильно заметил Зоредаш: установка фиксированного адреса предназначена только для определений аренды, которые действуют только в том случае, если DHCP-сервер не отвечает. Видеть http://linux.die.net/man/5/dhclient.conf в разделе «Объявления об аренде».

Вы хотите

interface "eth0" {
    send dhcp-requested-address 192.168.1.222;
}

Это задокументировано на странице руководства dhcp-options: http://linux.die.net/man/5/dhcp-options и соответствует RFC опций DHCP, доступному на http://www.rfc-editor.org/rfc/rfc2132.txt

Однако обратите внимание: в последнее время я сталкиваюсь с тем, что dhclient3 не получает IP-адрес с этой конфигурацией, поскольку запрошенный адрес уже был занят. Сервер отвечает DHCPNAK на запрос, и через некоторое время клиент откажется. Я ожидал, что клиент DHCP в конечном итоге получит другой адрес, если запрошенный недоступен.

Я использовал этот подход, пытаясь убедиться, что я всегда знаю адрес своего сервера, не прибегая к таким вещам, как dyndns.com, и вместо этого у меня не было подключения.

Отклонить - отклонить предложения от серверов с определенным адресом. Это не для того, чтобы отклонять адреса, предлагаемые сервером.

Оператор reject заставляет DHCP-клиент отклонять предложения от серверов, чей идентификатор сервера совпадает с любым из указанных хостов или подсетей. Это можно использовать, чтобы избежать настройки мошенническими или неправильно настроенными серверами DHCP,

Определенная аренда используется только в том случае, если DHCP-сервер не отвечает.

аренда {декларация об аренде [... декларация об аренде]}

Клиент DHCP может решить через некоторый период времени (см. ВРЕМЯ ПРОТОКОЛА), что ему не удастся связаться с сервером.

Если вам нужен конкретный адрес, вам, вероятно, следует настроить резервирование на сервере.

Вы действительно проверяли, доступен ли он через указанный вами IP-адрес (я знаю, еще в 2010 году ...)?

Я сделал эту ошибку только сейчас.

Ваш dhclient-output ожидается, даже если у вас есть

alias{
  fixed-address

Это потому, что это alias, как дополнительный IP-адрес этого интерфейса; интерфейс по-прежнему получает назначенный dhcp ip.

Учитывая lease остальные верны, в основном это игнорируется, если dhcp не дает сбой.