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

Материал из Wiki
Перейти к навигации Перейти к поиску
Строка 8: Строка 8:


= Описание =
= Описание =
Настроим один DHCP-сервер на centos 7 для выдачи ip-адресов из разных диапазонов
Настроим один DHCP-сервер на centos 7 для выдачи ip-адресов из разных диапазонов в зависимости от того, с какого порта на свитче HP Switch 1910 с настроенным DHCP-relay приходит запрос от клиента (DHCP-relay и DHCP-сервер могут быть в разных подсетях (широковещательных доменах L2)).
 
в зависимости от того, с какого порта на свитче HP Switch 1910 с настроенным DHCP-relay
 
приходит запрос от клиента (DHCP-relay и DHCP-сервер
 
могут быть в разных подсетях (широковещательных доменах L2)).


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


   agent.circuit-id (Имя устройства HP Switch DHCP-Relay и порта HP Switch DHCP-Relay, в который пришел DHCP запрос от клиента - в нашем случае "hpe-officeconnect-1910-48 eth 0/1/0/7:0001")
   '''agent.circuit-id''' (Имя устройства HP Switch DHCP-Relay и порта HP Switch DHCP-Relay, в который пришел DHCP запрос от клиента - в нашем случае "hpe-officeconnect-1910-48 eth 0/1/0/7:0001")
 
   agent.remote-id (Имя усройства HP Switch DHCP-Relay, в который пришел DHCP запрос от клиента - в нашем случае "hpe-officeconnect-1910-48")


   
   '''agent.remote-id''' (Имя усройства HP Switch DHCP-Relay, в который пришел DHCP запрос от клиента - в нашем случае "hpe-officeconnect-1910-48")


DHCP-сервер на основании agent.circuit-id определяет из какого диапазона выдать IP-адрес исходя из правил
DHCP-сервер на основании agent.circuit-id определяет из какого диапазона выдать IP-адрес исходя из правил.


Можно на DHCP-сервере Centos 7 определить приходящие agent.circuit-id и agent.remote-id в пакетах DHCP через tcpdump
Можно на DHCP-сервере Centos 7 определить приходящие agent.circuit-id и agent.remote-id в пакетах DHCP через tcpdump (после настройки на HP Switch службы DHCP-Relay).


Запустим в консоли
Запустим в консоли


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>
 
Далее запустим DHCP-клиенте на устройстве клиенте и увидим в выводе tcpdump примерно следующее:
 
   ...


   Circuit-ID SubOption 1, length 42: hpe-officeconnect-1910-48 eth 0/1/0/7:0001
Далее запустим DHCP-клиент на устройстве-клиенте и увидим в выводе tcpdump примерно следующее:<blockquote>'''hpe-officeconnect-1910-48''' - имя устройства


   Remote-ID SubOption 2, length 25: hpe-officeconnect-1910-48
'''eth 0/1/0/7''' - номер порта


   ...
'''0001''' - Vlan ID</blockquote>
   ...
   Circuit-ID SubOption 1, length 42: '''hpe-officeconnect-1910-48 eth 0/1/0/7:0001'''
   Remote-ID SubOption 2, length 25: '''hpe-officeconnect-1910-48'''
   ...


<nowiki>#</nowiki>Входные данные
= Входные данные =
[[Файл:Option82-hp-switch-relay-topology.jpg|без|мини|570x570пкс]]
[[Файл:Option82-hp-switch-relay-topology.jpg|без|мини|570x570пкс]]


192.168.17.186 - Centos 7 с DHCP-сервером ISC-DHCP
'''192.168.17.186''' - Centos 7 с DHCP-сервером ISC-DHCP
 
192.168.111.180 - HP Switch c DHCP-Relay, к его портам подключены DHCP-клиенты
 
pc1, pc2 - DHCP-клиенты из сети 192.168.111.0/24, подключенные к портам 7,9 устройства HP Switch DHCP-Relay
 
pc3 - DHCP-клиент из сети 192.168.112.0/24, подключенный к порту 11 устройства HP Switch DHCP-Relay
 
<nowiki>#</nowiki>Настройка
 
<nowiki>##</nowiki>DHCP-сервер
 
yum install dhcp
 
nano /etc/dhcp/dhcpd.conf
 
---
 
<nowiki>#</nowiki> DHCP Server Configuration file.
 
<nowiki>#</nowiki> see /usr/share/doc/dhcp*/dhcpd.conf.sample
 
<nowiki>#</nowiki> 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 {
 
}
 
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;
 
           # hpe-officeconnect-1910-48 eth 0/1/0/7:0001
 
           # 0001 - vlan 1
 
           class "hpe-officeconnect-1910-48 eth 0/1/0/7:0001" {
 
               match if option agent.circuit-id = "hpe-officeconnect-1910-48 eth 0/1/0/7:0001";
 
           }
 
           pool {
 
               allow members of "hpe-officeconnect-1910-48 eth 0/1/0/7:0001";
 
               range 192.168.111.100 192.168.111.109;
 
           }
 
           # hpe-officeconnect-1910-48 eth 0/1/0/9:0001
 
           # 0001 - vlan 1
 
           class "hpe-officeconnect-1910-48 eth 0/1/0/9:0001" {
 
               match if option agent.circuit-id = "hpe-officeconnect-1910-48 eth 0/1/0/9:0001";
 
           }
 
           pool {
 
               allow members of "hpe-officeconnect-1910-48 eth 0/1/0/9:0001";
 
               range 192.168.111.200 192.168.111.209;
 
       }
 
   }
 
}
 
