Управление и настройка dhclient в сети Linux.

Введение.

Поведение рабочих станций в корпоративной сети во многом зависит от правильной работы сетевых служб. Пользователь, включая свой ПК, запускает процессы тестирования и загрузки основных программ и протоколов. После чего ПК присваивается, с помощью dhclient, индивидуальный адрес в виде IP номера, по нему его узнают и позволяют производить доступ к сетевым ресурсам предприятия. IP — адреса могу быть статичными1 и динамическими, в зависимости от применяемого устройства. В статье рассматриваются вопросы особенности работы динамического IP2 — адреса, использующего dhclient, получаемого рабочей станцией от сервера DHCP, установленного в организации.

Подготовка.

  • Стенд:
  • ALT Linux сервер, имя lin-dhcp; ip-10.0.2.18
  • Альт Рабочая станция К, имя: lin-kw, IP=10.0.2.10
  • Сетевая карта ПК; eth0

Особых подготовительных действий не требуется, на рабочей станции dhclient установлен по умолчанию, проверяем.

# dhclient --version
isc-dhclient-x.x.x

Как работает клиент.

Работа программы строится по принципу клиент-сервер. При включении ПК, на этапе загрузки сетевых служб /etc/init/ifaces, система определяет тип IP соединения — статический или динамический. Если параметр BOOTPROTO = dhcp в файле options каталога /etc/init/ifaces/eth0/, то дальнейшие действия, после чтения /etc/dhcp/dhclient.conf, переносятся в файл базы данных аренды /var/lib/dhcp/dhclient/state/dhclient.leases. Здесь система хранит историю аренды последних IP адресов вашего ПК. Обновление файла dhclient.conf происходит автоматически, по мере получения аренды адреса, обычно администраторы устанавливают срок аренды ~ две недели.

Топология dhclient.

  • Каталог сетевых настроек /etc/init/ifaces/eth0/ хранит файлы:
    • ipv4address — содержит адрес IP, при статическом типе
    • ipv4route — содержит IP адрес шлюза, при статическом типе
    • options — хранит общею информацию о сетевых параметрах
    • resolv.conf — информация о DNS настройках

Приведённый список включает полный перечь файлов настроек сетевой карты. В нашем случае мы имеем только файл options т.к работает dhclient, остальные сетевые параметры берёт на себя сервер DHCP. Если в каталоге /etc/init/ifaces/eth0/ имеется еще какой-нибудь файл, то, как правило, с пустыми полями, осуществляя резервную поддержку в особых случаях.

Ключи команды dhclient.

  • Всего ключей около 20, но основными являются несколько:
    • nw стать демоном без ожидания аренды
    • — v подробные сообщения журнала и обращение к серверу за арендой
    • — r убивает процессы клиента dhcp
    • — x убивает процессы dhcp ожидая новой команды
    • -w начинать работать без сервера DHCP
    • — vesion показывает версию клиента

Примеры работы dhclient.

В галереи снимков показаны рабочие моменты команды.

1. Начальные условия работы сетевой карты eth0

# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 08:00:27:ff:65:15 brd ff:ff:ff:ff:ff:ff
    inet 10.0.2.10/24 brd 10.0.2.255 scope global eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::a00:27ff:feff:6515/64 scope link 
       valid_lft forever preferred_lft forever

2. Запрос аренды IP адреса.

# dhclient -v
...
Listening on LPF/eth0/08:00:27:ff:65:15
Sending on   LPF/eth0/08:00:27:ff:65:15
Sending on   Socket/fallback
DHCPDISCOVER on eth0 to 255.255.255.255 port 67 interval 7
DHCPOFFER of 10.0.2.10 from 10.0.2.2
DHCPREQUEST for 10.0.2.10 on eth0 to 255.255.255.255 port 67
DHCPACK of 10.0.2.10 from 10.0.2.2
bound to 10.0.2.10 -- renewal in 7208758 seconds

3. Смотрим информацию в файле dhclient.leases

