DHCP. Option 82. Centos 7 DHCP-сервер + Mikrotik DHCP-Relay. Получение DHCP-клиентами IP-адресов из разных диапазонов: различия между версиями

Материал из Wiki
Перейти к навигации Перейти к поиску
Строка 5: Строка 5:
__ОБЯЗАТЕЛЬНОЕ_ОГЛАВЛЕНИЕ__
__ОБЯЗАТЕЛЬНОЕ_ОГЛАВЛЕНИЕ__


CENTOS 7 DHCP SERVER + MIKROTIK DHCP-RELAY
== Описание ==
-----
Настроим один DHCP-сервер на Centos 7 для выдачи ip-адресов из разных диапазонов в зависимости от того, с какого порта на свитче Mikrotik с настроенным DHCP-relay приходит запрос от клиента (DHCP-relay и DHCP-сервер могут быть в разных подсетях (широковещательных доменах L2))


DHCP-Relay в пакете DHCP отправляет на DHCP-сервер:


#Описание
* '''agent.circuit-id''' (Имя устройства Mikrotik DHCP-Relay и порта Mikrotik DHCP-Relay, в который пришел DHCP запрос от клиента - в нашем случае "MikroTik-Cless eth 0/3")
* '''agent.remote-id''' (Имя порта Mikrotik DHCP-Relay, в который пришел DHCP запрос от клиента - в нашем случае "ether2")


Настроим один DHCP-сервер на centos 7 для выдачи ip-адресов из разных диапазонов
DHCP-сервер на основании agent.circuit-id определяет из какого диапазона выдать IP-адрес исходя из правил (в нашем случае: match if option agent.circuit-id = "MikroTik-Cless eth 0/3";)
в зависимости от того, с какого порта на свитче Mikrotik с настроенным DHCP-relay
приходит запрос от клиента (DHCP-relay и DHCP-сервер
могут быть в разных подсетях (широковещательных доменах L2)).


DHCP-Relay в пакете DHCP отправляет на DHCP-сервер:
Для определения agent.circuit-id на Mikrotik для того (чтобы можно было на DHCP-сервер Linux фильтровать порты как показанов ниже в инструкции) можно включить DHCP-сервер на бридже Mikrotik (перед этим отключив службу DHCP-Relay) предварительно включив опции add-dhcp-option82=yes, dhcp-snooping=yes:
    agent.circuit-id (Имя устройства Mikrotik DHCP-Relay и порта Mikrotik DHCP-Relay, в который пришел DHCP запрос от клиента - в нашем случае "MikroTik-Cless eth 0/3")
    agent.remote-id (Имя порта Mikrotik DHCP-Relay, в который пришел DHCP запрос от клиента - в нашем случае "ether2")
   
DHCP-сервер на основании agent.circuit-id определяет из какого диапазона выдать IP-адрес
исходя из правил (в нашем случае: match if option agent.circuit-id = "MikroTik-Cless eth 0/3";)


Для определения agent.circuit-id на Mikrotik для того (чтобы можно было на DHCP-сервер Linux фильтровать порты как показанов ниже в инструкции) можно включить DHCP-сервер на бридже Mikrotik (перед этим отключив службу DHCP-Relay) предварительно включив опции add-dhcp-option82=yes, dhcp-snooping=yes:
<code>/interface bridge add add-dhcp-option82=yes dhcp-snooping=yes fast-forward=no mtu=1500 name=bridge-local</code>
/interface bridge add add-dhcp-option82=yes dhcp-snooping=yes fast-forward=no mtu=1500 name=bridge-local


Подключимся клиентом DHCP к этому DHCP-серверу
Подключимся клиентом DHCP к этому DHCP-серверу
После этого в Leases DHCP-сервера увидим заполненные поля agent.circuit-id и agent.remote-id


MikroTik-Cless eth 0/3 - ether2
После этого в Leases DHCP-сервера увидим заполненные поля agent.circuit-id и agent.remote-id:
MikroTik-Cless eth 0/4 - ether3