shared-network "192.168.112.0" {
 
       subnet 192.168.112.0 netmask 255.255.255.0 {
 
           option broadcast-address 192.168.112.255;
 
           option routers 192.168.112.1;
 
           option subnet-mask 255.255.255.0;
 
           option domain-name-servers 192.168.112.1,77.88.8.8;
 
           # hpe-officeconnect-1910-48 eth 0/1/0/11:0002
 
           # 0002 - vlan 2
 
           class "hpe-officeconnect-1910-48 eth 0/1/0/11:0002" {
 
               match if option agent.circuit-id = "hpe-officeconnect-1910-48 eth 0/1/0/11:0002";
 
           }
 
           pool {
 
               allow members of "hpe-officeconnect-1910-48 eth 0/1/0/11:0002";
 
               range 192.168.112.100 192.168.112.109;
 
       }


   }
'''192.168.111.180''' - HP Switch c DHCP-Relay, к его портам подключены DHCP-клиенты


}
'''pc1, pc2''' - DHCP-клиенты из сети 192.168.111.0/24, подключенные к портам '''7,9''' устройства HP Switch DHCP-Relay


---
'''pc3''' - DHCP-клиент из сети 192.168.112.0/24, подключенный к порту '''11''' устройства HP Switch DHCP-Relay


<nowiki>#</nowiki>HP Switch DHCP-Relay
= Настройка =


Вход в режим полного управления
== DHCP-сервер ==
<code>yum install dhcp</code>


<nowiki>#</nowiki> пароль: "512900" или "Jinhua1920unauthorized"
<code>nano /etc/dhcp/dhcpd.conf</code>
<nowiki>#</nowiki> DHCP Server Configuration file.
<nowiki>#</nowiki> see /usr/share/doc/dhcp*/dhcpd.conf.sample
<nowiki>#</nowiki> 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 {
}
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;
           # hpe-officeconnect-1910-48 eth 0/1/0/7:0001
           # 0001 - vlan 1
           class "hpe-officeconnect-1910-48 eth 0/1/0/7:0001" {
               match if option agent.circuit-id = "hpe-officeconnect-1910-48 eth 0/1/0/7:0001";
           }
           pool {
               allow members of "hpe-officeconnect-1910-48 eth 0/1/0/7:0001";
               range 192.168.111.100 192.168.111.109;
           }
           # hpe-officeconnect-1910-48 eth 0/1/0/9:0001
           # 0001 - vlan 1
           class "hpe-officeconnect-1910-48 eth 0/1/0/9:0001" {
               match if option agent.circuit-id = "hpe-officeconnect-1910-48 eth 0/1/0/9:0001";
           }
           pool {
               allow members of "hpe-officeconnect-1910-48 eth 0/1/0/9:0001";
               range 192.168.111.200 192.168.111.209;
       }
   }
}
shared-network "192.168.112.0" {
       subnet 192.168.112.0 netmask 255.255.255.0 {
           option broadcast-address 192.168.112.255;
           option routers 192.168.112.1;
           option subnet-mask 255.255.255.0;
           option domain-name-servers 192.168.112.1,77.88.8.8;
           # hpe-officeconnect-1910-48 eth 0/1/0/11:0002
           # 0002 - vlan 2
           class "hpe-officeconnect-1910-48 eth 0/1/0/11:0002" {
               match if option agent.circuit-id = "hpe-officeconnect-1910-48 eth 0/1/0/11:0002";
           }
           pool {
               allow members of "hpe-officeconnect-1910-48 eth 0/1/0/11:0002";
               range 192.168.112.100 192.168.112.109;
       }
    }
}


<hpe-officeconnect-1910-48> _cmdline-mode on
== HP Switch DHCP-Relay ==
Вход в режим полного управления<blockquote>пароль: "'''512900'''" или "'''Jinhua1920unauthorized'''"</blockquote><code><hpe-officeconnect-1910-48> _cmdline-mode on</code>


Переходим в режим конфигурирования
Переходим в режим конфигурирования


<hpe-officeconnect-1910-48> system-view
<code><hpe-officeconnect-1910-48> system-view</code>


Имя хоста
Имя хоста


[hpe-officeconnect-1910-48] sysname hpe-officeconnect-1910-48
<code>[hpe-officeconnect-1910-48] sysname hpe-officeconnect-1910-48</code>


Включаем службу DHCP
Включаем службу DHCP


[hpe-officeconnect-1910-48] dhcp enable
<code>[hpe-officeconnect-1910-48] dhcp enable</code>
 
   ...
   ...
   DHCP is enabled successfully!
 
   ...
   DHCP is enabled successfully!
 
   ...
 
Указываем номер группы серверов 0 и IP DHCP-сервера, на который Relay будет перенаправлять запросы DHCP
Указываем номер группы серверов 0 и IP DHCP-сервера, на который Relay будет перенаправлять запросы DHCP


[hpe-officeconnect-1910-48] dhcp relay server-group 0 ip 192.168.17.186
<code>[hpe-officeconnect-1910-48] dhcp relay server-group 0 ip 192.168.17.186</code>


