DHCP (Dynamic Host Configuration Protocol) — это протокол, который дает возможность компьютерам в сети получать свои сетевые настройки у сервера. В сетевые настройки входит IP-адрес, маска подсети, адрес DNS сервера, шлюз по умолчанию (default gateway). Также DHCP может взаимодействовать с DNS сервером и динамически менять в нем имена хостов.
DHCP в Linux реализован в виде dhcpd и dhcpcd. Dhcpd (сервер) непосредственно отвечает за назначение настроек сети клиентам при входе и выходе их из сети. Dhcpc необходим на рабочих станциях для получения информации c сервера.
Настройка DHCP сервера
Если понадобится поднять DHCP-сервер на PCLinuxOS, делаем так:
1. Через пакетный менеджер Synaptic установите пакет dhcp-server.
2. Конфигурационным файлом для dhcpd является /etc/dhcpd.conf (возможно его придется создать вручную). При запуске DHCP-сервера происходит выделение IP-адресов согласно содержащимся в файле /etc/dhcp.conf установкам. Выделенные адреса dhcpd регистрирует в файле dhcpd.leases, который находится в каталоге /var/dhcpd.
3. Отконфигурируйте через Midnight Commander файл /etc/dhcpd.conf:
Допустим мы хотим, чтобы все хосты в сети 192.168.0.0/24 получали динамические IP в диапазоне от 192.168.0.128 до 192.168.0.254. Также нам нужно, чтобы машины в сети использовали по умолчанию шлюз 192.168.0.1 и DNS сервер 192.168.0.1. Кроме того нам нужно чтобы клиентская машина знала что она работает в домене mypclinuxos.local (у вас может быть любой другой: comp.local, home.local...).
Настройки такого сервера выглядят следующим образом:
ddns-update-style none;
# описание подсети, которая будет обслуживаться, указывается сетевой адрес и маска сети
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;
# адрес DNS сервера, который будут использовать клиенты
option domain-name-servers 192.168.0.1;
# устанавка домена по умолчанию
option domain-name "mypclinuxos.local";
# диапазон адресов для клиентов
range 192.168.0.128 192.168.0.254;
# сказать клиентам, чтобы перезапросили адрес через 21600 секунд (6 часов) после получения адреса
default-lease-time 21600;
# забрать адрес самому через 28800 секунд (8 часов)
max-lease-time 28800;
}
С такой настройкой компьютеры в сети будут получать адреса случайным образом в диапазоне с 192.168.0.128 по 192.168.0.254.
Если нужно, чтобы некоторые компьютеры в сети получали вместо случайных адресов только жестко закрепленный за ними статический адрес (в соответствии с аппаратным MAC-адресом сетевой карты), тогда используйте такую конфигурацию:
ddns-update-style none;
subnet 192.168.0.0 netmask 255.255.255.0
{
option routers 192.168.0.1;
option subnet-mask 255.255.255.0;
option domain-name-servers 192.168.0.1;
range 192.168.0.128 192.168.0.254;
host smith # Иван Иванов
{
hardware ethernet 00:0c:29:8b:02:e7;
fixed-address 192.168.0.5;
}
host neo # Николай Петров
{
hardware ethernet 00:22:22:22:22:22;
fixed-address 192.168.0.6;
}
}
В этом примере IP-адреса раздаются с привязкой к MAC-адресу сетевой карты. Сетевая карта с MAC 00:0c:29:8b:02:e7 всегда будет получать адрес 192.168.0.5, а сетевая карта с MAC 00:22:22:22:22:22 соответственно адрес 192.168.0.6, а остальные компьютеры в сети будут получать адреса случайным образом в диапазоне с 192.168.0.128 по 192.168.0.254. Если мы хотим чтобы IP-адреса получали только компьютеры, привязанные к MAC, тогда в данном примере нужно закомментировать (поставить знак #) строку range 192.168.0.128 192.168.0.254;.
4. Иногда при инсталляции не создается файл dhcpd.leases. Он нужен DHCPd для хранения информации о текущих выделенных адресах и представляет из себя обычный текстовый файл, который можно посмотреть во время работы DHCPd. Чтобы создать его наберите: touch /var/state/dhcp/dhcpd.leases Создастся пустой файл (нулевого размера). Вам не нужно изменять файл dhcpd.leases - это делает сам dhcpd. Если при его создании появилась ошибка, что он уже существует, просто игнорируйте ее и переходите к следующему шагу.
5. Запустите DHCP-сервер:
- service dhcpd start - запуск dhcpd-сервера.
- service dhcpd stop - остановка dhcpd-сервера.
- service dhcpd restart - перезапуск dhcpd-сервера.
Если не запустится командой service, запускайте через следующие скрипты:
- /etc/init.d/dhcpd start - запуск сервера.
- /etc/init.d/dhcpd stop - остановка сервера.
Или:
- /usr/sbin/dhcpd - dhcpd запустится на устройство eth0.
- /usr/sbin/dhcpd eth1 - dhcpd запустится на устройство eth1.
- /usr/sbin/dhcpd -d -f - режим отладки сервера для проверки его корректной работы.
6. Сделаем так, чтобы DHCP-сервер стартовал при загрузке компьютера:
- Добавьте команду dhcpd в /etc/rc.d/rc.local
Настройка динамического DHCP сервера, связанного с DNS
1. Работает связка DHCP с DNS так: машина в сети получает случайный IP-адрес и, при получении этого IP, DHCP сервер перенастраивает DNS сервер таким образом, чтобы у компьютеров в сети независимо от того, какой у них в данный момент IP, всегда было одно и тоже доменное имя.
2. Проверте, чтобы файлы /etc/named.conf, /var/named/mypclinuxos.reversed, /var/named/mypclinuxos.zone выглядели так, как описано здесь.
3. Теперь отконфигурируем файл /etc/dhcpd.conf:
subnet 192.168.0.0 netmask 255.255.255.0
{
option routers 192.168.0.1;
option subnet-mask 255.255.255.0;
option domain-name-servers 192.168.0.1;
range 192.168.0.128 192.168.1.254;
ddns-updates on;
ddns-domainname "mypclinuxos.local";
ddns-rev-domainname "in-addr.arpa";
option domain-name "mypclinuxos.local";
# "secret" нужно пересоздать с помощью команды dnssec-keygen, он должен быть ОДИНАКОВЫМ в этом файле, а также в /etc/named.conf, /etc/rndc.conf, /etc/rndc.key
key mykey {
algorithm hmac-md5;
secret "IriCelUSbPMypSjImBsiTHMauOumRPMkdBjoxVINAx0vxJZNRKGWzFCKibad";
};
zone mypclinuxos.local. {
primary 192.168.0.1;
key mykey;
}
zone 0.168.192.in-addr.arpa. {
primary 192.168.0.1;
key mykey;
}
host ivan # Иван Иванов
{
hardware ethernet 00:0c:29:8b:02:e7;
# option host-name "ivan";
ddns-hostname "ivan";
}
host nikolay # Николай Петров
{
hardware ethernet 00:22:22:22:22:22;
# option host-name "nikolay";
ddns-hostname "nikolay";
}
}
В этом примере машина с МАС-адресом 00:0c:29:8b:02:e7 получит имя ivan.mypclinuxos.local, а машина с МАС-адресом 00:22:22:22:22:22 получит имя nikolay.mypclinuxos.local. Имена остальных машин будут формироваться на основе запроса DHCP клиента.
4. Для того, чтобы DHCP сервер мог управлять DNS сервером, необходимо также отредактировать файл /etc/rndc.conf
key mykey {
algorithm hmac-md5;
secret "IriCelUSbPMypSjImBsiTHMauOumRPMkdBjoxVINAx0vxJZNRKGWzFCKibad";
};
options {
default-key mykey;
default-server 127.0.0.1;
default-port 953;
};
и файл /etc/rndc.key
key mykey {
algorithm hmac-md5;
secret "IriCelUSbPMypSjImBsiTHMauOumRPMkdBjoxVINAx0vxJZNRKGWzFCKibad";
};
5. После выполнения всех настроек перезапускаем DNS сервер и DHCP сервер.