Андрей Смирнов
Время чтения: ~13 мин.
Просмотров: 13

Как поднять DHCP сервер на Linux

Протокол динамической конфигурации узлов (Dynamic Host Configuration Protocol, DHCP) — это сетевой протокол, используемый для автоматического получения узлами IP-адресов и сетевой конфигурации с сервера.

IP-адрес, выделенный DHCP-клиенту DHCP-сервером, находится в «аренде», время аренды может отличаться в зависимости от того, сколько времени клиенту требуется соединение или конфигурация DHCP.

Содержание

Как работает DHCP?

  • После загрузки подключенный к сети клиент (на котором настроено использование DHCP) отправляет DHCP-серверу пакет DHCPDISCOVER.
  • Получив пакет запроса DHCPDISCOVER, DHCP-сервер отвечает пакетом DHCPOFFER.
  • Клиент принимает пакет DHCPOFFER и отправляет серверу пакет DHCPREQUEST, подтверждая готовность принять сетевую конфигурацию, предоставленную в пакете.
  • Получив от клиента пакет DHCPREQUEST, сервер отправляет пакет DHCPACK, который разрешает клиенту использование выделенного IP-адреса.

В данном руководстве мы рассмотрим настройку DHCP-сервера в Ubuntu/Debian Linux, но большенство настроек будет работать и в других дистрибутивах. Для получения административных привилегий все команды будут выполняться через sudo.

Шаг 1: Установка DHCP-сервера

1. Для установки пакета DCHP-сервера, ранее известного как dhcp3-server, нужно выполнить следующую команду:

$ sudo apt install isc-dhcp-server

2. После завершения установки отредактируйте файл /etc/default/isc-dhcp-server для определения интерфейсов, которые будет использовать DHCPD для обработки DHCP-запросов, при помощи опции INTERFACES.

Например, если вам нужно, чтобы демон DHCPD прослушивал eth0, задайте следующее значение:

INTERFACES="eth0"

Для этого сетевого интерфейса нужно настроить статический IP-адрес.

Шаг 2: Настройка DHCP-сервера

  • параметры – указывают, как выполнять задание (например, на какое время выделять адрес), выполнять ли его вообще (например, выделять ли адреса неизвестным клиентам) или какие параметры сетевой конфигурации отправлять DHCP-клиенту.
  •  декларации – определяют топологию сети, описывают клиентов и предоставляемые им адреса, или применяют группу параметров к группе деклараций.

4. Для определения настроек DHCP-сервера откроем и отредактируем файл конфигурации:

$ sudo vi /etc/dhcp/dhcpd.conf

Установите в начале файла следующие глобальные параметры, они будут действовать для всех указанных ниже деклараций (измените их в соответствии с вашими задачами). Это имя домена domain-name, имена DNS-серверов domain-name-servers, время аренды по умолчанию в секундах default-lease-time (если клиент не запросил его сам), максимальное время аренды в секундах max-lease-time и параметр authoritative, означающий «авторитетность» сервера в сегменте сети. Данный параметр нужен на тот случай, если клиент запросит неправильный IP-адрес — в этом случае сервер ответит ему отказом и предложит получить новый адрес.

option domain-name "itproffi.lan";  option domain-name-servers ns1.itproffi.lan, ns2.itproffi.lan;  default-lease-time 3600;   max-lease-time 7200;  authoritative;

Обратите внимание, что перед некоторыми параметрами указано слово option, а перед некоторыми — нет. Это слово задает параметры, которые передаются клиенту в сетевой конфигурации.

5. Теперь нужно указать подсеть, в нашем примере мы будем использовать DHCP в локальной сети 192.168.10.0/24.

subnet 192.168.10.0 netmask 255.255.255.0 {            option routers 192.168.10.1;            option subnet-mask 255.255.255.0;            option domain-search "itproffi.lan";            option domain-name-servers 192.168.10.1;            range 192.168.10.10 192.168.10.100;            range 192.168.10.110 192.168.10.200;  }

Здесь мы использовали следующие параметры:

