> For the complete documentation index, see [llms.txt](https://antons-organization-1.gitbook.io/administrirovanie-linux/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://antons-organization-1.gitbook.io/administrirovanie-linux/servisy-linux/protokol-dhcp/nastroika-dhcp-servera-isc-dhcp-server.md).

# Настройка 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="/files/cp3H05OZKe9d4MDEOYVt" alt=""><figcaption></figcaption></figure>

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

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

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

<figure><img src="/files/wg7lyzVsbLHyZAYibzMh" 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-сервера.