Другого способа определеить соответствие agent.circuit-id и физических портов мне не удалось
* '''MikroTik-Cless eth 0/3 - ether2'''
Разобраться
* '''MikroTik-Cless eth 0/4 - ether3'''


Другого способа определить соответствие agent.circuit-id и физических портов мне не удалось.


#Входные данные
Разобраться.


192.168.17.186 - Centos 7 с DHCP-сервером ISC-DHCP
== Входные данные ==
192.168.111.1 - Mikrotik свитч c DHCP-Relay, к его портам подключены DHCP-клиенты
[[Файл:Option82 dhcpcd mikrotik Topology.jpg|без|мини|455x455пкс]]
pc1, pc2 - DHCP-клиенты из сети 192.168.111.0/24, подключенные к портам ether2,ether3 устройства Mikrotik DHCP-Relay
'''192.168.17.186''' - Centos 7 с DHCP-сервером ISC-DHCP


'''192.168.111.1''' - Mikrotik свитч c DHCP-Relay, к его портам подключены DHCP-клиенты


#Настройка
'''pc1, pc2''' - DHCP-клиенты из сети 192.168.111.0/24, подключенные к портам ether2,ether3 устройства Mikrotik DHCP-Relay


== Настройка ==


##DHCP-сервер
=== DHCP-сервер ===
<code>yum install dhcp</code>


yum install dhcp
<code>nano /etc/dhcp/dhcpd.conf</code>
 
# DHCP Server Configuration file.
nano /etc/dhcp/dhcpd.conf
# see /usr/share/doc/dhcp*/dhcpd.conf.sample
---
# see 'man 5 dhcpd.conf'
# DHCP Server Configuration file.
# see /usr/share/doc/dhcp*/dhcpd.conf.sample
ddns-update-style interim;
# see 'man 5 dhcpd.conf'
log-facility local7;
 
lease-file-name "/var/log/dhcpd.leases";
ddns-update-style interim;
stash-agent-options true;
log-facility local7;
lease-file-name "/var/log/dhcpd.leases";
local-address 192.168.17.186;
 
subnet 192.168.17.0 netmask 255.255.255.0 {
stash-agent-options true;
}
 
local-address 192.168.17.186;
if exists agent.circuit-id
subnet 192.168.17.0 netmask 255.255.255.0 {
{
}
  log ( info, concat( " Lease for ",
 
                      binary-to-ascii (10, 8, ".", leased-address),
if exists agent.circuit-id
                      " Switch port: ",
{
                      binary-to-ascii (10, 8, ".", option agent.circuit-id),
log ( info, concat( " Lease for ",
                      " Switch MAC: ",
                    binary-to-ascii (10, 8, ".", leased-address),
                      binary-to-ascii(16, 8, ".", option agent.remote-id)));
                    " Switch port: ",
}
                    binary-to-ascii (10, 8, ".", option agent.circuit-id),
                    " Switch MAC: ",
shared-network "192.168.111.0" {
                    binary-to-ascii(16, 8, ".", option agent.remote-id)));
         subnet 192.168.111.0 netmask 255.255.255.0 {
}
             option broadcast-address 192.168.111.255;
 
             option routers 192.168.111.1;
shared-network "192.168.111.0" {
             option subnet-mask 255.255.255.0;
        subnet 192.168.111.0 netmask 255.255.255.0 {
             option domain-name-servers 192.168.111.1,77.88.8.8;
 
            option broadcast-address 192.168.111.255;
             # Mikrotik Port MikroTik-Cless eth 0/3 (ether2)
            option routers 192.168.111.1;
             class "MikroTik-Cless eth 0/3" {
            option subnet-mask 255.255.255.0;
                 match if option agent.circuit-id = "MikroTik-Cless eth 0/3";
            option domain-name-servers 192.168.111.1,77.88.8.8;
             }
 
             pool {
            # Mikrotik Port MikroTik-Cless eth 0/3 (ether2)
                 allow members of "MikroTik-Cless eth 0/3";
            class "MikroTik-Cless eth 0/3" {
                 range 192.168.111.100 192.168.111.109;
                match if option agent.circuit-id = "MikroTik-Cless eth 0/3";
             }
            }
            pool {
             # Mikrotik Port MikroTik-Cless eth 0/4 (ether3)
                allow members of "MikroTik-Cless eth 0/3";
             class "MikroTik-Cless eth 0/4" {
                range 192.168.111.100 192.168.111.109;
                 match if option agent.circuit-id = "MikroTik-Cless eth 0/4";
            }
             }
 
             pool {
            # Mikrotik Port MikroTik-Cless eth 0/4 (ether3)
                 allow members of "MikroTik-Cless eth 0/4";
            class "MikroTik-Cless eth 0/4" {
                 range 192.168.111.110 192.168.111.119;
                match if option agent.circuit-id = "MikroTik-Cless eth 0/4";
             }
            }
         }
            pool {
     }
                allow members of "MikroTik-Cless eth 0/4";
Перезапуск службы
                range 192.168.111.110 192.168.111.119;
            }
        }
    }