Включаем DHCP-snooping (чтобы запросы DHCP перенаправлялись к DHCP-серверу, указанному в Relay, иначе запросы пойдут напрямую к DHCP-серверу в сети L2)
Включаем DHCP-snooping (чтобы запросы DHCP перенаправлялись к DHCP-серверу, указанному в Relay, иначе запросы пойдут напрямую к DHCP-серверу в сети L2)


[hpe-officeconnect-1910-48] dhcp-snooping
<code>[hpe-officeconnect-1910-48] dhcp-snooping</code>
 
Vlan 1


=== Vlan 1 ===
Входим в настройки Vlan1 (это умолчальный Vlan, поэтому создавать командой его не нужно, в отличие от других Vlan)
Входим в настройки Vlan1 (это умолчальный Vlan, поэтому создавать командой его не нужно, в отличие от других Vlan)


[hpe-officeconnect-1910-48] interface Vlan-interface 1
<code>[hpe-officeconnect-1910-48] interface Vlan-interface 1</code>
 
Привяжем IP адрес для Vlan 1


<nowiki>#</nowiki> обязательное условие - привязать IP адрес из подсети, из диапазона которой необходимо выдавать IP адреса с помощью с DHCP Option 82
Привяжем IP адрес для Vlan 1<blockquote>Обязательное условие - привязать IP адрес из подсети, из диапазона которой необходимо выдавать IP адреса с помощью с DHCP Option 82</blockquote><code>[hpe-officeconnect-1910-48-Vlan-interface1] ip address 192.168.111.1 255.255.255.0</code>


[hpe-officeconnect-1910-48-Vlan-interface1] ip address 192.168.111.1 255.255.255.0
<code>[hpe-officeconnect-1910-48-Vlan-interface1] quit</code>
 
[hpe-officeconnect-1910-48-Vlan-interface1] quit


Включаем Relay
Включаем Relay


[hpe-officeconnect-1910-48-Vlan-interface1] dhcp relay information enable
<code>[hpe-officeconnect-1910-48-Vlan-interface1] dhcp relay information enable</code>


[hpe-officeconnect-1910-48-Vlan-interface1] dhcp select relay
<code>[hpe-officeconnect-1910-48-Vlan-interface1] dhcp select relay</code>


Вводим Vlan1 в группу DHCP-серверов
Вводим Vlan1 в группу DHCP-серверов


[hpe-officeconnect-1910-48-Vlan-interface1] dhcp relay server-select 0
<code>[hpe-officeconnect-1910-48-Vlan-interface1] dhcp relay server-select 0</code>


Устнанавливаем передачу remote-id и circuit-id в формате ASCII (иначе будет передаваться в HEX и надо будет конвертировать на DHCP-сервере)
Устананавливаем передачу remote-id и circuit-id в формате ASCII (иначе будет передаваться в HEX и надо будет конвертировать на DHCP-сервере)


[hpe-officeconnect-1910-48-Vlan-interface1] dhcp relay information remote-id format-type ascii
<code>[hpe-officeconnect-1910-48-Vlan-interface1] dhcp relay information remote-id format-type ascii</code>


[hpe-officeconnect-1910-48-Vlan-interface1] dhcp relay information circuit-id format-type ascii
<code>[hpe-officeconnect-1910-48-Vlan-interface1] dhcp relay information circuit-id format-type ascii</code>


Устанавливаем формат remote-id и circuit-id
Устанавливаем формат remote-id и circuit-id


[hpe-officeconnect-1910-48-Vlan-interface1] dhcp relay information format verbose node-identifier sysname
<code>[hpe-officeconnect-1910-48-Vlan-interface1] dhcp relay information format verbose node-identifier sysname</code>
 
[hpe-officeconnect-1910-48-Vlan-interface1] dhcp relay information remote-id string sysname
 
[hpe-officeconnect-1910-48-Vlan-interface1] quit
 
Проверка
 
<nowiki>##</nowiki>DHCP-сервер
 
Вставляем клиент pc1 в порт 7 коммутатора HP Switch DHCP-Relay
 
tcpdump -i eth0 -vvv -s 1500 '((port 67 or port 68) and (udp[8:1] = 0x1))'
 
   ...
 
   15:47:11.384185 IP (tos 0xe0, ttl 253, id 378, offset 0, flags [none], proto UDP (17), length 405)
 
       192.168.17.7.bootps > centos7-test01.bootps: [udp sum ok] BOOTP/DHCP, Request from cc:2d:e0:39:20:c0 (oui Unknown), length 377, hops 1, xid 0x4d532f86, Flags [Broadcast] (0x8000)
 
           Gateway-IP 192.168.111.180
 
           Client-Ethernet-Address cc:2d:e0:39:20:c0 (oui Unknown)
 
           Vendor-rfc1048 Extensions
 
               Magic Cookie 0x63825363
 
               DHCP-Message Option 53, length 1: Request
 
               Server-ID Option 54, length 4: 10.29.24.1
 
               Requested-IP Option 50, length 4: 192.168.111.175
 
               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 71:
 
               Circuit-ID SubOption 1, length 42: hpe-officeconnect-1910-48 eth 0/1/0/7:0001
 
               Remote-ID SubOption 2, length 25: hpe-officeconnect-1910-48
 
               END Option 255, length 0
 
   ...
 
   
 
