# Настройка DHCP сервера (isc-dhcp-server)

## Debian/Ubuntu

### Установка сервера DHCP <a href="#ustanovka-servera-dhcp" id="ustanovka-servera-dhcp"></a>

Прежде чем приступить к установке DHCP-сервера, сначала обновите пакеты, выполнив следующую команду в Терминале:

```bash
sudo apt-get update
```

Затем выполните следующую команду в Терминале для установки DCHP-сервера:

```bash
sudo apt-get install isc-dhcp-server -y
```

<figure><img src="https://g-soft.info/wp-content/uploads/2022/09/pasted-1010.png" alt=""><figcaption></figcaption></figure>

Подождите некоторое время до завершения установки.

### Настройка сервера DHCP <a href="#nastroyka-servera-dhcp" id="nastroyka-servera-dhcp"></a>

После завершения установки DHCP-сервера перейдем к его настройке. IP-адрес нашего DHCP-сервера - 192.168.153.141. Чтобы узнать IP-адрес вашего DHCP-сервера, введите следующую команду в терминале:

```bash
ip a
```

<figure><img src="https://g-soft.info/wp-content/uploads/2022/09/pasted-1011.png" alt=""><figcaption></figcaption></figure>

Файл конфигурации DHCP находится по адресу **/etc/dhcp/dhcpd.conf**.

Прежде чем приступить к настройке DHCP сервера, сделаем копию данного файла

```
cp /etc/dhcp/dhcpd.conf /etc/dhcp/dhcpd.backup
cat /dev/null > /etc/dhcp/dhcpd.conf
```

&#x20;Теперь приступим к настройке сервера, выполнив следующую команду в Терминале

```bash
sudo nano /etc/dhcp/dhcpd.conf
```

```
subnet 192.168.38.0 netmask 255.255.255.0 {
 range 192.168.38.100 192.168.38.254;
 option subnet-mask 255.255.255.0;
 option broadcast-address 192.168.38.255;
 option domain-name-servers 8.8.8.8, 8.8.4.4;
 option domain-name "workgroup";
 option routers 192.168.38.1;
 default-lease-time 7200;
 max-lease-time 480000;
 }
```

*Все строки параметров в файле конфигурации dhcp заканчиваются точкой с запятой (;)*. Некоторые параметры могут иметь не одно значение, например, domain-name-servers,  у которого два IP-адреса, разделенные запятой. Строки, начинающиеся с ‘#’, являются комментариями и не обрабатываются сервером dhcp.

Некоторые общие параметры сервера DHCP:

**subnet**— Параметр объявляет подсеть (в нашем случае 192.168.38.0 с маской 255.255.255.0)

**range** – Диапазон выдаваемых адресов ( от 192.168.38.100 до 192.168.38.254).

**option subnet-mask** – Маска сети. ( 255.255.255.0)

**option broadcast-address –** Широковещательный адрес. (192.168.38.255)

**domain-name-servers** – Адреса серверов DNS. (8.8.8.8, 8.8.4.4)

**option domain-name  –** Доменное имя.(workgroup)

**option routers** – Определяет IP-адрес вашего шлюза или точки выхода в сеть.(192.168.38.1)

После того как вы отредактировали основной файл конфигурации и объявили  диапазоны IP, откройте файл **/etc/default/isc-dhcp-server** и замените параметр ***INTERFACESv4*** на имя сетевого интерфейса, который смотрит внутрь сети. Чтобы узнать его имя воспользуйтесь командами  **ipconfig** или **ip.**

```
INTERFACESv4 = "ens33"
```

<figure><img src="https://1475196942-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FUQ5Utaeg7lWvTKSyoVP7%2Fuploads%2Fm8VDFp6TjULVqqVz8LhJ%2Fimage.png?alt=media&#x26;token=be4d3373-753b-49e8-95cf-0bc1d6b5dc40" alt=""><figcaption></figcaption></figure>