---


Перезапуск службы
<code>systemctl enable dhcpd.service</code>


systemctl enable dhcpd.service
<code>systemctl restart dhcpd.service</code>
systemctl restart dhcpd.service


Проверяем что открыты порты DHCP
Проверяем что открыты порты DHCP


netstat -luptn
<code>netstat -luptn</code>
    ...
     ...
    udp       0     0 192.168.17.186:67       0.0.0.0:*                           17546/dhcpd
     udp        0      0 192.168.17.186:67       0.0.0.0:*                           17546/dhcpd
    udp       0     0 0.0.0.0:68             0.0.0.0:*                           720/dhclient
     udp        0      0 0.0.0.0:68              0.0.0.0:*                           720/dhclient
    ...
     ...
   
 
#Mikrotik DHCP-Relay


=== Mikrotik DHCP-Relay ===
DHCP-сервер необходимо выключить
DHCP-сервер необходимо выключить


Строка 127: Строка 114:
Включаем на бридже dhcp-option82 и dhcp-snooping
Включаем на бридже dhcp-option82 и dhcp-snooping


/interface bridge
<code>/interface bridge</code>
add add-dhcp-option82=yes dhcp-snooping=yes fast-forward=no mtu=1500 name=bridge-local
 
<code>add add-dhcp-option82=yes dhcp-snooping=yes fast-forward=no mtu=1500 name=bridge-local</code>


Добавляем порты в бридж
Добавляем порты в бридж


/interface bridge port
<code>/interface bridge port</code>
add bridge=bridge-local hw=no interface=ether2
 
add bridge=bridge-iptv hw=no interface=ether3
<code>add bridge=bridge-local hw=no interface=ether2</code>
 
<code>add bridge=bridge-iptv hw=no interface=ether3</code>


Теоретически необходимо включить опцию trusted=yes на физических портах, она необходимо для разрешения и запрета запросов DHCP-snooping на физических интерфейсах
Теоретически необходимо включить опцию trusted=yes на физических портах, она необходимо для разрешения и запрета запросов DHCP-snooping на физических интерфейсах
Но у меня Option 82 заработала без этой этого
Но у меня Option 82 заработала без этой этого


/interface bridge port
<code>/interface bridge port</code>
add bridge=bridge-local hw=no interface=ether2 trusted=yes
add bridge=bridge-local hw=no interface=ether3 trusted=yes


Включаем dhcp-relay
<code>add bridge=bridge-local hw=no interface=ether2 trusted=yes</code>


/ip dhcp-relay
<code>add bridge=bridge-local hw=no interface=ether3 trusted=yes</code>
add dhcp-server=192.168.17.186 disabled=no interface=bridge-local local-address=192.168.111.1 name=relay1


Включаем dhcp-relay


#Проверка
<code>/ip dhcp-relay</code>