# cat /var/lib/dhcp/dhclient/state/dhclient.leases
lease {
  interface "eth0";
  fixed-address 10.0.2.10;
  option subnet-mask 255.255.255.0;
  option routers 10.0.2.2;
  option dhcp-lease-time 18748800;
  option dhcp-message-type 5;
  option domain-name-servers 10.0.2.2;
  option dhcp-server-identifier 10.0.2.2;
  option ntp-servers 10.0.2.2;
  option domain-name "lin-dhcp";
  renew 4 2022/09/22 17:43:57;
  rebind 5 2022/12/30 15:50:41;
  expire 4 2023/01/26 18:50:41;
}
lease {
  interface "eth0";
  fixed-address 10.0.2.10;
  option subnet-mask 255.255.255.0;
  option routers 10.0.2.2;
  option dhcp-lease-time 18748636;
  option dhcp-message-type 5;
  option domain-name-servers 10.0.2.2;
  option dhcp-server-identifier 10.0.2.2;
  option ntp-servers 10.0.2.2;
  option domain-name "lin-dhcp";
  renew 2 2022/10/04 03:49:54;
  rebind 5 2022/12/30 15:51:00;
  expire 4 2023/01/26 18:50:40;
}

4. Остановить (убить) процессы.

# dhclient -r
Killed old client process

5. Смотрим информацию на сетевой карте.

# ip a
1: lo:
... 
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 08:00:27:ff:65:15 brd ff:ff:ff:ff:ff:ff
    inet6 fe80::a00:27ff:feff:6515/64 scope link 
       valid_lft forever preferred_lft forever

6. Запрос аренды IP адреса.

# dhclient -v
...
Listening on LPF/eth0/08:00:27:ff:65:15
Sending on   LPF/eth0/08:00:27:ff:65:15
Sending on   Socket/fallback
DHCPREQUEST for 10.0.2.10 on eth0 to 255.255.255.255 port 67
DHCPACK of 10.0.2.10 from 10.0.2.2
bound to 10.0.2.10 -- renewal in 8328451 seconds.

7. Остановить (убить) процессы.

# dhclient -r
Killed old client process

8. Стать демоном без ожидания аренды.

# dhclient -nw
# ip a
1: lo: 
...
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 08:00:27:ff:65:15 brd ff:ff:ff:ff:ff:ff
    inet 10.0.2.10/24 brd 10.0.2.255 scope global eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::a00:27ff:feff:6515/64 scope link 
       valid_lft forever preferred_lft forever

9. Остановить (убить) процессы.

# dhclient -r
Killed old client process

10. Работать без сервера DHCP.

# dhclient -w
# ip a
1: lo: 
...
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 08:00:27:ff:65:15 brd ff:ff:ff:ff:ff:ff
    inet 10.0.2.10/24 brd 10.0.2.255 scope global eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::a00:27ff:feff:6515/64 scope link 
       valid_lft forever preferred_lft forever

Пояснения.

  • В примере 1, показана исходная настройка сетевой карты ПК, eth0.
  • Пример 2, смотрим информацию аренды для карты eth0.
  • Пример 3, показывает, какая запись находится в файле настроек аренды для карты eth0.
  • В примерах 8,9.10 рассматриваются варианты работы dhclient, когда сервер DHCP может находиться в аварийном состоянии или временно не доступном.

Заключение.

Работа клиента dhcp становится не заметной, когда всё функционирует и сетевые службы доступны. Ситуация меняется, если ПК не может подключиться к коммуникационным службам организации, после сбоя сетевого оборудования или длительного простоя. Очень частой причиной становится конфликт IP адресов, когда несколько машин имеют одинаковую аренду IP номера. В этом случае, перебрав все возможные варианты, приходится в ручную править файл аренды, что бы «отцепить» ПК от старого адреса и запросить новую аренду, тем самым решая конфликт. Понимание механизма работы программы позволит администратору, правильно выстроить диагностику при сетевых неисправностях.

Полезные ссылки.

Сноски.

  1. присваивается ПК на постоянной основе, обычно сервер, точка доступа, маршрутизатор и т.д ↩︎
  2. выдаются в аренду ПК на определённое время, день, неделя, месяц может меняться при последившем подключении ↩︎
Copyright © 2011-2024
Все права защищены.
При перепечатке указать источник: kabtim.ru
Контакты