# DHCP

## Установка пакетов

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

{% hint style="info" %}
DHCP — протокол прикладного уровня модели TCP/IP, служит для автоматического назначения IP-адреса клиенту.
{% endhint %}

DHCP - это тоже пакет. Поэтому используем наш волшебный менеджер **dnf**.

```shell
dnf update
dnf install dhcp
```

## Настройка конфигурации DHCP

После успешной (?) установки перейдем к редактированию конфигурационного файла. Для этого будем использовать текстовый редактор Vim (ваш любимый).

```shell
vim /etc/dhcp/dhcpd.conf
```

И заполним его приблизительно так:

```
subnet 192.168.0.0 netmask 255.255.255.240 {
    range 192.168.0.6 192.168.0.15;
    option domain-name-servers 8.8.8.8;
    option domain-name "sgu-dev.ru";
    option routers 192.168.0.1;
    default-lease-time 600;
    max-lease-time 7200;
}

host server {
    hardware ethernet #MAC;
    fixed-address 192.168.0.2;
}
```

, где:

* _**subnet**_ - это наша подсеть
* _**netmask**_ - маска подсети
* _**range**_ - выдачи IP-адресов
* _**option domain-name-servers**_ - IP-адреса DNS серверов
* _**option domain-name**_ - суффик доменного имени
* _**option routers**_ - IP адрес шлюза по умолчанию
* _**default-lease-time**_ - время на которое клиент будет получать IP-адрес в аренду
* _**max-lease-time**_ - максимальное время на которое клиент будет получать IP-адрес в аренду
* **server** - имя узла, для которого будет зарезервирован адрес; #MAC - MAC-адрес; 192.168.0.2 - IP-адрес, который будет зарезервирован для узла.&#x20;

{% content-ref url="dhcp/kak-uznat-mac-adres-interfeisa" %}
[kak-uznat-mac-adres-interfeisa](dhcp/kak-uznat-mac-adres-interfeisa)
{% endcontent-ref %}

(Далеко мы корректно набиваем нужный текст с первого раза, поэтому лучше проверить насколько правильно был заполнен конфигурационный файл. Для этого в терминал введем команду `dhcpd -t -cf /etc/dhcp/dhcpd.conf`. )

Теперь укажем интерфейс, с которым будет работать наш DHCP.  Для этого откроем в Vim файл `vim /etc/sysconfig/dhcpd` и пропишем там строку:

```
DHCPDARGS=enp0s8
```

, где **enp0s8** - это имя нашего интерфейса.

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

Однако на этом наши приключения отнюдь не заканчиваются. Мы настроили сам DHCP, но интерфейс на который клиенты будут обращаться мы еще не затронули. Поэтому открываем файл, который отвечает за настройки интерфейса enp0s8: `vim /etc/sysconfig/network-scripts/ifcfg-enp0s8`. И заполняем его следующим образом:

```
TYPE="Ethernet"
DEVICE="enp0s8"
BOOTPROTO="static"
ONBOOT="yes"
IPADDR="192.168.0.1"
PREFIX="28"
```

Сохраняем изменения и смело перезагружаем NetworkManager: `systemctl restart NetworkManager`.

## Запуск службы DHCP

Теперь все что нам осталось сделать - запустить демона dhcpd и добавить его в автозагрузку. Для этого выполним такие команды:

{% hint style="info" %}
**Демон** - компьютерная программа в UNIX-подобных системах, запускаемая самой системой и работающая в фоновом режиме без прямого взаимодействия с пользователем.
{% endhint %}

```shell
systemctl start dhcpd
systemctl enable dhcpd
```

Теперь мы можем проверить, арендовал ли у нас уже кто-то IP-адрес с помощью команды `cat /var/lib/dhcpd/dhcpd.leases`. Если арендаторы есть, то тогда получим примерно такой результат:

<figure><img src="https://1276897210-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fmn57bVo9UmbtOy5AVs6M%2Fuploads%2FldljkgdpH1D4p3nhnw6u%2Fimage.png?alt=media&#x26;token=96aadec1-7890-4cb5-a6ef-b6d5f118f7d8" alt=""><figcaption></figcaption></figure>
