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

Введение.

Поведение рабочих станций в корпоративной сети во многом зависит от правильной работы сетевых служб. Пользователь, включая свой ПК, запускает процессы тестирования и загрузки основных программ и протоколов. После чего ПК присваивается, с помощью dhclient, индивидуальный адрес в виде IP номера, по нему его узнают и позволяют производить доступ к сетевым ресурсам предприятия. IP — адреса могу быть статичными и динамическими, в зависимости от применяемого устройства. В статье рассматриваются вопросы особенности работы динамического IP — адреса, использующего 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 номера. В этом случае, перебрав все возможные варианты, приходится в ручную править файл аренды, что бы «отцепить» ПК от старого адреса и запросить новую аренду, тем самым решая конфликт. Понимание механизма работы программы позволит администратору, правильно выстроить диагностику при сетевых неисправностях.

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

Copyright © 2020-2024
Все права защищены.
При перепечатке указать источник: kabtim-t.ru
Контакты