watch -n1 tail -n50 /var/log/messages
 
   ...
 
   Aug 17 22:05:44 centos7-test01 dhcpd: DHCPDISCOVER from cc:2d:e0:39:20:c0 (cless_home_hap-mini-111-212) via 192.168.111.180
 
   Aug 17 22:05:44 centos7-test01 dhcpd: DHCPOFFER on 192.168.111.100 to cc:2d:e0:39:20:c0 (cless_home_hap-mini-111-212) via 192.168.111.180
 
   Aug 17 22:05:44 centos7-test01 dhcpd: DHCPREQUEST for 192.168.111.100 (192.168.17.186) from cc:2d:e0:39:20:c0 (cless_home_hap-mini-111-212) via 192.168.111.180
 
   Aug 17 22:05:44 centos7-test01 dhcpd: DHCPACK on 192.168.111.100 to cc:2d:e0:39:20:c0 (cless_home_hap-mini-111-212) via 192.168.111.180
 
   ...
 
pc1 получает адрес 192.168.111.100
 
Вставляем клиент pc2 в порт 9 коммутатора HP Switch DHCP-Relay
 
watch -n1 tail -n50 /var/log/messages
 
   ...


   Aug 17 22:07:11 centos7-test01 dhcpd: DHCPDISCOVER from cc:2d:e0:39:20:c0 (cless_home_hap-mini-111-212) via 192.168.111.180
<code>[hpe-officeconnect-1910-48-Vlan-interface1] dhcp relay information remote-id string sysname</code>


   Aug 17 22:07:11 centos7-test01 dhcpd: DHCPOFFER on 192.168.111.200 to cc:2d:e0:39:20:c0 (cless_home_hap-mini-111-212) via 192.168.111.180
<code>[hpe-officeconnect-1910-48-Vlan-interface1] quit</code>


   Aug 17 22:07:11 centos7-test01 dhcpd: DHCPREQUEST for 192.168.111.200 (192.168.17.186) from cc:2d:e0:39:20:c0 (cless_home_hap-mini-111-212) via 192.168.111.180
=== Проверка ===


   Aug 17 22:07:11 centos7-test01 dhcpd: DHCPACK on 192.168.111.200 to cc:2d:e0:39:20:c0 (cless_home_hap-mini-111-212) via 192.168.111.180
==== DHCP-сервер ====
Вставляем клиент '''pc1''' в порт '''7''' коммутатора '''HP Switch DHCP-Relay'''


   ...
<code>tcpdump -i eth0 -vvv -s 1500 '((port 67 or port 68) and (udp[8:1] = 0x1))'</code>
   ...
   15:47:11.384185 IP (tos 0xe0, ttl 253, id 378, offset 0, flags [none], proto UDP (17), length 405)
       192.168.17.7.bootps > centos7-test01.bootps: [udp sum ok] BOOTP/DHCP, Request from cc:2d:e0:39:20:c0 (oui Unknown), length 377, hops 1, xid 0x4d532f86, Flags [Broadcast] (0x8000)
           Gateway-IP 192.168.111.180
           Client-Ethernet-Address cc:2d:e0:39:20:c0 (oui Unknown)
           Vendor-rfc1048 Extensions
               Magic Cookie 0x63825363
               DHCP-Message Option 53, length 1: Request
               Server-ID Option 54, length 4: 10.29.24.1
               Requested-IP Option 50, length 4: 192.168.111.175
               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 71:
               Circuit-ID SubOption 1, length 42: hpe-officeconnect-1910-48 eth 0/1/0/7:0001
               Remote-ID SubOption 2, length 25: hpe-officeconnect-1910-48
               END Option 255, length 0
   ...
<code>watch -n1 tail -n50 /var/log/messages</code>
   ...
   Aug 17 22:05:44 centos7-test01 dhcpd: DHCPDISCOVER from cc:2d:e0:39:20:c0 (cless_home_hap-mini-111-212) via 192.168.111.180
   Aug 17 22:05:44 centos7-test01 dhcpd: DHCPOFFER on 192.168.111.100 to cc:2d:e0:39:20:c0 (cless_home_hap-mini-111-212) via 192.168.111.180
   Aug 17 22:05:44 centos7-test01 dhcpd: DHCPREQUEST for 192.168.111.100 (192.168.17.186) from cc:2d:e0:39:20:c0 (cless_home_hap-mini-111-212) via 192.168.111.180
   Aug 17 22:05:44 centos7-test01 dhcpd: DHCPACK on 192.168.111.100 to cc:2d:e0:39:20:c0 (cless_home_hap-mini-111-212) via 192.168.111.180
   ...
'''pc1''' получает адрес 192.168.111.100


pc2 получает адрес 192.168.111.200
Вставляем клиент '''pc2''' в порт '''9''' коммутатора '''HP Switch DHCP-Relay'''


Vlan 2
<code>watch -n1 tail -n50 /var/log/messages</code>
   ...
   Aug 17 22:07:11 centos7-test01 dhcpd: DHCPDISCOVER from cc:2d:e0:39:20:c0 (cless_home_hap-mini-111-212) via 192.168.111.180
   Aug 17 22:07:11 centos7-test01 dhcpd: DHCPOFFER on 192.168.111.200 to cc:2d:e0:39:20:c0 (cless_home_hap-mini-111-212) via 192.168.111.180
   Aug 17 22:07:11 centos7-test01 dhcpd: DHCPREQUEST for 192.168.111.200 (192.168.17.186) from cc:2d:e0:39:20:c0 (cless_home_hap-mini-111-212) via 192.168.111.180
   Aug 17 22:07:11 centos7-test01 dhcpd: DHCPACK on 192.168.111.200 to cc:2d:e0:39:20:c0 (cless_home_hap-mini-111-212) via 192.168.111.180
   ...
