DHCP Server

VyOS использует Kea DHCP Server (начиная с версии 1.5.x) для предоставления DHCPv4 и DHCPv6 сервисов.

Важное изменение в VyOS 1.5.x

VyOS 1.5 перешел с ISC DHCP на Kea DHCP. Основные изменения:

ISC DHCP (VyOS 1.4):

set service dhcp-server shared-network-name LAN subnet 192.168.1.0/24 static-mapping host1 mac-address '00:50:56:00:00:01'

Kea DHCP (VyOS 1.5):

set service dhcp-server shared-network-name LAN subnet 192.168.1.0/24 static-mapping host1 mac '00:50:56:00:00:01'
set service dhcp-server shared-network-name LAN subnet 192.168.1.0/24 static-mapping host1 ip-address '192.168.1.10'

Ключевые отличия:

  • mac-addressmac
  • Требуется указание ip-address или hostname для статических маппингов

IPv4 DHCP Server

Базовая конфигурация

Минимальная конфигурация DHCP сервера:

set service dhcp-server shared-network-name LAN subnet 192.168.1.0/24 option default-router '192.168.1.1'
set service dhcp-server shared-network-name LAN subnet 192.168.1.0/24 option name-server '192.168.1.1'
set service dhcp-server shared-network-name LAN subnet 192.168.1.0/24 range 0 start '192.168.1.100'
set service dhcp-server shared-network-name LAN subnet 192.168.1.0/24 range 0 stop '192.168.1.200'
set service dhcp-server shared-network-name LAN subnet 192.168.1.0/24 subnet-id 1

Структура конфигурации

service dhcp-server
  └── shared-network-name <name>
      ├── authoritative
      ├── subnet <prefix>
      │   ├── subnet-id <id>
      │   ├── option
      │   │   ├── default-router <ip>
      │   │   ├── name-server <ip>
      │   │   ├── domain-name <domain>
      │   │   └── ...
      │   ├── range <id>
      │   │   ├── start <ip>
      │   │   └── stop <ip>
      │   ├── static-mapping <name>
      │   │   ├── mac <mac-address>
      │   │   ├── ip-address <ip>
      │   │   └── hostname <name>
      │   ├── lease <seconds>
      │   └── exclude <ip>
      └── ...

Shared Network

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

set service dhcp-server shared-network-name OFFICE subnet 192.168.1.0/24 subnet-id 1
set service dhcp-server shared-network-name OFFICE subnet 192.168.2.0/24 subnet-id 2

Параметр authoritative указывает, что сервер является авторитетным для этой сети:

set service dhcp-server shared-network-name LAN authoritative

Subnet Parameters

Subnet ID

Уникальный идентификатор подсети (обязательный параметр в Kea):

set service dhcp-server shared-network-name LAN subnet 192.168.1.0/24 subnet-id 1

Default Router (Gateway)

set service dhcp-server shared-network-name LAN subnet 192.168.1.0/24 option default-router '192.168.1.1'

DNS Servers

Один DNS сервер:

set service dhcp-server shared-network-name LAN subnet 192.168.1.0/24 option name-server '192.168.1.1'

Множественные DNS серверы:

set service dhcp-server shared-network-name LAN subnet 192.168.1.0/24 option name-server '192.168.1.1'
set service dhcp-server shared-network-name LAN subnet 192.168.1.0/24 option name-server '8.8.8.8'

Domain Name

set service dhcp-server shared-network-name LAN subnet 192.168.1.0/24 option domain-name 'example.local'

Domain Search

Список доменов для поиска:

set service dhcp-server shared-network-name LAN subnet 192.168.1.0/24 option domain-search 'example.local'
set service dhcp-server shared-network-name LAN subnet 192.168.1.0/24 option domain-search 'example.com'

Lease Time

set service dhcp-server shared-network-name LAN subnet 192.168.1.0/24 lease 86400

Значение в секундах. По умолчанию: 86400 (24 часа).

NTP Servers

set service dhcp-server shared-network-name LAN subnet 192.168.1.0/24 option ntp-server '192.168.1.1'
set service dhcp-server shared-network-name LAN subnet 192.168.1.0/24 option ntp-server '0.pool.ntp.org'

Address Ranges

Динамические диапазоны IP-адресов для автоматического назначения:

set service dhcp-server shared-network-name LAN subnet 192.168.1.0/24 range 0 start '192.168.1.100'
set service dhcp-server shared-network-name LAN subnet 192.168.1.0/24 range 0 stop '192.168.1.200'

Множественные диапазоны:

set service dhcp-server shared-network-name LAN subnet 192.168.1.0/24 range 0 start '192.168.1.100'
set service dhcp-server shared-network-name LAN subnet 192.168.1.0/24 range 0 stop '192.168.1.150'

set service dhcp-server shared-network-name LAN subnet 192.168.1.0/24 range 1 start '192.168.1.200'
set service dhcp-server shared-network-name LAN subnet 192.168.1.0/24 range 1 stop '192.168.1.250'

Excluded Addresses

Исключение адресов из распределения:

set service dhcp-server shared-network-name LAN subnet 192.168.1.0/24 exclude 192.168.1.1
set service dhcp-server shared-network-name LAN subnet 192.168.1.0/24 exclude 192.168.1.2
set service dhcp-server shared-network-name LAN subnet 192.168.1.0/24 exclude 192.168.1.3

Static Mappings

Статические привязки MAC-адресов к IP-адресам.

Базовый static mapping:

set service dhcp-server shared-network-name LAN subnet 192.168.1.0/24 static-mapping server1 mac '00:50:56:00:00:01'
set service dhcp-server shared-network-name LAN subnet 192.168.1.0/24 static-mapping server1 ip-address '192.168.1.10'

С hostname:

set service dhcp-server shared-network-name LAN subnet 192.168.1.0/24 static-mapping server1 mac '00:50:56:00:00:01'
set service dhcp-server shared-network-name LAN subnet 192.168.1.0/24 static-mapping server1 hostname 'server1.example.local'

С описанием:

set service dhcp-server shared-network-name LAN subnet 192.168.1.0/24 static-mapping server1 mac '00:50:56:00:00:01'
set service dhcp-server shared-network-name LAN subnet 192.168.1.0/24 static-mapping server1 ip-address '192.168.1.10'
set service dhcp-server shared-network-name LAN subnet 192.168.1.0/24 static-mapping server1 description 'Production Web Server'

Отключение static mapping:

set service dhcp-server shared-network-name LAN subnet 192.168.1.0/24 static-mapping server1 disable

DHCP Options

Bootfile Name (для PXE)

set service dhcp-server shared-network-name LAN subnet 192.168.1.0/24 option bootfile-name 'pxelinux.0'
set service dhcp-server shared-network-name LAN subnet 192.168.1.0/24 option bootfile-server '192.168.1.5'

TFTP Server

set service dhcp-server shared-network-name LAN subnet 192.168.1.0/24 option tftp-server-name '192.168.1.5'

WPAD URL

Web Proxy Auto-Discovery:

set service dhcp-server shared-network-name LAN subnet 192.168.1.0/24 option wpad-url 'http://wpad.example.local/wpad.dat'

Vendor Options

set service dhcp-server shared-network-name LAN subnet 192.168.1.0/24 vendor-option cisco option 150 value '192.168.1.5'

DHCPv6 Server

Базовая конфигурация DHCPv6

set service dhcp-server shared-network-name LANv6 subnet 2001:db8::/64 subnet-id 1
set service dhcp-server shared-network-name LANv6 subnet 2001:db8::/64 address-range start 2001:db8::100 stop 2001:db8::200
set service dhcp-server shared-network-name LANv6 subnet 2001:db8::/64 option name-server 2001:db8::1

Prefix Delegation

DHCPv6 Prefix Delegation для выдачи префиксов клиентам:

set service dhcp-server shared-network-name LANv6 subnet 2001:db8::/48 subnet-id 1
set service dhcp-server shared-network-name LANv6 subnet 2001:db8::/48 prefix-delegation prefix 2001:db8:1000::/52 delegated-length 56

Static Mappings для DHCPv6

set service dhcp-server shared-network-name LANv6 subnet 2001:db8::/64 static-mapping server1 identifier '00:01:00:01:12:34:56:78:9a:bc:de:f0:12:34'
set service dhcp-server shared-network-name LANv6 subnet 2001:db8::/64 static-mapping server1 ipv6-address '2001:db8::100'

Dynamic DNS (DDNS) Integration