<code>add dhcp-server=192.168.17.186 disabled=no interface=bridge-local local-address=192.168.111.1 name=relay1</code>


##PC1
== Проверка ==


=== PC1 ===
На pc1 (который подключен в ether2 устройства Mikrotik DHCP-Relay) включаем DHCP-клиент
На pc1 (который подключен в ether2 устройства Mikrotik DHCP-Relay) включаем DHCP-клиент
pc1 должен получить IP из диапазона 192.168.111.100-192.168.111.109
pc1 должен получить IP из диапазона 192.168.111.100-192.168.111.109


 
=== DHCP-сервер ===
##DHCP-сервер
 
Смотрим что пакеты приходят на DHCP-сервер
Смотрим что пакеты приходят на DHCP-сервер


tcpdump -i eth0 -vvv -s 1500 '((port 67 or port 68) and (udp[8:1] = 0x1))'
<code>tcpdump -i eth0 -vvv -s 1500 '((port 67 or port 68) and (udp[8:1] = 0x1))'</code>
    ...
     ...
    tcpdump: listening on eth0, link-type EN10MB (Ethernet), capture size 1500 bytes
     tcpdump: listening on eth0, link-type EN10MB (Ethernet), capture size 1500 bytes
    12:45:17.983356 IP (tos 0x0, ttl 63, id 0, offset 0, flags [DF], proto UDP (17), length 382)
     12:45:17.983356 IP (tos 0x0, ttl 63, id 0, offset 0, flags [DF], proto UDP (17), length 382)
        192.168.17.7.bootps > centos7-test01.bootps: [udp sum ok] BOOTP/DHCP, Request from cc:2d:e0:39:20:c0 (oui Unknown), length 354, hops 1, xid 0x1668a948, Flags [Broadcast] (0x8000)
         192.168.17.7.bootps > centos7-test01.bootps: [udp sum ok] BOOTP/DHCP, Request from cc:2d:e0:39:20:c0 (oui Unknown), length 354, hops 1, xid 0x1668a948, Flags [Broadcast] (0x8000)
            Gateway-IP 192.168.111.1
             Gateway-IP 192.168.111.1
            Client-Ethernet-Address cc:2d:e0:39:20:c0 (oui Unknown)
             Client-Ethernet-Address cc:2d:e0:39:20:c0 (oui Unknown)
            Vendor-rfc1048 Extensions
             Vendor-rfc1048 Extensions
                Magic Cookie 0x63825363
                 Magic Cookie 0x63825363
                DHCP-Message Option 53, length 1: Discover
                 DHCP-Message Option 53, length 1: Discover
                Parameter-Request Option 55, length 8:
                 Parameter-Request Option 55, length 8:
                Subnet-Mask, Classless-Static-Route, Default-Gateway, Static-Route
                 Subnet-Mask, Classless-Static-Route, Default-Gateway, Static-Route
                Domain-Name-Server, NTP, Option 138, Vendor-Option
                 Domain-Name-Server, NTP, Option 138, Vendor-Option
                Hostname Option 12, length 27: "cless_home_hap-mini-111-212"
                 Hostname Option 12, length 27: "cless_home_hap-mini-111-212"
                Client-ID Option 61, length 7: ether cc:2d:e0:39:20:c0
                 Client-ID Option 61, length 7: ether cc:2d:e0:39:20:c0
                Agent-Information Option 82, length 60:
                 Agent-Information Option 82, length 60:
                Circuit-ID SubOption 1, length 22: MikroTik-Cless eth 0/3
                 Circuit-ID SubOption 1, length 22: MikroTik-Cless eth 0/3
                Remote-ID SubOption 2, length 34: ether2
                 Remote-ID SubOption 2, length 34: ether2
                END Option 255, length 0
                 END Option 255, length 0
    ...
     ...
   
Смотрим лог DHCP-сервера
Смотрим лог DHCP-сервера
           
