8.4. Настройка DHCP (Dynamic Host Configuration Protocol)

8.4. Настройка DHCP (Dynamic Host Configuration Protocol)

Для чего нужен протокол DHCP? DHCP — это протокол настройки узла, который автоматически назначает IP-адреса компьютерам. По сути, протокол DHCP — это дальнейшее развитие протокола ВООТР. Последний разрешает бездисковым клиентам запускать и автоматически конфигурировать протокол TCP/IP. Протокол DHCP централизовано назначает IP-адреса в вашей сети и автоматически конфигурирует рабочие станции. Возможно, вы подумали, что в одной сети должен быть только один сервер DHCP, потому что в противном случае между серверами возникнет конфликт, а пострадавшим опять окажется клиент, который зависнет при загрузке. А вот и не так — в одной сети может быть несколько серверов DHCP. И это не только не отразится на производительности сети, но даже повысит надежность сети, если, например, один из серверов выйдет из строя.

Итак, установите пакет dhcp и включите поддержку динамических IP-адресов командой

echo "1" > /proc/sys/net/ipv4/ip_dynaddr

DHCP в Linux реализован в виде демона сервера (dhcpd) и демона клиента (dhcpcd). Демон сервера непосредственно отвечает за назначение IP-адресов клиентам, при входе и выходе их из сети. Клиентский демон, как явствует из названия, запускается на стороне клиента.

Конфигурационным файлом для dhcpd является /etc/dhcp.conf. При запуске DHCP-сервера происходит выделение IP-адресов согласно содержащимся в файле /etc/dhcp.conf установкам. Выделенные адреса dhcpd регистрирует в файле dhcpd.leases, который обычно находится в каталоге /var/dhcpd.

Сейчас давайте рассмотрим простейшую конфигурацию, которую будем постепенно наращивать (см. листинг 8.8). Обратите внимание на то что, чтобы внесенные вами в файл /etc/dhcp.conf изменения вступили в силу, демон dhcpd необходимо остановить и запустить снова. При этом используйте команду /etc/rc.d/init.d/dhcpd stop для останова демона, и команду /etc/rc.d/init.d/dhcpd start для его запуска.

Листинг 8.8. Файл /etc/dhcpd.conf

# описание сети, указывающее, какая из подсетей будет

# обслуживаться. Указывается сетевой адрес и маска сети

subnet 192.168.1.0 netmask 255.255.255.0 {

# маршрутизатор по умолчанию

option routers 192.168.1.1;

# маска подсети 255.255.255.0

option subnet-mask 255.255.255.0;

# установка домена по умолчанию и сервера NIS, если таковой используется

option nis-domain "domain.ua";

option domain-name "domain.ua";

# адрес DNS-сервера, который будут использовать клиенты

option domain-name-servers 192.168.1.1;

# диапазон адресов для клиентов

# 192.168.1.50-192.168.1.250

range 192.168.1.10 192.168.1.254;

# сказать клиентам, чтобы отдали адрес через 21600 секунд (6 часов)

# после получения адреса

default-lease-time 21600;

# забрать адрес самому через 28800 секунд (8 часов)

max-lease-time 28800;

}

Теперь будем постепенно усложнять конфигурацию. Каждая сетевая карточка имеет уникальный собственный МАС-адрес. Допустим, вам нужно связать какой-то МАС-адрес с определенным IP-адресом. Для этого воспользуйтесь конструкцией host:

host myhost {

hardware ethernet xx:xx:xx:xx:xx:xx;

fixed-address 192.168.1.9;

}

Ее нужно вставить в ту конструкцию подсети subnet, которой принадлежит назначаемый IP-адрес. Данная конструкция означает, что компьютеру с аппаратным адресом хх:хх:хх:хх:хх:хх будет назначен IP-адрес 192.168.1.9. Например:

subnet 192.168.1.0 netmask 255.255.255.0 {

 # прочие опции

 # …

 #

 host myhost {

  hardware ethernet 00:40:C7:34:90:1E;

  fixed-address 192.168.1.9;

 }

}

Данный пример показывает, что аппаратному адресу 00:40:С7:34:90:1Е будет сопоставлен IP-адрес 192.168.1.9. Обратите внимание, что IP-адрес хоста myhost 192.168.1.9 относится к подсети 192.168.1.0 и включен в инструкцию subnet подсети 192.168.1.0, а не какой-либо другой сети!