Автоматическое обновление DNS записей при выдаче DHCP адресов:

set service dhcp-server dynamic-dns-update enable
set service dhcp-server dynamic-dns-update server ddns.example.local zone example.local
set service dhcp-server dynamic-dns-update server ddns.example.local key keyname

High Availability

Active-Active Mode

set service dhcp-server high-availability mode active-active
set service dhcp-server high-availability peer-address '192.168.1.2'
set service dhcp-server high-availability source-address '192.168.1.1'
set service dhcp-server high-availability name 'dhcp-ha-pair'

Active-Passive Mode

set service dhcp-server high-availability mode active-passive
set service dhcp-server high-availability peer-address '192.168.1.2'
set service dhcp-server high-availability source-address '192.168.1.1'
set service dhcp-server high-availability name 'dhcp-ha-pair'

Примеры конфигурации

Домашняя сеть

set service dhcp-server shared-network-name HOME subnet 192.168.1.0/24 option default-router '192.168.1.1'
set service dhcp-server shared-network-name HOME subnet 192.168.1.0/24 option name-server '192.168.1.1'
set service dhcp-server shared-network-name HOME subnet 192.168.1.0/24 option domain-name 'home.local'
set service dhcp-server shared-network-name HOME subnet 192.168.1.0/24 range 0 start '192.168.1.100'
set service dhcp-server shared-network-name HOME subnet 192.168.1.0/24 range 0 stop '192.168.1.200'
set service dhcp-server shared-network-name HOME subnet 192.168.1.0/24 subnet-id 1
set service dhcp-server shared-network-name HOME subnet 192.168.1.0/24 lease 86400

Корпоративная сеть с VLAN

# VLAN 10 - Management
set service dhcp-server shared-network-name MGMT subnet 192.168.10.0/24 option default-router '192.168.10.1'
set service dhcp-server shared-network-name MGMT subnet 192.168.10.0/24 option name-server '192.168.10.1'
set service dhcp-server shared-network-name MGMT subnet 192.168.10.0/24 option domain-name 'mgmt.corp.local'
set service dhcp-server shared-network-name MGMT subnet 192.168.10.0/24 range 0 start '192.168.10.100'
set service dhcp-server shared-network-name MGMT subnet 192.168.10.0/24 range 0 stop '192.168.10.200'
set service dhcp-server shared-network-name MGMT subnet 192.168.10.0/24 subnet-id 10
set service dhcp-server shared-network-name MGMT subnet 192.168.10.0/24 lease 3600

# VLAN 20 - Workstations
set service dhcp-server shared-network-name WORK subnet 192.168.20.0/24 option default-router '192.168.20.1'
set service dhcp-server shared-network-name WORK subnet 192.168.20.0/24 option name-server '192.168.20.1'
set service dhcp-server shared-network-name WORK subnet 192.168.20.0/24 option domain-name 'corp.local'
set service dhcp-server shared-network-name WORK subnet 192.168.20.0/24 range 0 start '192.168.20.50'
set service dhcp-server shared-network-name WORK subnet 192.168.20.0/24 range 0 stop '192.168.20.250'
set service dhcp-server shared-network-name WORK subnet 192.168.20.0/24 subnet-id 20
set service dhcp-server shared-network-name WORK subnet 192.168.20.0/24 lease 43200

Серверы со статическими адресами

set service dhcp-server shared-network-name SERVERS subnet 192.168.100.0/24 option default-router '192.168.100.1'
set service dhcp-server shared-network-name SERVERS subnet 192.168.100.0/24 option name-server '192.168.100.1'
set service dhcp-server shared-network-name SERVERS subnet 192.168.100.0/24 subnet-id 100

# Web Server
set service dhcp-server shared-network-name SERVERS subnet 192.168.100.0/24 static-mapping web1 mac '00:50:56:00:01:01'
set service dhcp-server shared-network-name SERVERS subnet 192.168.100.0/24 static-mapping web1 ip-address '192.168.100.10'
set service dhcp-server shared-network-name SERVERS subnet 192.168.100.0/24 static-mapping web1 hostname 'web1.corp.local'

