Ключевые слова:dhcp, (найти похожие документы)
From: Денис Колисниченко <dhsilabs@mail.ru.>
Date: Wed, 14 Apr 2006 18:21:07 +0000 (UTC)
Subject: Конфигурирование DHCP
Оригинал: http://dkws.narod.ru/linux/servers/dhcp.html
Впервые статья была опубликована в журнале "Системный администратор".
Если вы хотите подробно ознакомиться с настройкой DHCP, рекомендую
прочитать мою книгу "Linux-сервер своими руками"
Для чего нужен протокол 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.
Денис, в статье вы не написали какая версия DHCP (isc-dhcp3-server) на
какой версии Unix проводилось тестирование.
У меня FreeBSD 6.1 и DHCP (isc-dhcp3-server-3.0.3).
Файл конфигураций почти один в один, при старте ругается на отсутствие
параметра "ddns-update-style" и не запускается, но если данный параметр
внести "ddns-update-style ad-hoc;" , то ругается по другому:
Jan 18 16:16:06 route dhcpd: if Secureti.myhost.ru IN A rrset doesn't exist add Secureti.myhost.ru 300 IN A 192.200.1.28: connection refused.
Ругается, но работает.
Скажите пожалуйста, чего ему не нравится?
>Денис, в статье вы не написали какая версия DHCP (isc-dhcp3-server) на
>какой версии Unix проводилось тестирование.
>У меня FreeBSD 6.1 и DHCP (isc-dhcp3-server-3.0.3).
>Файл конфигураций почти один в один, при старте ругается на отсутствие
>параметра "ddns-update-style" и не запускается, но если данный параметр
>внести "ddns-update-style ad-hoc;" , то ругается по другому:
>Jan 18 16:16:06 route dhcpd: if Secureti.myhost.ru IN A rrset doesn't exist
>add Secureti.myhost.ru 300 IN A 192.200.1.28: connection refused.
>Ругается, но работает.
>Скажите пожалуйста, чего ему не нравится?
это значит, что у вас bind либо не поднят, либо не настроен соответствующим образом
стоит просто изменить строчку в конфиге на "ddns-update-style none;"
Дома у меня два ПК под ХP связаны в локальную сеть(нуль-хабным проводом). Подключаюсь в Интернет через ADSL-модем(USB). По-видимому драйвер модема запускает DHCP сервер, поскольку если подключение к Интернету есть, то на другой машине иконка подключения к интернету появляется автоматически. Если на другом ПК запустить Linux, то поймет ли Linux DHCP клиент - Windows DHCP сервер?
У меня стоит FreeBSD 6 ставлю
копирую в /usr/ports/distfiles/ файл dhcp-3.0.5.tar.gz
cd /usr/ports/net/isc-dhcp3-server
make install
установил.
pkg_info стоит isc-dhcp3-server-3.0.3
захожу в /usr/local/etc файла dhcpd.conf нет !
я его создаю конфигурирую так как описано в этой статье но при запуске
/etc/rc.d/init.d/dhcpd start
выдаёт : /usr/local/etc/dhcpd.conf line 15: une xpected end of file
Configuration file errors encountred -- exiting
у меня на машине стоит две сетевые карты rl0 и rl1 одна из них rl0 получает ip адрес от DHCP сервера
а вторую rl1 я хотел настроить чтобы она сама раздавала ip адреса гуру подскажите новичку в чём грех ?
Можно ли ограничить права IP адреса клиента в моей сети так, чтобы он не смог работать как прокси сервер? То есть я могу разрешить выход в интернет через мою сеть только для ОДНОГО компьютера клиента и не хочу, чтобы этим пользовались все клиенты его собственной офисной сети.
Всем привет,
а как указать что на интерфейсе eth0 будет подсеть 192.168.0.0
а на интерфейсе eth1 будет подсеть
192.168.1.0
?
P.S. я описал наличие двух подсетей с помощью subnet 192.168.0.0 и subnet 192.168.1.0
Но хосты подключенные в сеть 192.168.1.0 получают адреса подсети сеть 192.168.0.0