watch -n1 tail -n50 /var/log/messages
    ...
    Aug 14 12:46:49 centos7-test01 dhcpd: Lease for 192.168.111.101 Switch port: 77.105.107.114.111.84.105.107.45.67.108.101.115.115.32.101.116.104.32.48.47.51 Switch MAC: 65.74.68.65.72.32.2d.6c.61.6e.5f
    .63.6c.65.73.73.2d.73.77.69.74.63.68.2d.61.70.2d.31.31.31.2d.32.32.34
    Aug 14 12:46:49 centos7-test01 dhcpd: DHCPDISCOVER from cc:2d:e0:39:20:c0 via 192.168.111.1
    Aug 14 12:46:50 centos7-test01 dhcpd: DHCPOFFER on 192.168.111.101 to cc:2d:e0:39:20:c0 (cless_home_hap-mini-111-212) via 192.168.111.1
    Aug 14 12:46:50 centos7-test01 dhcpd: Lease for 192.168.111.101 Switch port: 77.105.107.114.111.84.105.107.45.67.108.101.115.115.32.101.116.104.32.48.47.51 Switch MAC: 65.74.68.65.72.32.2d.6c.61.6e.5f
    .63.6c.65.73.73.2d.73.77.69.74.63.68.2d.61.70.2d.31.31.31.2d.32.32.34
    Aug 14 12:46:50 centos7-test01 dhcpd: DHCPDISCOVER from cc:2d:e0:39:20:c0 (cless_home_hap-mini-111-212) via 192.168.111.1
    Aug 14 12:46:50 centos7-test01 dhcpd: DHCPOFFER on 192.168.111.101 to cc:2d:e0:39:20:c0 (cless_home_hap-mini-111-212) via 192.168.111.1
    Aug 14 12:46:50 centos7-test01 dhcpd: Lease for 192.168.111.101 Switch port: 77.105.107.114.111.84.105.107.45.67.108.101.115.115.32.101.116.104.32.48.47.51 Switch MAC: 65.74.68.65.72.32.2d.6c.61.6e.5f
    .63.6c.65.73.73.2d.73.77.69.74.63.68.2d.61.70.2d.31.31.31.2d.32.32.34
    Aug 14 12:46:50 centos7-test01 dhcpd: DHCPREQUEST for 192.168.111.101 (192.168.17.186) from cc:2d:e0:39:20:c0 (cless_home_hap-mini-111-212) via 192.168.111.1
    Aug 14 12:46:50 centos7-test01 dhcpd: DHCPACK on 192.168.111.101 to cc:2d:e0:39:20:c0 (cless_home_hap-mini-111-212) via 192.168.111.1
    ...


##PC2
<code>watch -n1 tail -n50 /var/log/messages</code>
     ...
     Aug 14 12:46:49 centos7-test01 dhcpd: Lease for 192.168.111.101 Switch port: 77.105.107.114.111.84.105.107.45.67.108.101.115.115.32.101.116.104.32.48.47.51 Switch MAC: 65.74.68.65.72.32.2d.6c.61.6e.5f
     .63.6c.65.73.73.2d.73.77.69.74.63.68.2d.61.70.2d.31.31.31.2d.32.32.34
     Aug 14 12:46:49 centos7-test01 dhcpd: DHCPDISCOVER from cc:2d:e0:39:20:c0 via 192.168.111.1
     Aug 14 12:46:50 centos7-test01 dhcpd: DHCPOFFER on 192.168.111.101 to cc:2d:e0:39:20:c0 (cless_home_hap-mini-111-212) via 192.168.111.1
     Aug 14 12:46:50 centos7-test01 dhcpd: Lease for 192.168.111.101 Switch port: 77.105.107.114.111.84.105.107.45.67.108.101.115.115.32.101.116.104.32.48.47.51 Switch MAC: 65.74.68.65.72.32.2d.6c.61.6e.5f
     .63.6c.65.73.73.2d.73.77.69.74.63.68.2d.61.70.2d.31.31.31.2d.32.32.34
     Aug 14 12:46:50 centos7-test01 dhcpd: DHCPDISCOVER from cc:2d:e0:39:20:c0 (cless_home_hap-mini-111-212) via 192.168.111.1
     Aug 14 12:46:50 centos7-test01 dhcpd: DHCPOFFER on 192.168.111.101 to cc:2d:e0:39:20:c0 (cless_home_hap-mini-111-212) via 192.168.111.1
     Aug 14 12:46:50 centos7-test01 dhcpd: Lease for 192.168.111.101 Switch port: 77.105.107.114.111.84.105.107.45.67.108.101.115.115.32.101.116.104.32.48.47.51 Switch MAC: 65.74.68.65.72.32.2d.6c.61.6e.5f
     .63.6c.65.73.73.2d.73.77.69.74.63.68.2d.61.70.2d.31.31.31.2d.32.32.34
     Aug 14 12:46:50 centos7-test01 dhcpd: DHCPREQUEST for 192.168.111.101 (192.168.17.186) from cc:2d:e0:39:20:c0 (cless_home_hap-mini-111-212) via 192.168.111.1
     Aug 14 12:46:50 centos7-test01 dhcpd: DHCPACK on 192.168.111.101 to cc:2d:e0:39:20:c0 (cless_home_hap-mini-111-212) via 192.168.111.1
     ...


