Рейтинг@Mail.ru
[Войти] [Зарегистрироваться]

Наши друзья и партнеры

UnixForum


Lines Club

Ищем достойных соперников.

Книги по Linux (с отзывами читателей)

Библиотека сайта или "Мой Linux Documentation Project"

Конфигурирование DHCP

Денис Колисниченко

Для чего нужен протокол DHCP? DHCP (Dynamic Host Configuration Protocol) - это протокол настройки узла, который автоматически назначает IP-адреса компьютерам. Протокол DHCP - это дальнейшее развитие протокола BOOTP. Последний разрешает бездисковым клиентам запускать и автоматически конфигурировать протокол TCP/IP.

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

Итак, установите пакет dhcp и включите поддержку динамических IP-адресов командой echo "1" > /proc/sys/net/ipv4/ip_dynaddr. Ясное дело, ничего не нужно делать, если поддержка динамических IP-адресов уже включена (в большинстве случаев это так). DHCP в Linux реализован в виде демона сервера (dhcpd) и демона клиента (dhcpcd). Демон сервера непосредственно отвечает за назначение IP-адресов клиентам, при входе и выходе их из сети. Клиетский демон, как явствует из названия, запускается на стороне клиента.

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

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

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

# описание сети, указывающее какая из подсетей будет
# обслуживаться. Указывается сетевой адрес и маска сети
subnet 192.168.0.0 netmask 255.255.255.0 { 
# маршрутизатор по умолчанию
option routers 192.168.0.1; 
# маска подсети 255.255.255.0 
option subnet-mask 255.255.255.0; 
# устанавка домена по умолчанию и сервера NIS, если таковой используется 
option nis-domain "domain.ru"; 
option domain-name "domain.ru"; 
# адрес DNS сервера, который будут использовать клиенты 
option domain-name-servers 192.168.0.1; 
# диапазон адресов для клиентов
# 192.168.0.10-192.168.0.250 
range 192.168.0.10 192.168.0.254; 
# сказать клиентам, чтобы отдали адрес через 21600 секунд (6 часов)
# после получения адреса 
default-lease-time 21600; 
# забрать адрес самому через 28800 секунд (8 часов) 
max-lease-time 28800; 
} 

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

host myhost { 
hardware ethernet xx:xx:xx:xx:xx:xx; 
fixed-address 192.168.0.9; 
}

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

subnet 192.168.0.0 netmask 255.255.255.0 {
	# прочие опции
	# …
	#
 	host myhost { 
 		hardware ethernet 00:40:C7:34:90:1E; 
 		fixed-address 192.168.0.9; 
 		      }
}

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

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

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

option netbios-name-servers 192.168.0.1; 
option netbios-dd-server 192.168.0.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. А при настройке Linux с помощью конфигуратора netconf - включить режим DHCP.

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

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

# Подсеть 192.168.0.0, маска сети 255.255.255.0
subnet 192.168.0.0 netmask 255.255.255.0 { 

# маршрутизатор по умолчанию
option routers 192.168.0.1; 

# маска подсети 255.255.255.0 
option subnet-mask 255.255.255.0; 

# устанаввка домена по умолчанию и сервера NIS, если таковой используется 
option nis-domain "domain.ru"; 
option domain-name "domain.ru"; 

# задание широковещательного адреса
option broadcast-address 192.168.0.255;

# включение IP-Forwarding
option ip-forwarding on;

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

# адрес DNS сервера, который будут использовать клиенты 
option domain-name-servers 192.168.0.1; 

# диапазон адресов для клиентов
# 192.168.0.10-192.168.0.254 
range 192.168.0.10 192.168.0.254; 

# сказать клиентам, чтобы отдали адрес через 21600 секунд (6 часов)
# после получения адреса 
default-lease-time 21600; 

# забрать адрес самому через 28800 секунд (8 часов) 
max-lease-time 28800; 
option netbios-name-servers 192.168.0.1; 
option netbios-dd-server 192.168.0.1;
option netbios-node-type 8;

#описание трех клиентов клиентов (dhcp50, dhcp51, dhcp52) и их аппаратных адресов
 	host dhcp50 { 
 		hardware ethernet 00:40:C7:34:90:1E; 
# обратите внимание на то, что вы должны использовать IP-адрес из указанного
# ранее диапазона адресов 192.168.0.10-254.
 		fixed-address 192.168.0.50; 
 		       }
 	host dhcp51 { 
 		hardware ethernet 00:40:C7:34:90:1F; 
 		fixed-address 192.168.0.51; 
 		       }
 	host dhcp52 { 
 		hardware ethernet 00:40:C7:34:90:2A; 
 		fixed-address 192.168.0.52; 
 		       }
}

Вот практически и все. Все ваши вопросы и комментарии буду рад выслушать по адресу dhsilabs@mail.ru.


Эта статья еще не оценивалась
Вы сможете оценить статью и оставить комментарий, если войдете или зарегистрируетесь.
Только зарегистрированные пользователи могут оценивать и комментировать статьи.

Комментарии отсутствуют