# Database Server
set service dhcp-server shared-network-name SERVERS subnet 192.168.100.0/24 static-mapping db1 mac '00:50:56:00:01:02'
set service dhcp-server shared-network-name SERVERS subnet 192.168.100.0/24 static-mapping db1 ip-address '192.168.100.20'
set service dhcp-server shared-network-name SERVERS subnet 192.168.100.0/24 static-mapping db1 hostname 'db1.corp.local'

PXE Boot сервер

set service dhcp-server shared-network-name PXE subnet 192.168.50.0/24 option default-router '192.168.50.1'
set service dhcp-server shared-network-name PXE subnet 192.168.50.0/24 option name-server '192.168.50.1'
set service dhcp-server shared-network-name PXE subnet 192.168.50.0/24 option bootfile-name 'pxelinux.0'
set service dhcp-server shared-network-name PXE subnet 192.168.50.0/24 option bootfile-server '192.168.50.5'
set service dhcp-server shared-network-name PXE subnet 192.168.50.0/24 option tftp-server-name '192.168.50.5'
set service dhcp-server shared-network-name PXE subnet 192.168.50.0/24 range 0 start '192.168.50.100'
set service dhcp-server shared-network-name PXE subnet 192.168.50.0/24 range 0 stop '192.168.50.200'
set service dhcp-server shared-network-name PXE subnet 192.168.50.0/24 subnet-id 50

Операционные команды

Просмотр аренд (leases)

Все активные аренды:

show dhcp server leases

Аренды конкретной подсети:

show dhcp server leases subnet 192.168.1.0/24

Конкретный адрес:

show dhcp server leases address 192.168.1.100

Статистика

show dhcp server statistics

Перезапуск сервера

restart dhcp server

Логи

Просмотр логов:

show log dhcp
monitor log | grep dhcp

Файлы конфигурации и данных

VyOS 1.5.x (Kea DHCP)

  • Конфигурация: генерируется из VyOS CLI
  • Leases файл: /config/dhcp4.leases
  • Логи: /var/log/kea/kea-dhcp4.log

VyOS 1.4.x (ISC DHCP) - для справки

  • Конфигурация: /run/dhcp-server/dhcpd.conf
  • Leases файл: /var/lib/dhcp/dhcpd.leases

Устранение неполадок

Клиенты не получают адреса

Проверьте статус сервиса:

show service dhcp-server

Проверьте конфигурацию:

show service dhcp-server shared-network-name LAN

Мониторинг в реальном времени:

monitor log | grep dhcp

Перезапустите сервис:

restart dhcp server

Static mapping не работает

Убедитесь, что указаны обязательные параметры:

  • mac (MAC-адрес)
  • ip-address или hostname

Проверьте правильность MAC-адреса:

show service dhcp-server shared-network-name LAN subnet 192.168.1.0/24 static-mapping

Конфликты адресов

Проверьте exclude и static mappings:

show service dhcp-server shared-network-name LAN subnet 192.168.1.0/24

Очистите старые аренды (осторожно!):

restart dhcp server

DHCP Relay проблемы

Если DHCP сервер на другом сегменте, настройте DHCP relay на интерфейсе:

set service dhcp-relay interface eth0
set service dhcp-relay server 192.168.1.1

Лучшие практики

  1. Планирование адресов - резервируйте диапазоны для статических адресов
  2. Используйте exclude - для серверов и сетевого оборудования
  3. Документируйте static mappings - используйте описания
  4. Настройте lease time - короткие для гостевых сетей, длинные для стабильных
  5. Резервное копирование - сохраняйте конфигурацию регулярно
  6. Мониторинг - следите за использованием адресов
  7. High Availability - для критичных сетей настройте HA
  8. Логирование - регулярно проверяйте логи на ошибки

Миграция с VyOS 1.4 на 1.5

При миграции обновите static mappings:

Старый формат (1.4):

set service dhcp-server shared-network-name LAN subnet 192.168.1.0/24 static-mapping host1 mac-address '00:50:56:00:00:01'

Новый формат (1.5):

set service dhcp-server shared-network-name LAN subnet 192.168.1.0/24 static-mapping host1 mac '00:50:56:00:00:01'
set service dhcp-server shared-network-name LAN subnet 192.168.1.0/24 static-mapping host1 ip-address '192.168.1.10'

Используйте скрипт для массовой конвертации если у вас много статических маппингов.

Следующие шаги

Проверено OpenNix LLC · Обновлено