Тут показані розбіжності між вибраною ревізією та поточною версією сторінки.
Наступна ревізія | Попередня ревізія | ||
option82 [2022/09/24 14:39] 127.0.0.1 зовнішнє редагування |
option82 [2023/07/08 14:11] (поточний) nightfly |
||
---|---|---|---|
Рядок 1: | Рядок 1: | ||
====== Mini FAQ ====== | ====== Mini FAQ ====== | ||
- | Q: Что требуется | + | Q: Що потрібно від |
- | A: Иметь настроенный и работающий dhcp relay с включенной option 82, dhcp snooping не пропускающий | + | A: Мати налаштований і працюючий dhcp relay з увімкненою option 82, dhcp snooping, що не пропускає клієнтські запити |
- | Q: На каких свичах | + | Q: На яких свічах |
- | A: На всех - уровня доступа.\\ | + | A: На всіх - рівня доступу.\\ |
- | Q: У нас тут пол сети на мыльницах, это | + | Q: У нас тут пів мережі |
- | A: Произошла критическая ошибка - у вас недостаточно денег | + | A: Сталася критична помилка - у вас недостатньо грошей для |
- | ====== Настройка Ubilling | + | ====== Налаштування |
- | Для того, | + | Для того, |
- | 1. Подсеть пользователей | + | 1. Підмережу користувачів |
- | ^ ID ^ Начальная ІР ^ Последняя ІР ^ Сеть/CIDR ^ Тип | + | ^ ID ^ Початкова ІР ^ Остання ІР ^ Мережа/CIDR ^ Тип |
| 1 | 172.16.0.0 | | 1 | 172.16.0.0 | ||
- | 2. / | + | 2. / |
<file ini rc.conf> | <file ini rc.conf> | ||
ifconfig_em0=" | ifconfig_em0=" | ||
Рядок 63: | Рядок 64: | ||
log(info, " | log(info, " | ||
- | if exists agent.remote-id { | + | if exists agent.remote-id and exists agent.circuit-id { |
- | set clip = binary-to-ascii(10, | + | if binary-to-ascii(16, |
- | set clremote = binary-to-ascii(16, | + | set switch-mac = concat(" |
- | set clcircuit = binary-to-ascii(10, | + | # log(info, |
+ | } else { | ||
+ | # set switch-mac = binary-to-ascii(16, | ||
+ | # log(info, | ||
+ | set switch-mac = concat ( | ||
+ | suffix (concat (" | ||
+ | suffix (concat (" | ||
+ | suffix (concat (" | ||
+ | suffix (concat (" | ||
+ | suffix (concat (" | ||
+ | suffix (concat (" | ||
+ | ); | ||
+ | # log(info, | ||
+ | } | ||
+ | set clip = binary-to-ascii(10, | ||
+ | set clremote = binary-to-ascii(16, | ||
+ | set clcircuit = binary-to-ascii(10, | ||
+ | set switch-port = binary-to-ascii(10, | ||
+ | set switch-port-vlan = binary-to-ascii(10, | ||
- | | + | log( info, |
+ | |||
+ | log( info, | ||
} else { | } else { | ||
- | | + | set clhw = concat ( |
- | suffix (concat (" | + | suffix (concat (" |
- | suffix (concat (" | + | suffix (concat (" |
- | suffix (concat (" | + | suffix (concat (" |
- | suffix (concat (" | + | suffix (concat (" |
- | suffix (concat (" | + | suffix (concat (" |
- | suffix (concat (" | + | suffix (concat (" |
- | ); | + | ); |
- | | + | log( info, |
} | } | ||
log(info, " | log(info, " | ||
- | |||
} | } | ||
Рядок 89: | Рядок 109: | ||
</ | </ | ||
- | 4. Шаблон config/ | + | 4. Шаблон config/ |
- | 5. В конфиге | + | 5. У конфізі |
- | 6. В OnConnect | + | 6. В OnConnect |
- | Исходя из всего вышеуказанного, не сложно заключить, что привязка планируется | + | Виходячи з усього вищевказаного, |
+ | ====== Відлагодження scapy====== | ||
- | ====== Отладка scapy====== | ||
< | < | ||
p=" | p=" | ||
Рядок 106: | Рядок 126: | ||
</ | </ | ||
- | в ответ на что мы должны получить | + | у відповідь |
<file txt dhcpd.log> | <file txt dhcpd.log> | ||
Рядок 121: | Рядок 141: | ||
</ | </ | ||
- | а также при прослушивании при | + | а також під час |
< | < | ||
tcpdump -n -i em0 -s 0 -v -vv | tcpdump -n -i em0 -s 0 -v -vv | ||
</ | </ | ||
- | мы будем наблюдать прилетающие к нам | + | ми спостерігатимемо |
< | < | ||
Рядок 136: | Рядок 157: | ||
- | ====== Особенности работы на свитчах Zyxel ====== | + | ====== Особливості роботи на комутаторах Zyxel ====== |
+ | GS-4012, GS-3012 взагалі не повертають remote-id. Тому орієнтуватися варто тільки на sub-option 1 (Agent Circuit ID). Тож при побудові шаблону потрібно керуватися ось цим: http:// | ||
- | GS-4012, GS-3012 вообще не возвращают remote-id. Поэтому ориентироваться стоит только | ||
{{ : | {{ : | ||
- | В черновом варианте можно оформить это | + | У чорновому варіанті можна оформити це приблизно так: |
< | < | ||
set clremote = binary-to-ascii(10, | set clremote = binary-to-ascii(10, | ||
set clcircuit = binary-to-ascii(10, | set clcircuit = binary-to-ascii(10, | ||
</ | </ | ||
- | а также исправить option82.template в соответствии с этими реалиями | ||
- | что в результате дает нам | + | а також виправити option82.template відповідно до цих реалій |
+ | |||
+ | що в результаті дає нам | ||
< | < | ||
Рядок 159: | Рядок 183: | ||
- | Пример | + | Приклад |
< | < | ||
ip address inband-default 192.168.94.4 255.255.255.0 | ip address inband-default 192.168.94.4 255.255.255.0 | ||
Рядок 177: | Рядок 201: | ||
</ | </ | ||
- | ====== | + | ====== |
- | Для более удобного вылавливания пар remote-id и circuit-id существует сервис аналогичный [[uhw|UHW]] находящийся в **docs/ | + | |
+ | Для зручнішого виловлювання пар remote-id і circuit-id існує сервіс аналогічний [[uhw|UHW]], | ||
+ | |||
+ | |||
+ | | ||
+ | |||
+ | Для того, щоб користувачі могли змінювати свої пристрої скільки завгодно разів, і не чекати, | ||
+ | |||
+ | < | ||
+ | --- server/ | ||
+ | +++ server/ | ||
+ | @@ -31,6 +31,7 @@ | ||
+ | # | ||
+ | # | ||
+ | +extern int flag_dd_option; | ||
+ | | ||
+ | | ||
+ | | ||
+ | @@ -4900,8 +4901,13 @@ | ||
+ | { | ||
+ | if (LEASE_NOT_EMPTY(pool-> | ||
+ | | ||
+ | - else | ||
+ | + else if (LEASE_NOT_EMPTY(pool-> | ||
+ | | ||
+ | + else if (flag_dd_option) | ||
+ | + { | ||
+ | + candl = LEASE_GET_FIRST(pool-> | ||
+ | + candl -> ends = cur_time; | ||
+ | + } | ||
+ | } | ||
+ | |||
+ | /* | ||
+ | </ | ||
+ | |||
+ | |||
+ | < | ||
+ | --- server/ | ||
+ | +++ server/ | ||
+ | @@ -57,6 +57,7 @@ | ||
+ | gid_t set_gid = 0; | ||
+ | # | ||
+ | |||
+ | +int flag_dd_option = 0; | ||
+ | | ||
+ | int server_identifier_matched; | ||
+ | |||
+ | @@ -184,6 +185,7 @@ | ||
+ | | ||
+ | # | ||
+ | | ||
+ | + " | ||
+ | | ||
+ | | ||
+ | } | ||
+ | @@ -329,6 +331,8 @@ | ||
+ | | ||
+ | | ||
+ | # | ||
+ | + } else if (!strcmp (argv [i], " | ||
+ | + flag_dd_option = 1; | ||
+ | } else if (!strcmp (argv [i], " | ||
+ | if (++i == argc) | ||
+ | | ||
+ | </ | ||
+ | |||
+ | Після того, як перезібрали пакет та встановили його в системі, | ||
+ | <file ini rc.conf> | ||
+ | dhcpd_flags=" | ||
+ | </ | ||
+ | |||
+ |