=== PC2 ===
Аналогично проверяем как и на pc2
Аналогично проверяем как и на pc2
pc1 должен получить IP из диапазона 192.168.111.110-192.168.111.119
pc1 должен получить IP из диапазона 192.168.111.110-192.168.111.119

Версия 13:19, 14 августа 2022


Описание

Настроим один DHCP-сервер на Centos 7 для выдачи ip-адресов из разных диапазонов в зависимости от того, с какого порта на свитче Mikrotik с настроенным DHCP-relay приходит запрос от клиента (DHCP-relay и DHCP-сервер могут быть в разных подсетях (широковещательных доменах L2))

DHCP-Relay в пакете DHCP отправляет на DHCP-сервер:

  • agent.circuit-id (Имя устройства Mikrotik DHCP-Relay и порта Mikrotik DHCP-Relay, в который пришел DHCP запрос от клиента - в нашем случае "MikroTik-Cless eth 0/3")
  • agent.remote-id (Имя порта Mikrotik DHCP-Relay, в который пришел DHCP запрос от клиента - в нашем случае "ether2")

DHCP-сервер на основании agent.circuit-id определяет из какого диапазона выдать IP-адрес исходя из правил (в нашем случае: match if option agent.circuit-id = "MikroTik-Cless eth 0/3";)

Для определения agent.circuit-id на Mikrotik для того (чтобы можно было на DHCP-сервер Linux фильтровать порты как показанов ниже в инструкции) можно включить DHCP-сервер на бридже Mikrotik (перед этим отключив службу DHCP-Relay) предварительно включив опции add-dhcp-option82=yes, dhcp-snooping=yes:

/interface bridge add add-dhcp-option82=yes dhcp-snooping=yes fast-forward=no mtu=1500 name=bridge-local

Подключимся клиентом DHCP к этому DHCP-серверу

После этого в Leases DHCP-сервера увидим заполненные поля agent.circuit-id и agent.remote-id:

  • MikroTik-Cless eth 0/3 - ether2
  • MikroTik-Cless eth 0/4 - ether3

Другого способа определить соответствие agent.circuit-id и физических портов мне не удалось.

Разобраться.

Входные данные

Option82 dhcpcd mikrotik Topology.jpg

192.168.17.186 - Centos 7 с DHCP-сервером ISC-DHCP

192.168.111.1 - Mikrotik свитч c DHCP-Relay, к его портам подключены DHCP-клиенты

pc1, pc2 - DHCP-клиенты из сети 192.168.111.0/24, подключенные к портам ether2,ether3 устройства Mikrotik DHCP-Relay

Настройка

DHCP-сервер