'''pc2''' получает адрес '''192.168.111.200'''


<nowiki>##</nowiki> Важное условие
=== Vlan 2 ===
<blockquote>Важное условие


DHCP-сервер на Centos 7 192.168.17.186 и HP Switch DHCP-Relay (оба интерфейса с адресами 192.168.111.1 и 192.168.112.1) должны видеть друг друга по L3! Проверить сразу доступность пингами!
DHCP-сервер на Centos 7 192.168.17.186 и HP Switch DHCP-Relay (оба интерфейса с адресами 192.168.111.1 и 192.168.112.1) должны видеть друг друга по L3! Проверить сразу доступность пингами!
Строка 335: Строка 226:
Для этого порт, которым HP Switch DHCP-Relay подключен в общую сеть Vlan 2 (в нашем случае Ethernet 1/0/1) должен быть настроен с типом Hybrid и включен в Vlan 1 типа untagged и Vlan 2 типа tagged:
Для этого порт, которым HP Switch DHCP-Relay подключен в общую сеть Vlan 2 (в нашем случае Ethernet 1/0/1) должен быть настроен с типом Hybrid и включен в Vlan 1 типа untagged и Vlan 2 типа tagged:


interface Ethernet1/0/1
<code>interface Ethernet1/0/1</code>
 
port link-type hybrid


port hybrid vlan 2 tagged
    <code>port link-type hybrid</code>


port hybrid vlan 1 untagged
    <code>port hybrid vlan 2 tagged</code>


А также на портах всех промежуточных устройств L2 и L3, через которые проходит коммутация от HP Switch DHCP-Relay до маршрутизатора, ведущего к DHCP-серверу, должен быть настроен Vlan 2. Например, если коммутация проходит через Mikrotik, то на его портах, через которые проходит коммутация, должен быть настроен Vlan 2, а эти порты собраны в бридж
    <code>port hybrid vlan 1 untagged</code>


Создадим Vlan 2
А также на портах всех промежуточных устройств L2 и L3, через которые проходит коммутация от HP Switch DHCP-Relay до маршрутизатора, ведущего к DHCP-серверу, должен быть настроен Vlan 2. Например, если коммутация проходит через Mikrotik, то на его портах, через которые проходит коммутация, должен быть настроен Vlan 2, а эти порты собраны в бридж</blockquote>Создадим Vlan 2


[hpe-officeconnect-1910-48] vlan 2
<code>[hpe-officeconnect-1910-48] vlan 2</code>


Добавим физический интерфейс в Vlan 2
Добавим физический интерфейс в Vlan 2


[hpe-officeconnect-1910-48-vlan2] port Ethernet 1/0/11
<code>[hpe-officeconnect-1910-48-vlan2] port Ethernet 1/0/11</code>


Привяжем IP-адрес для Vlan 2
Привяжем IP-адрес для Vlan 2


[hpe-officeconnect-1910-48] interface Vlan-interface 2
<code>[hpe-officeconnect-1910-48] interface Vlan-interface 2</code>


[hpe-officeconnect-1910-48-Vlan-interface2] ip address 192.168.112.1 255.255.255.0
<code>[hpe-officeconnect-1910-48-Vlan-interface2] ip address 192.168.112.1 255.255.255.0</code>


[hpe-officeconnect-1910-48-Vlan-interface2] quit
<code>[hpe-officeconnect-1910-48-Vlan-interface2] quit</code>


Включаем Relay
Включаем Relay


[hpe-officeconnect-1910-48-Vlan-interface2] dhcp relay information enable
<code>[hpe-officeconnect-1910-48-Vlan-interface2] dhcp relay information enable</code>


[hpe-officeconnect-1910-48-Vlan-interface2] dhcp select relay
<code>[hpe-officeconnect-1910-48-Vlan-interface2] dhcp select relay</code>


Вводим Vlan1 в группу DHCP-серверов
Вводим Vlan1 в группу DHCP-серверов


[hpe-officeconnect-1910-48-Vlan-interface2] dhcp relay server-select 0
<code>[hpe-officeconnect-1910-48-Vlan-interface2] dhcp relay server-select 0</code>


Устнанавливаем передачу remote-id и circuit-id в формате ASCII (иначе будет передаваться в HEX и надо будет конвертировать на DHCP-сервере)
Устнанавливаем передачу remote-id и circuit-id в формате ASCII (иначе будет передаваться в HEX и надо будет конвертировать на DHCP-сервере)


[hpe-officeconnect-1910-48-Vlan-interface2] dhcp relay information remote-id format-type ascii
<code>[hpe-officeconnect-1910-48-Vlan-interface2] dhcp relay information remote-id format-type ascii</code>


[hpe-officeconnect-1910-48-Vlan-interface2] dhcp relay information circuit-id format-type ascii
<code>[hpe-officeconnect-1910-48-Vlan-interface2] dhcp relay information circuit-id format-type ascii</code>