routers — IP-адрес маршрутизатора по умолчаниюsubnet-mask — маска подсетиdomain-search — имя доменаdomain-name-servers — имена DNS-серверовrange — диапазон IP-адресов, выделяемый клиентам (можно указывать несколько диапазонов, но обязательно указать хотя бы один)

Шаг 3: Настройка статических IP-адресов для машин клиентов

6. Для выделения конкретным клиентам фиксированного (статического) IP-адреса нужно добавить в файл конфигурации секции следующего вида, где явно указаны MAC-адрес и статически выделяемый IP-адрес:

host centos-node {        hardware ethernet 00:f0:m4:6y:89:0g;        fixed-address 192.168.10.105;  }    host fedora-node {         hardware ethernet 00:4g:8h:13:8h:3a;         fixed-address 192.168.10.106;  }

7. Запустим службу DHCP и установим ее автоматический запуск при загрузке:

———— SystemD ————

$ sudo systemctl start isc-dhcp-server.service  $ sudo systemctl enable isc-dhcp-server.service

———— SysVinit ————

$ sudo service isc-dhcp-server.service start  $ sudo service isc-dhcp-server.service enable

8. Далее нужно создать правило для службы DHCP в брандмауэре (Демон DHCPD прослушивает UDP-порт 67):

$ sudo ufw allow 67/udp  $ sudo ufw reload  $ sudo ufw show

Шаг 4: Настройка машин клиентов

9. Теперь можно настроить клиентские компьютеры в сети для автоматического получения IP-адресов от DHCP-сервера.

Отредактируйте файл конфигурации интерфейса Ethernet на клиентской машине (обратите внимание на имя/номер интерфейса):

$ sudo vi /etc/network/interfaces

Укажите следующие опции:

auto eth0  iface eth0 inet dhcp

Сохраните и закройте файл, а затем перезапустите сетевые службы или перезагрузите систему:

———— SystemD ————

$ sudo systemctl restart networking

———— SysVinit ————

$ sudo service networking restart

Если все настроено правильно, клиентская машина должна автоматически получать IP-адреса от DHCP-сервера.

Настройка DHCP-сервера завершена. Более подробную информацию о dhcpd и dhcpd.conf с описанием всех возможных опций можно получить в соответствующих man-страницах:

$ man dhcpd  $ man dhcpd.conf

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Настройка GNU/Linux Debian

DHCP реализован в Debian в виде двух частей: серверной (dhcp3-server) и клиентской (dhcp3-client). Серверная часть отвечает за назначение и отзыв IP-адресов клиентам, при входе и выходе из сети. Клиентская часть запускается на стороне клиента и отвечает за получение IP-адреса по этому протоколу.

Проверить какие пакеты DHCP установлены можно с помощью команды dpkg:

$ dpkgl ‘*dhcp*’ или dpkgl | grepdhcp

Как видим из примера, у нас установлены два пакета dhcp3-client и dhcp3-common. Устанавливаем пакет dhcp3-server:

# aptitudeinstalldhcp3-server

Во время установки появится предупреждение о том, что сервер не является официальным и нужно сделать его таковым, изменив параметр authoritative. Настраивается сервер с помощью конфигурационного файла /etc/dhcp3/dhcpd.conf. При запуске DHCP – сервера происходит выделение IP – адресов согласно содержащемся установкам в данном файле. Выделенные адреса регистрируются в /var/lib/dhcp3/dhcpd.leases. После внесения изменений в файл конфигурации, требуется перезапустить dhcp3-server. Делается это следующим образом:

# /etc/init.d/dhcp3-server restart. Можно дать две команды: сначала

# /etc/init.d/dhcp3-server stop, а затем

# /etc/init.d/dhcp3-server start.

В файле dhcpd.confможет присутствовать несколько конструкций subnet. Если сервер обслуживает несколько сетей и содержит несколько сетевых карт, для каждой из карт должна быть указана подобная конструкция. То же самое необходимо сделать, если на компьютере установлена всего одна сетевая карта, которая связана с несколькими логическими подсетями. Длительность аренды по умолчанию defaultleasetimeсоставляет 259200 секунд, или трое суток. Если клиент запросит более длительную аренду, сервер будет исходить из параметра maxleasetime. В данном случае оно равно 518400 секунд, или шести суткам. Можно увеличивать или уменьшать приведённые здесь значения в зависимости от собственных потребностей. Малая длительность аренды снижает работоспособность сети при выходе сервера DHCP из строя и увеличивает нагрузку на сеть за счёт различных DHCP запросов. Слишком большая длительность аренды опасна тем, что имеющиеся в наличии IP – адреса будут исчерпаны. Такая ситуация возможна, если компьютеры будут включаться на короткое время при этом DHCP – сервер будет хранить информацию об аренде адресов, которые на самом деле на используются. Чтобы связать MAC – адрес с IP – адресом, используется следующая конструкция:

host knop {

hardware ethernet 00:00:86:5E:D0:73;

fixed-address 192.168.123.22;

}

Эта конструкция начинается с ключевого слова host, затем следует дополнительная опция knop – имя компьютера (клиента), для которого создаётся резервирование. Многострочные директивы в файле dhcpd.conf заключаются в фигурные скобки. В фигурных скобках указаны два параметра. Первый из них (hardware) задаёт тип сетевого интерфейса и MAC – адрес. В нашем примере содержится запись для Ethernet – карты, а при работе в сети другого типа, задаётся другой тип сетевого устройства. Например, для сети Token Ring следует указать ключевое слово token-ring. Второй параметр (fixedaddress) определяет IP – адрес, выделяемый клиенту. Этот адрес должен принадлежать сети, которую обслуживает DHCP сервер, и должен лежать за пределами диапазона, определённого с помощью параметра range. Эти строки вставляются в ту конструкцию подсети subnet, которой принадлежит назначаемый IP – адрес. Для корректной работы с клиентами под управлением Windows следует включить поддержку WINS. Следует добавить к глобальным опциям следующие строки:

option netbios-name-servers 192.168.123.2;

option netbios-dd-server 192.168.123.2;

optionnetbiosnodetype 8;

Параметр netbiosnodetype сообщает клиенту, должен ли тот реализовывать широковещательный принцип преобразования адресов или обращаться к серверу WINS. Число 8 означает, что клиент в первую очередь должен обратиться к серверу WINS, а лишь затем (в случае неудачи) использовать широковещательное преобразование. В большинстве сетей содержащих сервер WINS указывается значение 8, поскольку при этом снижается трафик сети и обеспечивается достаточная надёжность. Некоторые дополнительные параметры:

Параметр optionipforwarding включает IP – форвардинг. Можно добавить глобальный параметр server identifier, который идентифицирует наш сервер. Следующая строка сообщает об отключении поддержки DDNS. В нашем случае она не нужна: ddns-update-style none;.

Параметр журнала сообщений: log-facility local7;. По умолчанию, сообщения DHCP – сервера находятся в системном журнале /var/log/syslog. Эти сообщения можно перенаправить в отдельный журнал. Делается это следующим образом: создаём отдельный файл журнала

# touch /var/log/dhcpd.log, а затем в файл /etc/syslog.conf добавляем строку local7.* /var/log/dhcpd.conf и сохраняем его.

Ниже приведён листинг нашего конфигурационного файла dhcpd.conf

# Глобальные опции, применяемые для всех подсетей

#

# Указывает, что сервер является официальным. Он сможет отправлять сообщение # DHCPNACK. Например, если компьютер перемещён из другой подсети.

authoritative;

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

option domain-name «aitishnik.local»;

# Адреса DNS серверов (через запятую)

option domain-name-servers 213.177.97.1, 213.177.97.201;

# Время аренды IP – адреса по умолчанию (в секундах)

default-lease-time 259200;

# Максимальное время аренды IP – адреса по умолчанию (в секундах)

max-lease-time 518400;

# Адрес NetBIOS сервера

option netbios-name-servers 192.168.123.2;

# Адрес сервера NBDD

option netbios-dd-server 192.168.123.2;

# Тип преобразования адресов

option netbios-node-type 8;

# Включение IP — форвардинга

option ip-forwarding on;

# Идентификатор сервера

Server-identifier debian.aitishnik.local;

# Поддержка DDNS

ddns-update-style none;

# Журнал сообщений

log-facility local7;

#

# Настройки для нашей сети

#

# Указываем сетевой адрес и маску подсети.

