naves Posted May 12, 2019 · Report post On 5/9/2019 at 1:49 PM, max1976 said: Очень часто встречаются кривые клиенты, постоянно запрашивающие адрес, что приводит к нагрузкам на БД. Постоянно, это сколько раз в секунду в сумме от всех? Как же вебхостинги с сайтами живут-то. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
Heggi Posted May 13, 2019 · Report post В 09.05.2019 в 12:36, Troj сказал: можете поделится модулем? https://gist.github.com/heggi/90390c135bef31640bbb8f74e1cb0fb4 Мы для определения порта коммутатора берем последние 6 байт от remoteid (это MAC-адрес) и последний байт от circuitid (это номер порта), модуль это приводит к flexid, состоящему из 7 байт. В БД это запихивать примерно так: INSERT INTO hosts (dhcp_identifier, dhcp_identifier_type, dhcp4_subnet_id, ipv4_address) VALUES (unhex('11223344556601'), 4, 1, INET_ATON('192.0.2.160')); где 11223344556601 - это мак-адрес + номер порта в hex. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
Troj Posted May 13, 2019 · Report post 1 час назад, Heggi сказал: https://gist.github.com/heggi/90390c135bef31640bbb8f74e1cb0fb4 Мы для определения порта коммутатора берем последние 6 байт от remoteid (это MAC-адрес) и последний байт от circuitid (это номер порта), модуль это приводит к flexid, состоящему из 7 байт. В БД это запихивать примерно так: INSERT INTO hosts (dhcp_identifier, dhcp_identifier_type, dhcp4_subnet_id, ipv4_address) VALUES (unhex('11223344556601'), 4, 1, INET_ATON('192.0.2.160')); где 11223344556601 - это мак-адрес + номер порта в hex. спасибо! буду разбираться. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
scorpdenis Posted February 8, 2022 · Report post В 13.05.2019 в 09:33, Heggi сказал: https://gist.github.com/heggi/90390c135bef31640bbb8f74e1cb0fb4 Мы для определения порта коммутатора берем последние 6 байт от remoteid (это MAC-адрес) и последний байт от circuitid (это номер порта), модуль это приводит к flexid, состоящему из 7 байт. В БД это запихивать примерно так: INSERT INTO hosts (dhcp_identifier, dhcp_identifier_type, dhcp4_subnet_id, ipv4_address) VALUES (unhex('11223344556601'), 4, 1, INET_ATON('192.0.2.160')); где 11223344556601 - это мак-адрес + номер порта в hex. Добрый день, подниму тему, это решение прекрасно, но хотелось бы получать вместо мака свитча его ip, не хватает мне знаний чтобы поправить так чтобы вместо мака вставлялся relay ip, чтобы на выходе получить flex id вида x.x.x.x-y Можете помочь с решением? Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
Стич Posted May 24, 2022 (edited) · Report post В kea Option82 работает и без хуков по сравнению с isc очень шустро. "client-classes": [ { "name": "10.2.12.12_0_1", "test": "substring(relay4[1].hex,-2,2)==0x0001" }, { "name": "10.2.12.12_0_2", "test": "substring(relay4[1].hex,-2,2)==0x0002" }, .... ], "shared-networks": [ { "name": "10.2.12.12", "relay": { "ip-address": "10.2.12.12" }, "subnet4": [ { "subnet": "10.247.17.0/24", "option-data": [ { "name": "routers", "data": "10.247.17.1" } ], "pools": [ { "pool": "10.247.17.10 - 10.247.17.14", "client-class": "10.2.12.12_0_1" }, { "pool": "10.247.17.18 - 10.247.17.22", "client-class": "10.2.12.12_0_2" } ] } ] }, { "name": "10.2.12.13", "relay": { "ip-address": "10.2.12.13" }, "subnet4": [ ... ] } ] Edited May 24, 2022 by Стич Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
ixi Posted May 24, 2022 · Report post В 24.05.2022 в 11:00, Стич сказал: В kea Option82 работает и без хуков по сравнению с isc очень шустро. Уже работает и общедоступен? раньше было только через премиум модуль Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
Стич Posted May 24, 2022 · Report post В 24.05.2022 в 13:32, ixi сказал: Уже работает и общедоступен? раньше было только через премиум модуль Да общедоступен. Скачал исходники kea-2.0.2 скомпилировал без доп настроек всё работает. Параметр relay4 описан здесь https://kea.readthedocs.io/en/latest/arm/classify.html Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
asdas Posted October 30, 2022 · Report post мой сенсей наказал поделиться моим решением и поблагодарить общество. Выполняю его просьбу. kea dhcp version 2.2.0 в kea-dhcp4.conf //...... "client-classes": [ <? include "/opt/kea/dhcp/192.168.17.134_1630.class" ?> //...... ], "shared-networks": [ { "name": "vlan_1630", "relay": { "ip-address": "10.80.130.1" }, "subnet4": [ { "id": 1630, "subnet": "10.80.130.0/24", "option-data": [ { "name": "routers", "data": "10.80.130.1" } ], "pools": [ <? include "/opt/kea/dhcp/192.168.17.134_1630.subnet" ?> //...... ] } ] }, //...... в 192.168.17.134_1630.class //...... { "name": "192.168.17.134_1630_7", "test": "(substring(relay4[1].hex,5,1)==0x07 and hexstring(substring(option[82].option[2].hex,2,6),':')=='10:47:80:36:64:b5')"}, { "name": "192.168.17.134_1630_8", "test": "(substring(relay4[1].hex,5,1)==0x08 and hexstring(substring(option[82].option[2].hex,2,6),':')=='10:47:80:36:64:b5')"}, { "name": "192.168.17.134_1630_9", "test": "(substring(relay4[1].hex,5,1)==0x09 and hexstring(substring(option[82].option[2].hex,2,6),':')=='10:47:80:36:64:b5')"}, { "name": "192.168.17.134_1630_10", "test": "(substring(relay4[1].hex,5,1)==0x0a and hexstring(substring(option[82].option[2].hex,2,6),':')=='10:47:80:36:64:b5')"}, { "name": "192.168.17.134_1630_11", "test": "(substring(relay4[1].hex,5,1)==0x0b and hexstring(substring(option[82].option[2].hex,2,6),':')=='10:47:80:36:64:b5')"}, { "name": "192.168.17.134_1630_12", "test": "(substring(relay4[1].hex,5,1)==0x0c and hexstring(substring(option[82].option[2].hex,2,6),':')=='10:47:80:36:64:b5')"}, { "name": "192.168.17.134_1630_13", "test": "(substring(relay4[1].hex,5,1)==0x0d and hexstring(substring(option[82].option[2].hex,2,6),':')=='10:47:80:36:64:b5')"}, //...... в 192.168.17.134_1630.subnet //...... { "pool": "10.80.130.7/32", "client-class": "192.168.17.134_1630_6" }, { "pool": "10.80.130.8/32", "client-class": "192.168.17.134_1630_7" }, { "pool": "10.80.130.9/32", "client-class": "192.168.17.134_1630_8" }, { "pool": "10.80.130.10/32", "client-class": "192.168.17.134_1630_9" }, { "pool": "10.80.130.11/32", "client-class": "192.168.17.134_1630_10" }, { "pool": "10.80.130.12/32", "client-class": "192.168.17.134_1630_11" }, { "pool": "10.80.130.13/32", "client-class": "192.168.17.134_1630_12" }, //...... Cтич, благодарю за пример конфига. *я всего лишь добавил привязку к мак адресу коммутатора remoute-id и разбил на инклюды. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...