Существует довольно удобная утилита для просмотра всех МАС-адресов сетевых адаптеров в вашей сети — программа TCPNetView. Эта программа разработана Александром Горлачем и загрузить ее вы можете по адресу http://www.enet.ru/~gorlach/netview/. Правда, есть одно «но»: эта программа работает под Windows. В любом случае, если вы будете использовать эту программу, при настройке сервера вам не придется подходить к каждому компьютеру, чтобы узнать его МАС-адрес. Существуют также и утилиты под Linux, способные показать сразу все МАС-адреса. Примером может послужить программа Trafshow, которую вы найдете на прилагаемом компакт-диске. Но по сравнению с Trafshow, TCPNetView несколько удобнее (см. рис. 8.4). 

Рис. 8.4. Программа TCPNetView

Теперь, предположим, что вам необходимо обеспечить поддержку WINS, а на вашей машине установлен сервер Samba. В этом случае в конструкцию subnet нужно включить следующие директивы:

option netbios-name-servers 192.168.1.1;

option netbios-dd-server 192.168.1.1;

option netbios-node-type 8;

Примечание. Служба WINS (Windows Internet Name Service) используется для разрешения (перевода) имен NetBIOS в IP-адреса. Сервер WINS — это усовершенствованный сервер имен NetBIOS, разработан Microsoft для снижения широковещательного трафика. Пакет Samba предназначен для использования протокола SMB (Server Message Block), который также еще называется протоколом NetBIOS. С помощью пакета Samba ваша машина, работающая подуправлением Linux, ничем не будет отличаться от рабочей станции или сервера сети Microsoft.

Вот практически и все. Правда, еще можно добавить пару незначительных опций:

# определяем широковещательный адрес

option broadcast-address 192.168.2.255;

# включаем IP-Forwarding

option ip-forwarding on;

# можно добавить глобальную опцию:

server-identifier server.domain.ua;

Как обычно, дополнительную информацию можно получить, введя команду man dhcpd.conf. При настройке клиентов Windows следует активизировать режим «Получить IP-адрес автоматически» в свойствах TCP/IP (рис. 8.5). А при настройке Linux с помощью конфигуратора netconf — включить режим DHCP (см. рис. 8.6). 

Рис.8.5. Настройка Windows-клиента

Рис. 8.6. Настройка Linux-клиента

Протокол DHCP подробно описан в RFC 1533, 1534, 1541, 1542, а протокол ВООТР описан в rfc 1532. Окончательный вариант конфигурационного файла приведен в листинге 8.9.

Листинг 8.9. Конфигурационный файл /etc/dhcpd.conf (окончательный вариант)

# Подсеть 192.168.1.0, маска сети 255.255.255.0

subnet 192.168.1.0 netmask 255.255.255.0 {

# маршрутизатор по умолчанию

option routers 192.168.1.1;

# маска подсети 255.255.255.0

option subnet-mask 255.255.255.0;

# установка домена по умолчанию и сервера NIS, если таковой используется

option nis-domain "domain.ua";

option domain-name "domain.ua";

# задание широковещательного адреса

option broadcast-address 192.168.2.255;

# включение IP-Forwarding

option ip-forwarding on;

# глобальная опция server-identifier:

server-identifier server.domain.ua;

# адрес DNS-сервера, который будут использовать клиенты

option domain-name-servers 192.168.1.1;

# диапазон адресов для клиентов

# 192.168.1.50-192.168.1.250 range

192.168.1.10 192.168.1.254;

# сказать клиентам, чтобы отдали адрес через 21600 секунд (6 часов)

# после получения адреса

default-lease-time 21600;

# забрать адрес самому через 28800 секунд (8 часов)

max-lease-time 28800;

option netbios-name-servers 192.168.1.1;

option netbios-dd-server 192.168.1.1;

option netbios-node-type 8;

# описание трех клиентов (dhcp50, dhcp51, dhcp52)

# и их аппаратных адресов

 host dhcp50 {

  hardware ethernet 00:40:C7:34:90:1E;

# обратите внимание на то, что вы должны использовать IP-адрес

# из указанного ранее диапазона адресов 192.168.1.50-250.

  fixed-address 192.168.1.50;

 }

 host dhcp51 {

  hardware ethernet 00:40:C7:34:90:1F;

  fixed-address 192.168.1.51;

 }

 host dhcp52 {

  hardware ethernet 00:40:C7:34:90:2A;

  fixed-address 192.168.1.52;

 }

}

Данный текст является ознакомительным фрагментом.