Устанавливаем формат remote-id и circuit-id
Устанавливаем формат remote-id и circuit-id


[hpe-officeconnect-1910-48-Vlan-interface2] dhcp relay information format verbose node-identifier sysname
<code>[hpe-officeconnect-1910-48-Vlan-interface2] dhcp relay information format verbose node-identifier sysname</code>
 
[hpe-officeconnect-1910-48-Vlan-interface2] dhcp relay information remote-id string sysname
 
[hpe-officeconnect-1910-48-Vlan-interface2] quit
 
Проверка
 
<nowiki>##</nowiki>DHCP-сервер
 
Вставляем клиент pc3 в порт 11 коммутатора HP Switch DHCP-Relay
 
watch -n1 tail -n50 /var/log/messages
 
   ...
 
   Aug 17 21:47:29 centos7-test01 dhcpd: DHCPDISCOVER from cc:2d:e0:39:20:c0 via 192.168.112.224


   Aug 17 21:47:30 centos7-test01 dhcpd: DHCPOFFER on 192.168.112.100 to cc:2d:e0:39:20:c0 (cless_home_hap-mini-111-212) via 192.168.112.224
<code>[hpe-officeconnect-1910-48-Vlan-interface2] dhcp relay information remote-id string sysname</code>


   Aug 17 21:47:30 centos7-test01 dhcpd: DHCPREQUEST for 192.168.112.100 (192.168.17.186) from cc:2d:e0:39:20:c0 (cless_home_hap-mini-111-212) via 192.168.112.224
<code>[hpe-officeconnect-1910-48-Vlan-interface2] quit</code>


   Aug 17 21:47:30 centos7-test01 dhcpd: DHCPACK on 192.168.112.100 to cc:2d:e0:39:20:c0 (cless_home_hap-mini-111-212) via 192.168.112.224
=== Проверка ===


   ...
==== DHCP-сервер ====
Вставляем клиент '''pc3''' в порт '''11''' коммутатора '''HP Switch DHCP-Relay'''


pc3 получает адрес 192.168.112.100
<code>watch -n1 tail -n50 /var/log/messages</code>
   ...
   Aug 17 21:47:29 centos7-test01 dhcpd: DHCPDISCOVER from cc:2d:e0:39:20:c0 via 192.168.112.224
   Aug 17 21:47:30 centos7-test01 dhcpd: DHCPOFFER on 192.168.112.100 to cc:2d:e0:39:20:c0 (cless_home_hap-mini-111-212) via 192.168.112.224
   Aug 17 21:47:30 centos7-test01 dhcpd: DHCPREQUEST for 192.168.112.100 (192.168.17.186) from cc:2d:e0:39:20:c0 (cless_home_hap-mini-111-212) via 192.168.112.224
   Aug 17 21:47:30 centos7-test01 dhcpd: DHCPACK on 192.168.112.100 to cc:2d:e0:39:20:c0 (cless_home_hap-mini-111-212) via 192.168.112.224
   ...
'''pc3''' получает адрес 192.168.112.100

Версия 09:23, 18 августа 2022


Ссылки

http://www.miquels.cistron.nl/isc-dhcpd/

http://xgu.ru/wiki/%D0%9E%D0%BF%D1%86%D0%B8%D1%8F_82_DHCP

Описание

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

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

   agent.circuit-id (Имя устройства HP Switch DHCP-Relay и порта HP Switch DHCP-Relay, в который пришел DHCP запрос от клиента - в нашем случае "hpe-officeconnect-1910-48 eth 0/1/0/7:0001")

   agent.remote-id (Имя усройства HP Switch DHCP-Relay, в который пришел DHCP запрос от клиента - в нашем случае "hpe-officeconnect-1910-48")

DHCP-сервер на основании agent.circuit-id определяет из какого диапазона выдать IP-адрес исходя из правил.

Можно на DHCP-сервере Centos 7 определить приходящие agent.circuit-id и agent.remote-id в пакетах DHCP через tcpdump (после настройки на HP Switch службы DHCP-Relay).

Запустим в консоли

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

Далее запустим DHCP-клиент на устройстве-клиенте и увидим в выводе tcpdump примерно следующее:

hpe-officeconnect-1910-48 - имя устройства

eth 0/1/0/7 - номер порта

0001 - Vlan ID

   ...
   Circuit-ID SubOption 1, length 42: hpe-officeconnect-1910-48 eth 0/1/0/7:0001
   Remote-ID SubOption 2, length 25: hpe-officeconnect-1910-48
   ...

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

Option82-hp-switch-relay-topology.jpg

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

192.168.111.180 - HP Switch c DHCP-Relay, к его портам подключены DHCP-клиенты

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

pc3 - DHCP-клиент из сети 192.168.112.0/24, подключенный к порту 11 устройства HP Switch 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 {
}

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;

           # hpe-officeconnect-1910-48 eth 0/1/0/7:0001
           # 0001 - vlan 1
           class "hpe-officeconnect-1910-48 eth 0/1/0/7:0001" {
               match if option agent.circuit-id = "hpe-officeconnect-1910-48 eth 0/1/0/7:0001";
           }

           pool {
               allow members of "hpe-officeconnect-1910-48 eth 0/1/0/7:0001";
               range 192.168.111.100 192.168.111.109;
           }

           # hpe-officeconnect-1910-48 eth 0/1/0/9:0001
           # 0001 - vlan 1
           class "hpe-officeconnect-1910-48 eth 0/1/0/9:0001" {
               match if option agent.circuit-id = "hpe-officeconnect-1910-48 eth 0/1/0/9:0001";
           }

           pool {
               allow members of "hpe-officeconnect-1910-48 eth 0/1/0/9:0001";
               range 192.168.111.200 192.168.111.209;
       }
   }
}

