qwerty

iplogger.ru - IP Logging Service

вторник, 15 января 2019 г.

Linux: получение адреса по DHCP и работа с 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

Сбросить текущий адрес:
01# dhclient -r eth0
02...
03Jun 30 11:13:23 main-home dhclient[24157]: Internet Systems Consortium DHCP Client 4.1.1-P1
04Jun 30 11:13:23 main-home dhclient[24157]: Copyright 2004-2010 Internet Systems Consortium.
05Jun 30 11:13:23 main-home dhclient[24157]: All rights reserved.
06Jun 30 11:13:23 main-home dhclient[24157]: For info, please visit https://www.isc.org/software/dhcp/
07Jun 30 11:13:23 main-home dhclient[24157]:
08Jun 30 11:13:23 main-home dhclient[24157]: Listening on LPF/eth0/08:00:27:38:f0:04
09Jun 30 11:13:23 main-home dhclient[24157]: Sending on LPF/eth0/08:00:27:38:f0:04
10Jun 30 11:13:23 main-home dhclient[24157]: Sending on Socket/fallback
11Jun 30 11:13:23 main-home dhclient[24157]: DHCPRELEASE on eth0 to 192.168.1.1 port 67 (xid=0x41155573)
Получить адрес:
01# dhclient -v eth0
02...
03Jun 30 11:14:08 main-home dhclient[24173]: Internet Systems Consortium DHCP Client 4.1.1-P1
04Jun 30 11:14:08 main-home dhclient[24173]: Copyright 2004-2010 Internet Systems Consortium.
05Jun 30 11:14:08 main-home dhclient[24173]: All rights reserved.
06Jun 30 11:14:08 main-home dhclient[24173]: For info, please visit https://www.isc.org/software/dhcp/
07Jun 30 11:14:08 main-home dhclient[24173]:
08Jun 30 11:14:08 main-home dhclient[24173]: Listening on LPF/eth0/08:00:27:38:f0:04
09Jun 30 11:14:08 main-home dhclient[24173]: Sending on LPF/eth0/08:00:27:38:f0:04
10Jun 30 11:14:08 main-home dhclient[24173]: Sending on Socket/fallback
11Jun 30 11:14:11 main-home dhclient[24173]: DHCPDISCOVER on eth0 to 255.255.255.255 port 67 interval 8 (xid=0x1462dcbf)
12Jun 30 11:14:11 main-home dhclient[24173]: DHCPOFFER from 192.168.1.1
13Jun 30 11:14:11 main-home dhclient[24173]: DHCPREQUEST on eth0 to 255.255.255.255 port 67 (xid=0x1462dcbf)
14Jun 30 11:14:11 main-home dhclient[24173]: DHCPACK from 192.168.1.1 (xid=0x1462dcbf)
15Jun 30 11:14:13 main-home NET[24218]: /sbin/dhclient-script : updated /etc/resolv.conf
16Jun 30 11:14:13 main-home dhclient[24173]: bound to 192.168.1.104 -- renewal in 38008 seconds.
Файл списка базы данных адресов:
01tail: /var/lib/dhclient/dhclient.leases: file truncated
02lease {
03interface "eth0";
04fixed-address 192.168.1.104;
05option subnet-mask 255.255.255.0;
06option routers 192.168.1.1;
07option dhcp-lease-time 86400;
08option dhcp-message-type 5;
09option domain-name-servers 10.0.10.3,8.8.8.8,193.41.60.8;
10option dhcp-server-identifier 192.168.1.1;
11renew 1 2014/06/30 08:16:15;
12rebind 1 2014/06/30 08:16:15;
13expire 1 2014/06/30 08:16:15;
14}
15lease {
16interface "eth0";
17fixed-address 192.168.1.104;
18option subnet-mask 255.255.255.0;
19option routers 192.168.1.1;
20option dhcp-lease-time 86400;
21option dhcp-message-type 5;
22option domain-name-servers 10.0.10.3,8.8.8.8,193.41.60.8;
23option dhcp-server-identifier 192.168.1.1;
24renew 1 2014/06/30 18:50:07;
25rebind 2 2014/07/01 05:16:28;
26expire 2 2014/07/01 08:16:28;
27}
Указать другой файл:
1# dhclient -v eth0 -lf /tmp/dhcp.file
01# cat /tmp/dhcp.file
02lease {
03interface "eth0";
04fixed-address 192.168.1.104;
05option subnet-mask 255.255.255.0;
06option routers 192.168.1.1;
07option dhcp-lease-time 86400;
08option dhcp-message-type 5;
09option domain-name-servers 10.0.10.3,8.8.8.8,193.41.60.8;
10option dhcp-server-identifier 192.168.1.1;
11renew 1 2014/06/30 19:30:40;
12rebind 2 2014/07/01 05:17:50;
13expire 2 2014/07/01 08:17:50;
14}
Указать имя клиента:
1# dhclient -v eth0 -H testbox
После чего в логе DHCP-сервера:
testboxLAN192.168.1.10408:00:27:38:F0:04
Без указания опции -H – клиент вообще не отправляет своё имя, и идентифицировать его можно только по MAC-адресу:
1# dhclient -v eth0
 LAN192.168.1.10408:00:27:38:F0:04
Вариант номер 1 – добавить строку:
1DHCP_HOSTNAME=testbox-2
в файл /etc/sysconfig/network-scripts/ifcfg-eth0.

Пример файла dhclient.conf

Другой вариант – настроить конфигурацию dhcp-клиента с помощью файла /etc/dhcp/dhclient.conf.
Создаём файл с такой строкой:
1# cat /etc/dhcp/dhclient.conf
2send host-name "testbox-3";
Перезапускаем dhcient:
1# dhclient -r eth0
1# dhclient -v eth0
Проверяем:
testbox-3LAN192.168.1.10408:00:27:38:F0:04
В данном случае пример выполняется на:
1# cat /etc/redhat-release
2CentOS release 6.5 (Final)
Возможны и другие места размещения файла:
1/etc/dhclient-eth0.conf
2/etc/dhclient.conf
3/etc/dhcp/dhclient-eth0.conf
Немного усложним файл:
01# cat /etc/dhcp/dhclient.conf
02timeout 60;
03retry 60;
04reboot 10;
05reject 192.33.137.209;
06 
07interface "eth0" {
08  send host-name "testbox-4";
09  prepend domain-name-servers 127.0.0.1;
10  request subnet-mask,
11      broadcast-address,
12      time-offset,
13      routers,
14      domain-name,
15      domain-name-servers,
16      host-name;
17  require subnet-mask,
18      domain-name-servers;
19}
Тут:
timeout – timeout для получения ответа; в случае ошибки – будет повторная попытка после retryсекунд;
retry – время до повторной попытки запроса, если предыдущая не прошла по timeout;
reboot – после перезапуска dhclient сначала попытается использовать тот же адрес, который у него был ранее; если это не получится – он отправит новый запрос после reboot секунд;
reject – отклонять запросы от DHCP-сервера с указанным IP;
interface – указание, для какого интерфейса применять данные правила;
send – оператор, указыаеющий список параметров, которые клиент будет передавать серверу;
require – оператор, указывающий список требуемых клиенту опций;
Полный список доступен в:
1# man dhcp-options.

Комментариев нет:

Отправить комментарий

26 полезных приёмов и хитростей Python

Python — один из самых популярных и востребованных языков программирования, —  пишет  tproger.ru. На это есть несколько причин: Его ле...