subnet 192.168.123.0 netmask 255.255.255.0 {

# Шлюз по умолчанию

option routers 192.168.123.1;

# Широковещательный адрес

option broadcast-address 192.168.123.255;

# Резервирование для компьютера knop

host knop {

hardware ethernet 00:00:86:5E:D0:73;

fixed-address 192.168.123.22;

}

# Диапазон из которого будут назначаться IP – адреса клиентов

range 192.168.123.10 192.168.123.20;

# Если DHCP сервер обслуживает несколько подсетей и для каждой требуется свои

# настройки как то: время аренды, имя домена, сервер DNS, то их можно указать

# в секции для своей подсети.

# option domain-name-servers 213.177.96.1,213.177.97.1;

# option domain-name «aitishnik.local»;

# default-lease-time 600;

# max-lease-time 7200;

Помните, что у нас вы можете не только купить готовый сайт или заказать его разработку, но и подобрать подходящий тариф поддержки сайта, заказать продвижение сайта в поисковых системах, а так же зарегистрировать домен в одной из двухсот доменных зон и выбрать недорогой тариф хостинга! Айтишник РУ

Об авторе:

Zolkin.jpgМеня зовут Андрей Золкин. Из более, чем пятнадцати лет работы в сфере информационных технологий, десять лет работаю с системами, базирующимися на открытом исходном коде. На страницах сайта Aitishnik.Ru веду блоги по CMC Joomla и Debian GNU/Linux.

Ещё статьи о Debian

    • Настройка FTP сервера. Более сложная конфигурация…

      b_48_48_314_ftp1.pngРассмотрим более сложную конфигурацию ftp сервера: анонимные пользователи всё так же имеют доступ только на чтение. Локальные пользователи не используются. Вместо них используются виртуальные пользователи, учётные записи которых хранятся…

    • Интерактивный режим aptitude

      b_48_48_315_aptitude-int.pngВ первой части статьи рассказывалось об управлении пакетами с помощью aptitude в режиме командной строки. Теперь рассмотрим интерактивный режим этой программы. Управление программой производится с клавиатуры. Для входа в интерактивный…

    • Как обновить Debian 6 Squeeze до Debian 7 Wheezy

      b_48_48_155_Debian7_64.pngПрошло более двух месяцев с момента выхода новой стабильной версии операционной системы Debian GNU/Linux – Debian 7 (Wheezy). За это время были исправлены ошибки и даже вышла новая версия – 7.1. А это значит, что теперь можно и…

    • Настройка DHCP в Debian 5 (Lenny)

      b_48_48_67_dhcp.pngDHCP реализован в Debian в виде двух частей: серверной (dhcp3-server) и клиентской (dhcp3-client). Серверная часть отвечает за назначение и отзыв IP-адресов клиентам, при входе и выходе из сети. Клиентская часть запускается на стороне…

    • SSH Подключение с использованием открытого ключа…

      b_48_48_271_open-key.pngДля подключения с авторизацией по открытому ключу сначала нужно сгенерировать секретный ключ на стороне клиента. Делаем это с правами обычного пользователя: $ ssh-keygen –t rsa В процессе генерации пары ключей сначала будет предложено ввести желаемое название…

    • Настройка обновлений в Debian

      b_48_48_71_update.jpgПосле установки Debian Linux и настройки сети я рекомендую приступить к настройке обновлений. Для обновления и установки пакетов в Debian используются утилиты apt и aptitude. Независимо от того, какой из этих утилит Вы будете…

ubuntu-logo.png

Зачастую в больших сетях для упрощения работы с добавлением новых компьютеров и других устройств в сеть используют протокол динамического выделения адресов — DHCP. Это значительно упрощает настройку оборудования и экономит огромное количество времени. Используя DHCP нам не нужно производить настройку сети на каждом отдельном устройстве, нужно лишь подключить устройство к сети и DHCP сервер сделает все настройки автоматически. Каждый домашний WiFi роутер имеет в себе встроенный DHCP сервер, поэтому вам не нужно каждый раз при подключении к разным роутерам прописывать все настройки вручную, роутер делает это за вас.

DHCP сервер может автоматически присвоить клиенту:

  • Адрес ip;
  • Маску подсети;
  • IP адрес шлюза;
  • IP адрес DNS сервера;

В отдельных случаях:

  • Имя хоста;
  • Имя домена;
  • Адрес серверов времени(NTP);

Преимущество использования DHCP сервера заключается в том, что при огромных размерах сети в несколько тысяч устройств, её будет очень удобно и почти безболезненно настраивать. Представьте себе, если в сети нужно поменять ip адреса на персональных компьютерах сотрудников, принтерам выдать иные адреса, управляемому сетевому оборудованию еще назначить и свои. При размерах сети в несколько тысяч устройств, ручная настройка отняла бы у вас огромное количество времени. Другое дело когда в сети есть настроенный DHCP сервер, который выполнить настройку за вас и на это потребуется всего несколько минут. В дополнение к этому, сервер поддерживает возможность резервирования адресов, таким образом если клиенту(компьютеру,принтеру,коммутатору) нужно назначить фиксированный адрес, мы можем это указать в настройках DHCP сервера и при следующем запросе, клиент получит нужный ему адрес.

Установка и настройка DHCP сервера

В Ubuntu установка и настройка DHCP сервера выполняется всего в несколько шагов, быстро и продуктивно. Для того, чтобы начать использовать сервер нужно установить программное обеспечение на компьютер, делается это при помощи команды:

sudo apt-get install isc-dhcp-server

Минимальная настройка DHCP сервера включает в себя редактирование только 2х файлов.

Первый файл который мы с вами отредактируем, это nano /etc/default/isc-dhcp-server и добавляем/редактируем всего одну строку:

INTERFACES="eth3"

где «eth3» интерфейс к которому подключаются клиенты с внутренней сети и который будет слушать DHCP;

Теперь собственно и сама настройка DHCP сервера. Открываем файл nano /etc/dhcp/dhcpd.conf и удаляем все содержимое. Сейчас мы с вами настроим сервер только для раздачи адресов всем устройствам, которые будут запрашивать у сервера адрес. Добавляем в файл строки:

default-lease-time 7200;  max-lease-time 43200;    subnet 192.168.0.0 netmask 255.255.255.0 {   range 192.168.0.100 192.168.0.200;   option routers 192.168.0.1;   option domain-name-servers 192.168.0.1;  }  

Разберем по-порядку строки которые мы внесли в этот файл:

  • default-lease-time — время аренды(в секундах) адреса у сервера, если клиент не запросил другое;
  • max-lease-time — максимальное время аренды адреса;
  • subnet — описывает сеть ip и её маску;
  • range — диапазон адресов с которых по запросу клиента будут предоставляться адреса;
  • optionrouters — адрес роутера. Это должен быть адрес интерфейса через который пользователи попадают в интернет.
  • optiondomain-name-servers — адрес DNS сервера. Указывает на то, что сервер расположен на этом же компьютере и слушает интерфейс с адресом 192.168.0.1

Роутером у нас должен выступать интерфейс который мы описали в файле INTERFACES="eth3"и там должен быть назначен адрес который мы описали в настройках DHCP сервера. Если у вас не установлен DNS сервер, можете использовать сервер от вашего ISP провайдера или публичные от google или yandex.

Для управления DHCP сервером используются команды:

  • /etc/init.d/isc-dhcp-server start — запуск сервера;
  • /etc/init.d/isc-dhcp-server stop — остановка сервера;
  • /etc/init.d/isc-dhcp-server restart — перезапуск сервера;

Можно использовать команду service isc-dhcp-server {start|stop|restart}.

Если у вас возникнут вопросы по настройке или установке оставляйте ваши комментарии.

Так же можете почитать, как настроить локальную сеть в Ubuntu

Используемые источники:

  • https://itproffi.ru/nastrojka-dhcp-servera-v-linux/
  • https://www.aitishnik.ru/linux/debian-dhcp.html
  • https://sysadmin-note.ru/ustanovka-i-nastrojka-dhcp-servera-v-ubuntu/

Рейтинг автора
5
Подборку подготовил
Максим Уваров
Наш эксперт
Написано статей
171
Ссылка на основную публикацию
Похожие публикации