Для управления адресом интерфейса по протоколу DHCP (Dynamic Host Configuration Protocol — протокол динамической настройки узла) используется утилита dhclient
.
Содержание
Полезные опции dhclient
-q
– не выводить данные в консоли и в лог, кроме ошибок;
-1
– отправить запрос только один раз; в случае ошибки будет exit 2
;
-r
– освободить текущий адрес;
-lf <lease-file>
– файл базы данных аренды; если не указан будет использован файл по-умолчанию /var/lib/dhclient/dhclient.leases
;
-pf <pid-file>
– PID-файл процесса; если не указан – будет использован /var/run/dhclient.pid
;
-cf <config-file>
– файл конфигурации dhcp
-клиента; если не указан – будет использоваться /etc/dhcp/dhclient.conf
(в CentOS его всё-же надо создавать вручную);
-s <server> – указать сервер DHCP для отправки запроса; если не указан – запрос отправляет по всей сети 255.255.255.255
;
-I <dhcp-client-identifier>
– указание dhcp
-идентификатора клиента;
-H <host-name>
– указание опции host-name в запросе к DHCP-серверу; строка host-name
должна содержать только префикс имени хсота клиента, к которому сервер добавит ddns
или dns
имя для полчения полного FQDN-имени; нельзя использовать с опцией -F
;
-F <fqdn.fqdn>
– указать опцию fqdn.fqdn
для отправки серверу; нельзя использовать с опцией -H
; опция fqdn.fqdn
определяет полное имя хоста клиента, которое сервер будет использовать для оновления DDNS;
-R <option>[,<option>...]
– указать список опций, которые клиент хочет получить от сервера; список по умолчанию содержит такие опции:
subnet-mask, broadcast-address, time-offset, routers, domain-name, domain-name-servers, host-name, nis-domain, nis-servers, ntp-servers, interface-mtu
опция -R
не добавляет список запросов к запросу по-умолчанию, а перезаписывает его;
-timeout <timeout>
– указать timeout запроса вручную;
-v
– подробный режим;
Полный список опций dhclient
можно посмотреть тут>>> (русс), тут>>> (eng) и тут>>> (eng).
Примеры работы с dhclient
Сбросить текущий адрес:
# dhclient -r eth0 ... Jun 30 11:13:23 main-home dhclient[24157]: Internet Systems Consortium DHCP Client 4.1.1-P1 Jun 30 11:13:23 main-home dhclient[24157]: Copyright 2004-2010 Internet Systems Consortium. Jun 30 11:13:23 main-home dhclient[24157]: All rights reserved. Jun 30 11:13:23 main-home dhclient[24157]: For info, please visit https://www.isc.org/software/dhcp/ Jun 30 11:13:23 main-home dhclient[24157]: Jun 30 11:13:23 main-home dhclient[24157]: Listening on LPF/eth0/08:00:27:38:f0:04 Jun 30 11:13:23 main-home dhclient[24157]: Sending on LPF/eth0/08:00:27:38:f0:04 Jun 30 11:13:23 main-home dhclient[24157]: Sending on Socket/fallback Jun 30 11:13:23 main-home dhclient[24157]: DHCPRELEASE on eth0 to 192.168.1.1 port 67 (xid=0x41155573)
Получить адрес:
# dhclient -v eth0 ... Jun 30 11:14:08 main-home dhclient[24173]: Internet Systems Consortium DHCP Client 4.1.1-P1 Jun 30 11:14:08 main-home dhclient[24173]: Copyright 2004-2010 Internet Systems Consortium. Jun 30 11:14:08 main-home dhclient[24173]: All rights reserved. Jun 30 11:14:08 main-home dhclient[24173]: For info, please visit https://www.isc.org/software/dhcp/ Jun 30 11:14:08 main-home dhclient[24173]: Jun 30 11:14:08 main-home dhclient[24173]: Listening on LPF/eth0/08:00:27:38:f0:04 Jun 30 11:14:08 main-home dhclient[24173]: Sending on LPF/eth0/08:00:27:38:f0:04 Jun 30 11:14:08 main-home dhclient[24173]: Sending on Socket/fallback Jun 30 11:14:11 main-home dhclient[24173]: DHCPDISCOVER on eth0 to 255.255.255.255 port 67 interval 8 (xid=0x1462dcbf) Jun 30 11:14:11 main-home dhclient[24173]: DHCPOFFER from 192.168.1.1 Jun 30 11:14:11 main-home dhclient[24173]: DHCPREQUEST on eth0 to 255.255.255.255 port 67 (xid=0x1462dcbf) Jun 30 11:14:11 main-home dhclient[24173]: DHCPACK from 192.168.1.1 (xid=0x1462dcbf) Jun 30 11:14:13 main-home NET[24218]: /sbin/dhclient-script : updated /etc/resolv.conf Jun 30 11:14:13 main-home dhclient[24173]: bound to 192.168.1.104 -- renewal in 38008 seconds.
Файл списка базы данных адресов:
tail: /var/lib/dhclient/dhclient.leases: file truncated lease { interface "eth0"; fixed-address 192.168.1.104; option subnet-mask 255.255.255.0; option routers 192.168.1.1; option dhcp-lease-time 86400; option dhcp-message-type 5; option domain-name-servers 10.0.10.3,8.8.8.8,193.41.60.8; option dhcp-server-identifier 192.168.1.1; renew 1 2014/06/30 08:16:15; rebind 1 2014/06/30 08:16:15; expire 1 2014/06/30 08:16:15; } lease { interface "eth0"; fixed-address 192.168.1.104; option subnet-mask 255.255.255.0; option routers 192.168.1.1; option dhcp-lease-time 86400; option dhcp-message-type 5; option domain-name-servers 10.0.10.3,8.8.8.8,193.41.60.8; option dhcp-server-identifier 192.168.1.1; renew 1 2014/06/30 18:50:07; rebind 2 2014/07/01 05:16:28; expire 2 2014/07/01 08:16:28; }
Указать другой файл:
# dhclient -v eth0 -lf /tmp/dhcp.file
# cat /tmp/dhcp.file lease { interface "eth0"; fixed-address 192.168.1.104; option subnet-mask 255.255.255.0; option routers 192.168.1.1; option dhcp-lease-time 86400; option dhcp-message-type 5; option domain-name-servers 10.0.10.3,8.8.8.8,193.41.60.8; option dhcp-server-identifier 192.168.1.1; renew 1 2014/06/30 19:30:40; rebind 2 2014/07/01 05:17:50; expire 2 2014/07/01 08:17:50; }
Указать имя клиента:
# dhclient -v eth0 -H testbox
После чего в логе DHCP-сервера:
testbox | LAN | 192.168.1.104 | 08:00:27:38:F0:04 |
Без указания опции -H
– клиент вообще не отправляет своё имя, и идентифицировать его можно только по MAC-адресу:
# dhclient -v eth0
LAN | 192.168.1.104 | 08:00:27:38:F0:04 |
Вариант номер 1 – добавить строку:
DHCP_HOSTNAME=testbox-2
в файл /etc/sysconfig/network-scripts/ifcfg-eth0
.
Пример файла dhclient.conf
Другой вариант – настроить конфигурацию dhcp
-клиента с помощью файла /etc/dhcp/dhclient.conf
.
Создаём файл с такой строкой:
# cat /etc/dhcp/dhclient.conf send host-name "testbox-3";
Перезапускаем dhcient
:
# dhclient -r eth0
# dhclient -v eth0
Проверяем:
testbox-3 | LAN | 192.168.1.104 | 08:00:27:38:F0:04 |
В данном случае пример выполняется на:
# cat /etc/redhat-release CentOS release 6.5 (Final)
Возможны и другие места размещения файла:
/etc/dhclient-eth0.conf /etc/dhclient.conf /etc/dhcp/dhclient-eth0.conf
Немного усложним файл:
# cat /etc/dhcp/dhclient.conf timeout 60; retry 60; reboot 10; reject 192.33.137.209; interface "eth0" { send host-name "testbox-4"; prepend domain-name-servers 127.0.0.1; request subnet-mask, broadcast-address, time-offset, routers, domain-name, domain-name-servers, host-name; require subnet-mask, domain-name-servers; }
Тут:
timeout
– timeout
для получения ответа; в случае ошибки – будет повторная попытка после retry
секунд;
retry
– время до повторной попытки запроса, если предыдущая не прошла по timeout
;
reboot
– после перезапуска dhclient
сначала попытается использовать тот же адрес, который у него был ранее; если это не получится – он отправит новый запрос после reboot
секунд;
reject
– отклонять запросы от DHCP-сервера с указанным IP;
interface
– указание, для какого интерфейса применять данные правила;
send
– оператор, указыаеющий список параметров, которые клиент будет передавать серверу;
require
– оператор, указывающий список требуемых клиенту опций;
Полный список доступен в:
# man dhcp-options.