DHCP: различия между версиями
Bond (обсуждение | вклад) |
|||
Строка 1: | Строка 1: | ||
+ | ==Для чего нужен протокол 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 (см. рис. 1). А при настройке Linux с помощью конфигуратора netconf - включить режим DHCP (см. рис. 2). | ||
+ | |||
+ | Протокол 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; | ||
+ | } | ||
+ | } | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
==Настройка DHCP сервера== | ==Настройка DHCP сервера== | ||
Версия 13:19, 23 августа 2007
Содержание
Для чего нужен протокол 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 (см. рис. 1). А при настройке Linux с помощью конфигуратора netconf - включить режим DHCP (см. рис. 2).
Протокол 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; } }
Настройка DHCP сервера
Для правильной раздачи IP адресов в сети необходимо изменить файл dhcpd.conf. Открываем данный файл.
vim /etc/dhcp3/dhcpd.conf
и устанавливаем следующие параметры
default-lease-time 86400; #время аренды ip адреса по умолчанию max-lease-time 604800; #максимальное время аренды autoritative; #указываем, что сервер авторитативен для данной сети subnet 192.168.10.0 #для нашего случая (она подсеть) достаточно указать эту подсеть netmask 255.255.255.0 #продолжение секции { range 192.168.10.10 192.168.10.240; #диапазон выдаваемых ip адресов option subnet-mask 255.255.255.0; #маска подсети option broadcast-address 192.168.10.255; #широковещательный адрес option routers 192.168.10.1; #гейт }
после необходимо перезапустить dhcp3-server