yum install dhcp

nano /etc/dhcp/dhcpd.conf

# DHCP Server Configuration file.
# see /usr/share/doc/dhcp*/dhcpd.conf.sample
# see 'man 5 dhcpd.conf'

ddns-update-style interim;
log-facility local7;
lease-file-name "/var/log/dhcpd.leases";
stash-agent-options true;

local-address 192.168.17.186;
subnet 192.168.17.0 netmask 255.255.255.0 {
}

if exists agent.circuit-id
{
 log ( info, concat( " Lease for ",
                     binary-to-ascii (10, 8, ".", leased-address),
                     " Switch port: ",
                     binary-to-ascii (10, 8, ".", option agent.circuit-id),
                     " Switch MAC: ",
                     binary-to-ascii(16, 8, ".", option agent.remote-id)));
}

shared-network "192.168.111.0" {
        subnet 192.168.111.0 netmask 255.255.255.0 {
            option broadcast-address 192.168.111.255;
            option routers 192.168.111.1;
            option subnet-mask 255.255.255.0;
            option domain-name-servers 192.168.111.1,77.88.8.8;

            # Mikrotik Port MikroTik-Cless eth 0/3 (ether2)
            class "MikroTik-Cless eth 0/3" {
                match if option agent.circuit-id = "MikroTik-Cless eth 0/3";
            }
            pool {
                allow members of "MikroTik-Cless eth 0/3";
                range 192.168.111.100 192.168.111.109;
            }

            # Mikrotik Port MikroTik-Cless eth 0/4 (ether3)
            class "MikroTik-Cless eth 0/4" {
                match if option agent.circuit-id = "MikroTik-Cless eth 0/4";
            }
            pool {
                allow members of "MikroTik-Cless eth 0/4";
                range 192.168.111.110 192.168.111.119;
            }
        }
    }

Перезапуск службы

systemctl enable dhcpd.service

systemctl restart dhcpd.service

Проверяем что открыты порты DHCP

netstat -luptn

    ...
    udp        0      0 192.168.17.186:67       0.0.0.0:*                           17546/dhcpd
    udp        0      0 0.0.0.0:68              0.0.0.0:*                           720/dhclient
    ...

Mikrotik DHCP-Relay

DHCP-сервер необходимо выключить

Бридж, в порты которого будут приходить клиенты, в зависимости от того, с какой порт они придут - они будут получать IP из разных диапазонов

Включаем на бридже dhcp-option82 и dhcp-snooping

/interface bridge

add add-dhcp-option82=yes dhcp-snooping=yes fast-forward=no mtu=1500 name=bridge-local

Добавляем порты в бридж

/interface bridge port

add bridge=bridge-local hw=no interface=ether2

add bridge=bridge-iptv hw=no interface=ether3

Теоретически необходимо включить опцию trusted=yes на физических портах, она необходимо для разрешения и запрета запросов DHCP-snooping на физических интерфейсах

Но у меня Option 82 заработала без этой этого

/interface bridge port

add bridge=bridge-local hw=no interface=ether2 trusted=yes

add bridge=bridge-local hw=no interface=ether3 trusted=yes

Включаем dhcp-relay

/ip dhcp-relay

add dhcp-server=192.168.17.186 disabled=no interface=bridge-local local-address=192.168.111.1 name=relay1

Проверка

PC1

На pc1 (который подключен в ether2 устройства Mikrotik DHCP-Relay) включаем DHCP-клиент

pc1 должен получить IP из диапазона 192.168.111.100-192.168.111.109

DHCP-сервер

Смотрим что пакеты приходят на DHCP-сервер

