# dhcpd (Русский)

Ссылки по теме

- dhcpcd (Русский)

Эта страница нуждается в сопроводителе

Статья не гарантирует актуальность информации. Помогите русскоязычному сообществу поддержкой подобных страниц. См. Команда переводчиков ArchWiki

dhcpd – свободная реализация DHCP-сервера от Internet Systems Consortium. Он может использоваться, к примеру, на машине, выполняющей роль маршрутизатора для автоматической настройки подключаемых устройств локальной сети.

## Установка

Установите пакет dhcp, доступный в официальных репозиториях.

## Настройка

Присвойте статический адрес IPv4 тому сетевому интерфейсу, для которого вы хотите запустить DHCP-сервер (в наших примерах будет использоваться `eth0`). Обратите внимание, что у двух различных сетевых интерфейсов на одной машине не должны полностью совпадать первые три октета адреса.

    # ip link set up dev eth0
    # ip addr add 139.96.30.100/24 dev eth0 # произвольный адрес для примера

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

- `192.168/16` (подсеть `192.168.0.0`, маска подсети `255.255.0.0`)
- `172.16/12` (подсеть `172.16.0.0`, маска подсети `255.240.0.0`)
- `10/8` (для больших сетей; подсеть `10.0.0.0`, маска подсети `255.0.0.0`)

Смотрите также RFC 1918.

Чтобы настроить автоматическое присвоение статического IP при загрузке системы, смотрите Network configuration (Русский)#Статический IP-адрес.

Стандартный файл настроек `dhcpd.conf` содержит много незакомментированных примеров, поэтому следует переместить его в другое место, например

    # mv /etc/dhcpd.conf /etc/dhcpd.conf.example

и создать на его месте новый.

Минимальный файл настроек `dhcpd.conf` может выглядеть следующим образом:

    /etc/dhcpd.conf

    option domain-name-servers 8.8.8.8, 8.8.8.4;
    option subnet-mask 255.255.255.0;
    option routers 139.96.30.100;
    subnet 139.96.30.0 netmask 255.255.255.0 {
      range 139.96.30.150 139.96.30.250;
    }

Опция `domain-name-servers` содержит адреса DNS-серверов, которые передаются клиентам. В данном примере используются публичные DNS-сервера Google. Если в вашей подсети уже есть DNS-серверы (например, предоставленные провайдером), следует указать их адреса. Если на компьютере уже настроен собственный DNS-сервер, то укажите его адрес (т.е., `139.96.30.100` в нашем примере).

Опции `subnet-mask` и `routers` содержат маску подсети и список маршрутизаторов в этой подсети, соответственно. В большинстве случаев для небольших сетей подойдет маска `255.255.255.0`, а в качестве маршрутизатора используется та же машина, на которой настроен DHCP-сервер.

Блоки `subnet` содержат настройки для отдельных подсетей, которые сопоставляются сетевым интерфейсам, на которых запущен dhcpd. В примере определена одна подсеть `139.96.30.0/24`, для которой задан диапазон IP-адресов. Подключаемым клиентам будут присваиваться адреса из этого диапазона.

После завершения настройки запустите демон dhcpd с помощью службы `dhcpd4.service`; чтобы служба запускалась автоматически при загрузке системы, включите ее. Как это сделать вы можете найти на странице Systemd (Русский)#Использование юнитов.

Теперь для каждого компьютера, который подключается к интерфейсу `eth0`, будет присвоен IPv4-адрес из диапазона `139.96.30.150` – `139.96.30.250`.

## Советы и рекомендации

### Запуск на одном сетевом интерфейсе

Если ваш компьютер уже является частью нескольких сетей, может возникнуть ситуация, когда адреса будут выдаваться в том числе и компьютерам из другой сети. Это можно исправить настройкой dhcpd или создав специальный файл службы, который будет указывать, на каком конкретно интерфейсе будет работать dhcpd.

#### При помощи настройки dhcpd

Чтобы исключить конкретный интерфейс, в файле настроек создайте пустой блок `subnet` для этого интерфейса:

    /etc/dhcpd.conf

    # Исключить DHCP из демилитаризованной зоны (192.168.2.0/24)
    subnet 192.168.2.0 netmask 255.255.255.0 {
    }

#### При помощи файла службы

Стандартный файл службы `dhcpd4.service` запускает dhcpd на всех доступных интерфейсах. Если вам нужно запустить dhcpd лишь на одном интерфейсе, создайте следующий файл:

     /etc/systemd/system/dhcpd4@.service

    [Unit]
    Description=IPv4 DHCP server on %I
    Wants=network.target
    After=network.target

    [Service]
    Type=forking
    PIDFile=/run/dhcpd4.pid
    ExecStart=/usr/bin/dhcpd -4 -q -pf /run/dhcpd4.pid %I
    KillSignal=SIGINT

    [Install]
    WantedBy=multi-user.target

Теперь вы можете запустить dhcpd на одном конкретном интерфейсе, например `eth0`:

    # systemctl start dhcpd4@eth0.service

## Смотрите также

- dhcpcd

Categories:

- Networking (Русский)
- Русский