Jump to content
Калькуляторы
On 5/9/2019 at 1:49 PM, max1976 said:

Очень часто встречаются кривые клиенты, постоянно запрашивающие адрес, что приводит к нагрузкам на БД.

Постоянно, это сколько раз в секунду в сумме от всех?

Как же вебхостинги с сайтами живут-то.

Share this post


Link to post
Share on other sites

В 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.

 

 

 

Share this post


Link to post
Share on other sites

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.

 

 

 

спасибо! буду разбираться.

Share this post


Link to post
Share on other sites

В 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

Можете помочь с решением?

Share this post


Link to post
Share on other sites

В 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 by Стич

Share this post


Link to post
Share on other sites

В 24.05.2022 в 11:00, Стич сказал:

В kea Option82 работает и без хуков по сравнению с isc очень шустро.

Уже работает и общедоступен? раньше было только через премиум модуль

Share this post


Link to post
Share on other sites

В 24.05.2022 в 13:32, ixi сказал:

Уже работает и общедоступен? раньше было только через премиум модуль

Да общедоступен. Скачал исходники kea-2.0.2 скомпилировал без доп настроек всё работает.

Параметр relay4 описан здесь

https://kea.readthedocs.io/en/latest/arm/classify.html

 

Share this post


Link to post
Share on other sites

мой сенсей наказал поделиться моим решением и поблагодарить общество. Выполняю его просьбу.

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 и разбил на инклюды.

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.