shared-network "192.168.112.0" {
       subnet 192.168.112.0 netmask 255.255.255.0 {
           option broadcast-address 192.168.112.255;
           option routers 192.168.112.1;
           option subnet-mask 255.255.255.0;
           option domain-name-servers 192.168.112.1,77.88.8.8;

           # hpe-officeconnect-1910-48 eth 0/1/0/11:0002
           # 0002 - vlan 2
           class "hpe-officeconnect-1910-48 eth 0/1/0/11:0002" {
               match if option agent.circuit-id = "hpe-officeconnect-1910-48 eth 0/1/0/11:0002";
           }

           pool {
               allow members of "hpe-officeconnect-1910-48 eth 0/1/0/11:0002";
               range 192.168.112.100 192.168.112.109;
       }
   }
}

HP Switch DHCP-Relay

Вход в режим полного управления

пароль: "512900" или "Jinhua1920unauthorized"

<hpe-officeconnect-1910-48> _cmdline-mode on

Переходим в режим конфигурирования

<hpe-officeconnect-1910-48> system-view

Имя хоста

[hpe-officeconnect-1910-48] sysname hpe-officeconnect-1910-48

Включаем службу DHCP

[hpe-officeconnect-1910-48] dhcp enable

   ...
   DHCP is enabled successfully!
   ...

Указываем номер группы серверов 0 и IP DHCP-сервера, на который Relay будет перенаправлять запросы DHCP

[hpe-officeconnect-1910-48] dhcp relay server-group 0 ip 192.168.17.186

Включаем DHCP-snooping (чтобы запросы DHCP перенаправлялись к DHCP-серверу, указанному в Relay, иначе запросы пойдут напрямую к DHCP-серверу в сети L2)

[hpe-officeconnect-1910-48] dhcp-snooping

Vlan 1

Входим в настройки Vlan1 (это умолчальный Vlan, поэтому создавать командой его не нужно, в отличие от других Vlan)

[hpe-officeconnect-1910-48] interface Vlan-interface 1

Привяжем IP адрес для Vlan 1

Обязательное условие - привязать IP адрес из подсети, из диапазона которой необходимо выдавать IP адреса с помощью с DHCP Option 82

[hpe-officeconnect-1910-48-Vlan-interface1] ip address 192.168.111.1 255.255.255.0

[hpe-officeconnect-1910-48-Vlan-interface1] quit

Включаем Relay

[hpe-officeconnect-1910-48-Vlan-interface1] dhcp relay information enable

[hpe-officeconnect-1910-48-Vlan-interface1] dhcp select relay

Вводим Vlan1 в группу DHCP-серверов

[hpe-officeconnect-1910-48-Vlan-interface1] dhcp relay server-select 0

Устананавливаем передачу remote-id и circuit-id в формате ASCII (иначе будет передаваться в HEX и надо будет конвертировать на DHCP-сервере)

[hpe-officeconnect-1910-48-Vlan-interface1] dhcp relay information remote-id format-type ascii

[hpe-officeconnect-1910-48-Vlan-interface1] dhcp relay information circuit-id format-type ascii

Устанавливаем формат remote-id и circuit-id

[hpe-officeconnect-1910-48-Vlan-interface1] dhcp relay information format verbose node-identifier sysname

[hpe-officeconnect-1910-48-Vlan-interface1] dhcp relay information remote-id string sysname

[hpe-officeconnect-1910-48-Vlan-interface1] quit

Проверка

DHCP-сервер

Вставляем клиент pc1 в порт 7 коммутатора HP Switch DHCP-Relay

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

   ...
   15:47:11.384185 IP (tos 0xe0, ttl 253, id 378, offset 0, flags [none], proto UDP (17), length 405)
       192.168.17.7.bootps > centos7-test01.bootps: [udp sum ok] BOOTP/DHCP, Request from cc:2d:e0:39:20:c0 (oui Unknown), length 377, hops 1, xid 0x4d532f86, Flags [Broadcast] (0x8000)
           Gateway-IP 192.168.111.180
           Client-Ethernet-Address cc:2d:e0:39:20:c0 (oui Unknown)
           Vendor-rfc1048 Extensions
               Magic Cookie 0x63825363
               DHCP-Message Option 53, length 1: Request
               Server-ID Option 54, length 4: 10.29.24.1
               Requested-IP Option 50, length 4: 192.168.111.175
               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 71:
               Circuit-ID SubOption 1, length 42: hpe-officeconnect-1910-48 eth 0/1/0/7:0001
               Remote-ID SubOption 2, length 25: hpe-officeconnect-1910-48
               END Option 255, length 0
   ...

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

   ...
   Aug 17 22:05:44 centos7-test01 dhcpd: DHCPDISCOVER from cc:2d:e0:39:20:c0 (cless_home_hap-mini-111-212) via 192.168.111.180
   Aug 17 22:05:44 centos7-test01 dhcpd: DHCPOFFER on 192.168.111.100 to cc:2d:e0:39:20:c0 (cless_home_hap-mini-111-212) via 192.168.111.180
   Aug 17 22:05:44 centos7-test01 dhcpd: DHCPREQUEST for 192.168.111.100 (192.168.17.186) from cc:2d:e0:39:20:c0 (cless_home_hap-mini-111-212) via 192.168.111.180
   Aug 17 22:05:44 centos7-test01 dhcpd: DHCPACK on 192.168.111.100 to cc:2d:e0:39:20:c0 (cless_home_hap-mini-111-212) via 192.168.111.180
   ...

