Введение.
Поведение рабочих станций в корпоративной сети во многом зависит от правильной работы сетевых служб. Пользователь, включая свой ПК, запускает процессы тестирования и загрузка основных программ и протоколов. После чего ПК присваивается индивидуальный адрес, в виде IP номера, по нему его узнают и позволяют производить доступ к сетевым ресурсам предприятия. IP -адреса могу быть статичными и динамическими, в зависимости от применяемого устройства. В статье рассматриваются вопросы особенности работы динамического IP адреса, получаемого рабочей станцией от сервера 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
Как работает клиент.
Работа программы dhclient строится по принципу клиент-сервер. При включении ПК, на этапе загрузки сетевых служб /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 происходи автоматически, по мере получения аренды адреса, обычно администраторы устанавливают срок аренды ~ две недели.
Топология клиента
Каталог сетевых настроек /etc/init/ifaces/eth0/ содержит файлы:
- ipv4address — содержит адрес IP, при статическом типе
- ipv4route — содержит IP адрес шлюза, при статическом типе
- options — хранит общею информацию о сетевых параметрах
- resolv.conf — информация о DNS настройках
Приведённый список включает полный перечь файлов настроек сетевой карты. В нашем случае мы имеем только файл options т.к работает dhclient, остальные сетевые параметры берёт на себя сервер DHCP. Если в каталоге /etc/init/ifaces/eth0/ имеется еще какой нибудь файл, то как правило с пустыми полями, осуществляя резервную поддержку в особых случаях.
Ключи команды dhclient.
Всего ключей около 20, но основными рабочими являются несколько опции:
- — nw стать демоном без ожидания аренды
- — v подробные сообщения журнала и обращение к серверу за арендой
- — r убивает процессы dhclient
- — x убивает процессы dhclient ожидая новой команды
- -w начинать работать без сервера DHCP
- — vesion показывает версию клиента
Примеры работы dhclient.
В галереи снимков показаны рабочие моменты команды 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.
# 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.
# 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.
# 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. В дальнейших примерах рассматриваются различные варианты работы dhclient и использования ключей, когда сервер DHCP находится в аварийном состоянии.
Закдючение.
Работа dhclient становится не заметной, когда всё функционирует и сетевые службы доступны. Ситуация меняется в корне, если ПК не может подключится к коммуникационным сервисам организации, после сбоя сетевого оборудования или длительного простоя ПК. Очень частой причиной становится конфликт IP адресов, когда несколько машин имеют одну и тужу аренду IP номера. В этом случае, перебрав все возмодные варианты, приходится в ручную править файл аренды, что бы «отцепить» ПК от старого адреса, после чего запросить новую аренду, тем самым решить конфликт.