Наконец, после внесения всех изменений перезапустите сервер dhcp, чтобы применить новую конфигурацию и проверить статус службы, выполнив следующие команды:

```
systemctl restart isc-dhcp-server
```

```
systemctl status isc-dhcp-server
```

<figure><img src="https://1475196942-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FUQ5Utaeg7lWvTKSyoVP7%2Fuploads%2FvXqtQU4CP7aEnGCVYnWR%2Fimage.png?alt=media&#x26;token=893bd0f9-f317-43be-ade6-11bfc5449a45" alt=""><figcaption></figcaption></figure>

### Глобальная конфигурация DHCP <a href="#globalnaya-konfiguratsiya-dhcp" id="globalnaya-konfiguratsiya-dhcp"></a>

Ниже приведены основные шаги, необходимые для настройки глобальных параметров для установки DHCP-сервера (в файле **/etc/dhcp/dhcpd.conf**).

1\. Чтобы задать время аренды по умолчанию и максимальное время аренды, найдите параметры default-lease-time и max-lease-time в файле config и измените их значения.

```
default-lease-time 600;
max-lease-time 7200;
```

2. Чтобы сделать DHCP-сервер официальным DHCP-сервером для клиентов, откомментируйте следующую строку в конфигурационном файле (убрав символ #):

```
authoritative;
```

Это базовая конфигурация, необходимая для запуска DHCP-сервера. После завершения работы сохраните и закройте конфигурационный файл.

### Настройка DHCP-сервера с резервированием IP-адреса. <a href="#configuring-dhcp-server-to-deliver-reserved-ip-address" id="configuring-dhcp-server-to-deliver-reserved-ip-address"></a>

Часто возникает необходимость зарезервировать за устройством (сервером, принтером и т.д.) постоянный IP-адрес.  В этом случае вам нужно знать его MAC- адрес.

```
nano /etc/dhcp/dhcpd.conf
```

Пример резервирования IP-адреса  192.168.38.5 за компьютером SERVER:

```
subnet 192.168.38.0 netmask 255.255.255.0 {
range 192.168.38.100….
.......................................... 
host SERVER {
  hardware ethernet 08:60:6e:d6:5e:ff;
  fixed-address 192.168.38.5;}
}
```

После того, как вы внесли изменения в конфигурационный файл, перезапустите сервер DHCP.

Остальные настройки вы сможете изучить в конфиге, резервную копию которого мы сделали вначале, там закомментированные строки имеют описание.

### Управление Службой DHCP <a href="#upravlenie-sluzhboy-dhcp" id="upravlenie-sluzhboy-dhcp"></a>

Наконец, после внесения всех изменений перезапустите сервер dhcp, чтобы применить новую конфигурацию и проверить статус службы, выполнив следующие команды:

```
systemctl restart isc-dhcp-server
```

```
systemctl status isc-dhcp-server
```

Ниже приведен снимок экрана, показывающий состояние DHCP-сервера. Вы можете увидеть активный (работающий), выделенный зеленым цветом, подтверждающий, что DHCP-сервер работает нормально:

<figure><img src="https://g-soft.info/wp-content/uploads/2022/09/pasted-1014.png" alt=""><figcaption></figcaption></figure>

Есть еще несколько команд, которые мы можем использовать для запуска, остановки и перезапуска службы DHCP.

> Внимательно проверяйте наличие точки с запятой в конце строк конфигурации, в противном случае может возникнуть ошибка запуска isc-dhcp-server

<figure><img src="https://g-soft.info/wp-content/uploads/2022/09/pasted-1015-1024x170.png" alt=""><figcaption></figcaption></figure>

Чтобы запустить службу DHCP, выполните следующую команду в терминале:

```bash
sudo systemctl start isc-dhcp-server.service
```

Чтобы остановить службу DHCP, выполните следующую команду в Терминале:

```bash
sudo systemctl stop isc-dhcp-server.service
```

Чтобы перезапустить службу DHCP, выполните следующую команду в Терминале:

```bash
sudo systemctl restart isc-dhcp-server.service
```

## Настройка клиента DHCP <a href="#nastroyka-klienta-dhcp" id="nastroyka-klienta-dhcp"></a>

Нам потребуется настроить сетевые параметры клиентского компьютера для получения IP-адреса от DHCP-сервера. Здесь мы будем использовать другой Ubuntu 18.04 LTS в качестве клиентского компьютера.

На клиентском компьютере откройте приложение Настройки из меню Dash в Ubuntu.

[![settings](https://g-soft.info/wp-content/uploads/2022/09/pasted-264.png)](https://g-soft.info/wp-content/uploads/2022/09/pasted-264.png)

Затем выберите вкладку Сеть в левой панели приложения Настройки. Затем откройте настройки адаптера, нажав на значок шестеренки перед ним. Убедитесь, что он включен.

[![Настройка DHCP](https://g-soft.info/wp-content/uploads/2022/09/pasted-1016.png)](https://g-soft.info/wp-content/uploads/2022/09/pasted-1016.png)

Откроется окно настроек адаптера. Выберите вкладку IPv4 в верхнем меню. Затем выберите опцию Автоматически (DHCP). Затем нажмите Применить, чтобы сохранить изменения.

[![IPv4 > Автоматически (DHCP)](https://g-soft.info/wp-content/uploads/2022/09/pasted-1017.png)](https://g-soft.info/wp-content/uploads/2022/09/pasted-1017.png)

Затем перезапустите сетевые службы, выполнив следующую команду в Терминале:

```bash
sudo systemctl restart NetworkManager.service
```

Теперь запустите Терминал и введите следующую команду, чтобы найти IP-адрес системы.

```bash
ip a
```

Проверьте конфигурацию сети с помощью команды IP

Вы увидите IP-адрес, который будет из диапазона, определенного нами в конфигурации DHCP-сервера. Если клиент по-прежнему не получает IP-адрес от DHCP-сервера, перезагрузите систему.

### Список арендованных адресов <a href="#spisok-arendovannyh-adresov" id="spisok-arendovannyh-adresov"></a>

Чтобы узнать, какие адреса были назначены клиентам сервером DHCP, откройте машину, которую вы настроили как сервер DHCP, и введите следующую команду в Terminal:

```bash
dhcp-lease-list
```

Аренда - это период времени, на который IP-адрес назначается компьютеру.

<figure><img src="https://g-soft.info/wp-content/uploads/2022/09/pasted-1018.png" alt=""><figcaption></figcaption></figure>

Из этого списка вы можете убедиться, что наш DHCP клиент с MAC: 00:0c:29:4b:f8:15 получил IP адрес 192.168.153.141 от DHCP сервера.

## CentOS/Fedora

### Установка DHCP-сервера

1. Установка DHCP довольно проста, достаточно всего лишь ввести следующую команду:

`# yum -y install dhcp`

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

2. Откройте файл **/etc/sysconfig/dhcpd**, добавьте имя конкретного интерфейса в список DHCPDARGS, например, если интерфейс **eth0**, тогда добавьте:

`DHCPDARGS=eth0`

Сохраните этот файл и выйдите.

### Настройка DHCP-сервера

3. Первым шагом установки DHCP-сервера является создание файла конфигурации **dhcpd.conf**. Основной файл конфигурации DHCP обычно располагается по пути **/etc/dhcp/dhcpd.conf** (изначально пуст) и хранит всю сетевую информацию, отправляемую клиентам.

Тем не менее, существует другой пример файла конфигурации **/usr/share/doc/dhcp\*/dhcpd.conf.sample**, который является хорошей отправной точкой для настройки DHCP-сервера.

В файле конфигурации DHCP, существует два типа операторов:

* **parameters (параметры)** — этот оператор определяет как выполнять задачу, выполнять ли задачу вообще и какие параметры конфигурации сети отправлять DHCP-клиенту.
* **declarations (объявление)** — этот оператор определяет топологию сети, клиентов, предлагает адреса для клиентов и применяет группу параметров к группе объявлений. Поэтому начните с копирования примера файла конфигурации, в качестве основного файла конфигурации:

`# cp /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example /etc/dhcp/dhcpd.conf`

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

`# vi /etc/dhcp/dhcpd.conf`

В верхней части файла установите значения глобальных параметров, которые будут применяться ко всем подсетям:

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

5. Теперь определите подсеть; в этом примере мы настроим DHCP для 192.168.56.0/24 LAN-сети (не забывайте использовать параметры, которые применяются к вашему варианту):

```
subnet 192.168.56.0 netmask 255.255.255.0 {
          option routers                  192.168.56.1;
          option subnet-mask              255.255.255.0;
          option domain-search            "tecmint.lan";
          option domain-name-servers      192.168.56.1;
          range   192.168.56.10   192.168.56.100;
          range   192.168.56.120  192.168.56.200;
}
```

### Присвоение статического адреса DHCP-клиенту

Вы можете присвоить статический IP-адрес конкретному клиентскому компьютеру в сети, просто определите раздел, описанный ниже, в файле /etc/dhcp/dhcpd.conf, в котором необходимо указать MAC-адреса и фиксированный IP адрес для назначения:

```
host ubuntu-node {
      hardware  ethernet 00:f0:m4:6y:89:0g;
      fixed-address 192.168.56.105;
}

host fedora-node {
      hardware  ethernet 00:4g:8h:13:8h:3a;
      fixed-address 192.168.56.110;
}
```

Сохраните файл и закройте его.

Примечание: Вы можете узнать MAC адрес в Linux, используя следующую команду:

`# ifconfig -a eth0 | grep HWaddr`

6. Теперь запустите службу DHCP и включите параметр для её автоматического запуска со следующей загрузки системы, используя команды:

```
---------- На CentOS/RHEL 7 ----------
systemctl start dhcpd
systemctl enable dhcpd
---------- На CentOS/RHEL 6 ----------
service dhcpd start
chkconfig dhcpd on
```

7. Затем не забудьте разрешить службу DHCP (DHCPD-служба прослушивает порт 67/UDP), как показано ниже:

```
---------- На CentOS/RHEL 7 ----------
firewall-cmd --add-service=dhcp --permanent
firewall-cmd --reload
---------- На CentOS/RHEL 6 ----------
iptables -A INPUT -p tcp -m state --state NEW --dport 67 -j ACCEPT
service iptables save
```

### Настройка клиента DHCP

8. Теперь вы можете настроить своих клиентов в сети на автоматическое получение IP-адресов от DHCP-сервера. Войдите на клиентский компьютер и измените файл конфигурации интерфейса Ethernet следующим образом (не берите имя/номер интерфейса):

`# vi /etc/sysconfig/network-scripts/ifcfg-eth0`

Добавьте следующие строки:

```
DEVICE=eth0
BOOTPROTO=dhcp
TYPE=Ethernet
ONBOOT=yes
Сохраните файл и выйдите.
```

9. Также вы можете выполнить настройку на компьютере с помощью графического интерфейса (GUI), для этого установите Method на Automatic (DHCP), как показано на скриншоте ниже (Ubuntu 16.04 desktop).

![Установка DHCP в клиентской сети](https://www.tecmint.com/wp-content/uploads/2017/03/Set-DHCP-in-Client-Network.png)

10. Затем перезапустите сетевые службы следующим образом (вы также можете просто перезагрузить систему):

```
---------- На CentOS/RHEL 7 ----------
systemctl restart network
---------- На CentOS/RHEL 6 ----------
service network restart
```

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


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://antons-organization-1.gitbook.io/administrirovanie-linux/servisy-linux/protokol-dhcp/nastroika-dhcp-servera-isc-dhcp-server.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