pc1 получает адрес 192.168.111.100

Вставляем клиент pc2 в порт 9 коммутатора HP Switch DHCP-Relay

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

   ...
   Aug 17 22:07:11 centos7-test01 dhcpd: DHCPDISCOVER from cc:2d:e0:39:20:c0 (cless_home_hap-mini-111-212) via 192.168.111.180
   Aug 17 22:07:11 centos7-test01 dhcpd: DHCPOFFER on 192.168.111.200 to cc:2d:e0:39:20:c0 (cless_home_hap-mini-111-212) via 192.168.111.180
   Aug 17 22:07:11 centos7-test01 dhcpd: DHCPREQUEST for 192.168.111.200 (192.168.17.186) from cc:2d:e0:39:20:c0 (cless_home_hap-mini-111-212) via 192.168.111.180
   Aug 17 22:07:11 centos7-test01 dhcpd: DHCPACK on 192.168.111.200 to cc:2d:e0:39:20:c0 (cless_home_hap-mini-111-212) via 192.168.111.180
   ...

pc2 получает адрес 192.168.111.200

Vlan 2

Важное условие

DHCP-сервер на Centos 7 192.168.17.186 и HP Switch DHCP-Relay (оба интерфейса с адресами 192.168.111.1 и 192.168.112.1) должны видеть друг друга по L3! Проверить сразу доступность пингами!

Для этого порт, которым HP Switch DHCP-Relay подключен в общую сеть Vlan 2 (в нашем случае Ethernet 1/0/1) должен быть настроен с типом Hybrid и включен в Vlan 1 типа untagged и Vlan 2 типа tagged:

interface Ethernet1/0/1

port link-type hybrid

port hybrid vlan 2 tagged

port hybrid vlan 1 untagged

А также на портах всех промежуточных устройств L2 и L3, через которые проходит коммутация от HP Switch DHCP-Relay до маршрутизатора, ведущего к DHCP-серверу, должен быть настроен Vlan 2. Например, если коммутация проходит через Mikrotik, то на его портах, через которые проходит коммутация, должен быть настроен Vlan 2, а эти порты собраны в бридж

Создадим Vlan 2

[hpe-officeconnect-1910-48] vlan 2

Добавим физический интерфейс в Vlan 2

[hpe-officeconnect-1910-48-vlan2] port Ethernet 1/0/11

Привяжем IP-адрес для Vlan 2

[hpe-officeconnect-1910-48] interface Vlan-interface 2

[hpe-officeconnect-1910-48-Vlan-interface2] ip address 192.168.112.1 255.255.255.0

[hpe-officeconnect-1910-48-Vlan-interface2] quit

Включаем Relay

[hpe-officeconnect-1910-48-Vlan-interface2] dhcp relay information enable

[hpe-officeconnect-1910-48-Vlan-interface2] dhcp select relay

Вводим Vlan1 в группу DHCP-серверов

[hpe-officeconnect-1910-48-Vlan-interface2] dhcp relay server-select 0

Устнанавливаем передачу remote-id и circuit-id в формате ASCII (иначе будет передаваться в HEX и надо будет конвертировать на DHCP-сервере)

[hpe-officeconnect-1910-48-Vlan-interface2] dhcp relay information remote-id format-type ascii

[hpe-officeconnect-1910-48-Vlan-interface2] dhcp relay information circuit-id format-type ascii

Устанавливаем формат remote-id и circuit-id

[hpe-officeconnect-1910-48-Vlan-interface2] dhcp relay information format verbose node-identifier sysname

[hpe-officeconnect-1910-48-Vlan-interface2] dhcp relay information remote-id string sysname

[hpe-officeconnect-1910-48-Vlan-interface2] quit

Проверка

DHCP-сервер

Вставляем клиент pc3 в порт 11 коммутатора HP Switch DHCP-Relay

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

   ...
   Aug 17 21:47:29 centos7-test01 dhcpd: DHCPDISCOVER from cc:2d:e0:39:20:c0 via 192.168.112.224
   Aug 17 21:47:30 centos7-test01 dhcpd: DHCPOFFER on 192.168.112.100 to cc:2d:e0:39:20:c0 (cless_home_hap-mini-111-212) via 192.168.112.224
   Aug 17 21:47:30 centos7-test01 dhcpd: DHCPREQUEST for 192.168.112.100 (192.168.17.186) from cc:2d:e0:39:20:c0 (cless_home_hap-mini-111-212) via 192.168.112.224
   Aug 17 21:47:30 centos7-test01 dhcpd: DHCPACK on 192.168.112.100 to cc:2d:e0:39:20:c0 (cless_home_hap-mini-111-212) via 192.168.112.224
   ...

pc3 получает адрес 192.168.112.100