tcpdump -i eth0 -vvv -s 1500 '((port 67 or port 68) and (udp[8:1] = 0x1))'

    ...
    tcpdump: listening on eth0, link-type EN10MB (Ethernet), capture size 1500 bytes
    12:45:17.983356 IP (tos 0x0, ttl 63, id 0, offset 0, flags [DF], proto UDP (17), length 382)
        192.168.17.7.bootps > centos7-test01.bootps: [udp sum ok] BOOTP/DHCP, Request from cc:2d:e0:39:20:c0 (oui Unknown), length 354, hops 1, xid 0x1668a948, Flags [Broadcast] (0x8000)
            Gateway-IP 192.168.111.1
            Client-Ethernet-Address cc:2d:e0:39:20:c0 (oui Unknown)
            Vendor-rfc1048 Extensions
                Magic Cookie 0x63825363
                DHCP-Message Option 53, length 1: Discover
                Parameter-Request Option 55, length 8:
                Subnet-Mask, Classless-Static-Route, Default-Gateway, Static-Route
                Domain-Name-Server, NTP, Option 138, Vendor-Option
                Hostname Option 12, length 27: "cless_home_hap-mini-111-212"
                Client-ID Option 61, length 7: ether cc:2d:e0:39:20:c0
                Agent-Information Option 82, length 60:
                Circuit-ID SubOption 1, length 22: MikroTik-Cless eth 0/3
                Remote-ID SubOption 2, length 34: ether2
                END Option 255, length 0
    ...

Смотрим лог DHCP-сервера

watch -n1 tail -n50 /var/log/messages

    ...
    Aug 14 12:46:49 centos7-test01 dhcpd: Lease for 192.168.111.101 Switch port: 77.105.107.114.111.84.105.107.45.67.108.101.115.115.32.101.116.104.32.48.47.51 Switch MAC: 65.74.68.65.72.32.2d.6c.61.6e.5f
    .63.6c.65.73.73.2d.73.77.69.74.63.68.2d.61.70.2d.31.31.31.2d.32.32.34
    Aug 14 12:46:49 centos7-test01 dhcpd: DHCPDISCOVER from cc:2d:e0:39:20:c0 via 192.168.111.1
    Aug 14 12:46:50 centos7-test01 dhcpd: DHCPOFFER on 192.168.111.101 to cc:2d:e0:39:20:c0 (cless_home_hap-mini-111-212) via 192.168.111.1
    Aug 14 12:46:50 centos7-test01 dhcpd: Lease for 192.168.111.101 Switch port: 77.105.107.114.111.84.105.107.45.67.108.101.115.115.32.101.116.104.32.48.47.51 Switch MAC: 65.74.68.65.72.32.2d.6c.61.6e.5f
    .63.6c.65.73.73.2d.73.77.69.74.63.68.2d.61.70.2d.31.31.31.2d.32.32.34
    Aug 14 12:46:50 centos7-test01 dhcpd: DHCPDISCOVER from cc:2d:e0:39:20:c0 (cless_home_hap-mini-111-212) via 192.168.111.1
    Aug 14 12:46:50 centos7-test01 dhcpd: DHCPOFFER on 192.168.111.101 to cc:2d:e0:39:20:c0 (cless_home_hap-mini-111-212) via 192.168.111.1
    Aug 14 12:46:50 centos7-test01 dhcpd: Lease for 192.168.111.101 Switch port: 77.105.107.114.111.84.105.107.45.67.108.101.115.115.32.101.116.104.32.48.47.51 Switch MAC: 65.74.68.65.72.32.2d.6c.61.6e.5f
    .63.6c.65.73.73.2d.73.77.69.74.63.68.2d.61.70.2d.31.31.31.2d.32.32.34
    Aug 14 12:46:50 centos7-test01 dhcpd: DHCPREQUEST for 192.168.111.101 (192.168.17.186) from cc:2d:e0:39:20:c0 (cless_home_hap-mini-111-212) via 192.168.111.1
    Aug 14 12:46:50 centos7-test01 dhcpd: DHCPACK on 192.168.111.101 to cc:2d:e0:39:20:c0 (cless_home_hap-mini-111-212) via 192.168.111.1
    ...

PC2

Аналогично проверяем как и на pc2

pc1 должен получить IP из диапазона 192.168.111.110-192.168.111.119