ivan999 Опубликовано 6 февраля, 2011 · Жалоба афтору написал, пока нет ответа. Напишите - в чем проявляются побочные эффекты? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
ivan999 Опубликовано 7 февраля, 2011 · Жалоба афтору написал, пока нет ответа.Напишите - в чем проявляются побочные эффекты? Аффтар ответил - скинул патченые исходники. Работает даже в сети Docsis ( кабельные модемы, которые работают через сеть кабельного ТВ. Там есть хитрая заморочка с опцией 82 - специально придуманная для docsis. Есть хитрожопый параметр allow leasequery (dhcpleasequery)) В сети Ethernet Тоже пашет. _____ Пока тока 5 минут прошло : ) Будем сореть, как дальше будет.... Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Ivan_83 Опубликовано 7 февраля, 2011 · Жалоба Ничего сложного там нет, в дхцп. Для доксиса вроде несколько субоций в опции 82 выделено. // RFC 3046 DHCP Relay Agent Information Option (sub opt 1-2) // RFC 3256 The DOCSIS (Data-Over-Cable Service Interface Specifications) Device Class DHCP (Dynamic Host Configuration Protocol) Relay Agent Information Sub-option (add subopt 4 to RFC 3046) // RFC 3527 Link Selection sub-option (add subopt 5 to RFC 3046) // RFC 3993 Subscriber-ID Suboption (add subopt 6 to RFC 3046) // RFC 4014 RADIUS Attributes Suboption (add subopt 7 to RFC 3046) // RFC 4030 Authentication Suboption (add subopt 8 to RFC 3046) // RFC 4243 Vendor-Specific Relay Suboption (add subopt 9 to RFC 3046) // RFC 5010 Relay Agent Flags Suboption (add subopt 10 to RFC 3046) // RFC 5107 Server ID Override Suboption (add subopt 11 to RFC 3046) Вам какая интересна? Могу добавить в утилиту: http://www.netlab.linkpc.net/download/tmp/DHCPTool.exe пока только ловит и декодирует все опции стандартных типов и субопции тоже жуёт. На днях хочу добавить декодирование для маршрутов. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
ivan999 Опубликовано 7 февраля, 2011 · Жалоба У меня все работает ок уже 3 года. Опции я разбираю утилитой dhcpdump Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Ivan_83 Опубликовано 7 февраля, 2011 · Жалоба В dhcpdump всё очень скромно, в сравнении :) dhcpdump не показывает: - когда у параметра ответ не верной длинны: те должно быть 4 байта число, а сервер выдал 1 байт - dhcpdump перевирает флаги дхцп: вместо 8000 показывает хх80 - хотя возможно у меня под фряхой порт собран с каким нибудь выравниванием не тем - dhcpdump не знает новых опций и кое чего со старых - dhcpdump не разбирает субопции вендора (43 которых код, там бывает куча субопций) - у меня dhcpdump не декодирует ремонтеИД в опции 82 - опять же может косяк адаптации порта Зато dhcpdump показывает аппаратные адреса, а моя прога такого не может. Откатаю код под виндой - можно будет портировать, взяв за основу работы с сетью как раз dhcpdump. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Ivan_83 Опубликовано 7 февраля, 2011 · Жалоба Пример работы, пакеты зеркалил сам сервер на релей, а релей на программу, потому везде: "172.16.0.254:67 -> 172.16.0.3:67" [21:37:56] Received 548 bytes from 172.16.0.254:67 -> 172.16.0.3:67 DHCP head: op = 1 (1) - BOOTREQUEST htype = 1 (1) - Ethernet (10Mb) hlen = 6 (6) hops = 1 (1) xid = 56be006b (1455292523) secs = 0 (0) flags = 8000 (32768) [B=1, MBZ=0] ciaddr = 0.0.0.0 yiaddr = 0.0.0.0 siaddr = 0.0.0.0 giaddr = 10.1.4.249 chaddr = 00265a2dfe0b sname = file = 053 - DHCP message type: 01 (001) - DISCOVER 061 - DHCP Client identifier: 0100265a2dfe0b 012 - Host name: DIR-300 055 - Parameter Request List: <list below> 01 (001) - Subnet mask 03 (003) - Routers 06 (006) - DNS servers 0f (015) - Domain Name 2c (044) - NetBIOS name servers 2e (046) - NetBIOS node type 2f (047) - NetBIOS scope <end list> 082 - Relay Agent Information: <sub options list below> 001 - Circuit ID: <sub options list below> 000 - VLAN(xx)/Module(x)/Port(x): 0004000d <end list> 002 - Remote ID: <sub options list below> 000 - MAC address: 001e58a0dc93 <end list> <end list> 255 - END 000 - PAD [257] [21:31:47] Received 320 bytes from 172.16.0.254:67 -> 172.16.0.3:67 DHCP head: op = 1 (1) - BOOTREQUEST htype = 1 (1) - Ethernet (10Mb) hlen = 6 (6) hops = 1 (1) xid = 5b0cc216 (1527562774) secs = 0 (0) flags = 0 (0) [B=0, MBZ=0] ciaddr = 0.0.0.0 yiaddr = 0.0.0.0 siaddr = 0.0.0.0 giaddr = 10.1.4.80 chaddr = 001fc66ce47f sname = file = 053 - DHCP message type: 03 (003) - REQUEST 061 - DHCP Client identifier: 01001fc66ce47f 050 - Request IP address: 10.1.4.166 054 - DHCP Server identifier: 10.1.4.87 012 - Host name: eeepc 060 - Vendor class identifier: MSFT 5.0 055 - Parameter Request List: <list below> 01 (001) - Subnet mask 0f (015) - Domain Name 03 (003) - Routers 06 (006) - DNS servers 2c (044) - NetBIOS name servers 2e (046) - NetBIOS node type 2f (047) - NetBIOS scope 1f (031) - Perform router discovery 21 (033) - Static route f9 (249) - MSFT - Classless route 2b (043) - Vendor specific info <end list> 043 - Vendor specific info: <sub options list below> 220 - NAP-SoH: 00 <end list> 082 - Relay Agent Information: <sub options list below> 001 - Circuit ID: <sub options list below> 000 - VLAN(xx)/Module(x)/Port(x): 00010008 <end list> 002 - Remote ID: <sub options list below> 000 - MAC address: 001562c63d80 <end list> <end list> 255 - END [21:31:47] Received 313 bytes from 172.16.0.254:67 DHCP head: op = 2 (2) - BOOTREPLY htype = 1 (1) - Ethernet (10Mb) hlen = 6 (6) hops = 1 (1) xid = 5b0cc216 (1527562774) secs = 0 (0) flags = 0 (0) [B=0, MBZ=0] ciaddr = 0.0.0.0 yiaddr = 10.1.4.166 siaddr = 0.0.0.0 giaddr = 10.1.4.80 chaddr = 001fc66ce47f sname = file = 053 - DHCP message type: 05 (005) - ACK 054 - DHCP Server identifier: 10.1.4.87 051 - IP address lease time: 180 058 - Renew time (T1): 600 059 - Rebind time (T2): 900 001 - Subnet mask: 255.255.255.0 003 - Routers: <list below> 10.1.4.87 <end list> 006 - DNS servers: <list below> 8.8.8.8 195.46.116.1 <end list> 116 - Auto Configure: disabled 082 - Relay Agent Information: <sub options list below> 001 - Circuit ID: <sub options list below> 000 - VLAN(xx)/Module(x)/Port(x): 00010008 <end list> 002 - Remote ID: <sub options list below> 000 - MAC address: 001562c63d80 <end list> <end list> 255 - END Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Cramac Опубликовано 8 февраля, 2011 · Жалоба а как вы генерируете конфиг для дхцп сервера, подскажите идею... а то у нас сеть на половину управляемая, думаю как генерить чтоб не отключить всех... Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
true.ru Опубликовано 8 февраля, 2011 (изменено) · Жалоба в своем случае часть конфига для dhcp сервера, где расписаны классы и ip, делал таким образом. думаю, что сможете адаптировать под себя. #!/bin/bash d=2 for mac in 0:19:5b:6b:fa:53 0:19:5b:6b:fa:54 0:19:5b:6b:fa:55; do for n in $(seq 1 24) do echo 'class "'$mac'_'$n'" {match if (binary-to-ascii(10,8,"",suffix(option agent.circuit-id,1)) ="'$n'") and' echo ' (binary-to-ascii(16,8,":",substring(option agent.remote-id,2,6)) = "'$mac'");' echo ' }' echo ' pool {range xxx.xxx.xxx.'$d'; allow members of "'$mac'_'$n'"; }' if [ $a -ge 254 ]; then break 2 fi let "a=$a+1" done done когда надо учитывать изменение третьего октета: #!/bin/bash d=240 c=207 for mac in 0:17:9a:5:39:14 0:17:9a:5:7:4e; do for n in $(seq 1 24) do if [ $d -eq 255 ]; then let "c=$c+1" if [ $c -gt 207 ]; then break 2 fi let "d=-1" fi echo 'class "'$mac'_'$n'" {match if (binary-to-ascii(10,8,"",suffix(option agent.circuit-id,1)) ="'$n'") and' echo ' (binary-to-ascii(16,8,":",substring(option agent.remote-id,2,6)) = "'$mac'");' echo ' }' echo ' pool {range ххх.ххх.'$c'.'$d'; allow members of "'$mac'_'$n'"; }' let "d=$d+1" done done Изменено 8 февраля, 2011 пользователем true.ru Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
xcme Опубликовано 13 февраля, 2011 · Жалоба Расскажите в чем суть упоминаемого выше патча и зачем он нужен? Проблему перетыкальщиков решил перезапуском сервера с очищением аренд раз в 5 минут. Время аренды ставлю большое, чтобы не долбали сервер запросами. Перезапуск так и так нужен, чтобы применить новый конфиг. В принципе, можно его хоть каждую минуту делать. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
StSphinx Опубликовано 14 февраля, 2011 · Жалоба Расскажите в чем суть упоминаемого выше патча и зачем он нужен? Проблему перетыкальщиков решил перезапуском сервера с очищением аренд раз в 5 минут. Время аренды ставлю большое, чтобы не долбали сервер запросами. Перезапуск так и так нужен, чтобы применить новый конфиг. В принципе, можно его хоть каждую минуту делать. Суть патча в том, что при выдаче аренды не учитывается MAC-адрес станции которая запрашивает аренду, а только Option 82. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Cramac Опубликовано 23 февраля, 2011 · Жалоба и еще не в тему вопрос, а как Вы отслеживаете клиентов кто к какому порту подключен при раздаче адресов по опции 82? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Gunner Опубликовано 23 февраля, 2011 · Жалоба и еще не в тему вопрос, а как Вы отслеживаете клиентов кто к какому порту подключен при раздаче адресов по опции 82? ЭЭЭ что ? опт 82 возвращает порт в который включен клиент + ип мак или еще что-нибудь от коммутатора . Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Cramac Опубликовано 23 февраля, 2011 · Жалоба сгенерив конфиг дхцп, мы знаем какой ип на каком порту на каком свитче, а как узнать потом какой клиент получил этот ип? если только из биллинга брать когда подключится по впн... Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
s.lobanov Опубликовано 23 февраля, 2011 (изменено) · Жалоба Cramac Записывать опцию82(и remote-id и circuit-id) в биллинг. Кто(включенец или девочки в офисе) и когда(до или после физического включения) это будет делать зависит от того как у вас организованы бизнес-процессы. В любом случае, у вас должно быть где-то(биллинг/ тех.учёт/ конфиг dhcp-сервера) взаимнооднозначное соответствие между абонентом(а точнее, его идентификатором) и портом коммутатора. Если у вас такой информации нет, то как вы восстанавливаете лямки, когда охотники за металлом их срежут? И пожалуй самое интересное, зачем вам вообще нужна option82, если у вас впн? Изменено 23 февраля, 2011 пользователем s.lobanov Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Cramac Опубликовано 24 февраля, 2011 (изменено) · Жалоба Хочется уйти от впн. сейчас у нас ип выдаются статически, а адреса выдаются при генерации договора, но вот номер порта/свитча нигде пока не учитывается. Изменено 24 февраля, 2011 пользователем Cramac Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
(= dd =) Опубликовано 11 марта, 2011 · Жалоба Суть патча в том, что при выдаче аренды не учитывается MAC-адрес станции которая запрашивает аренду, а только Option 82. Cуть патча в том, что я описывал в сопроводительном письме к оному. К маку имеет отдаленное и очень условное отношение. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
LMik Опубликовано 16 мая, 2011 · Жалоба Патч пашет. Спасибо разработчику. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
kt Опубликовано 19 мая, 2011 · Жалоба поделитесь патчиком плиз Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Negator Опубликовано 19 мая, 2011 · Жалоба дык напиши автору патча. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Makariy Опубликовано 7 июля, 2011 · Жалоба поделитесь патчиком плз на makariy11<сабака>gmail.com ато автор молчит....а очень хочется Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
borcat Опубликовано 7 июля, 2011 · Жалоба и правда - поделителсь плз - borcat(a)gmail.com Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
mravenger Опубликовано 25 июля, 2011 · Жалоба кто бы и со мной поделился ? Действительно (=dd=) в подполье ушел :( vxbs[a]rambler.ru Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Negator Опубликовано 25 июля, 2011 · Жалоба сгенерив конфиг дхцп, мы знаем какой ип на каком порту на каком свитче, а как узнать потом какой клиент получил этот ип? если только из биллинга брать когда подключится по впн... А проблема на самом деле серьезная. Обьясню: Украли у нас свич с чердака, отрезали все подписанные квартиры, ну или просто порезали все провода на чердаке. Поставили мы новый свич, восстановили все. А дальше? Кого в какой порт пихать? В итоге Васю включим в порт Пети -он получит адрес Пети и будет сидеть на его тарифе и т.д. Адреса получат все, а вот кто чей -неизвестно. Если только маки смотреть -но это не вариант ибо юзер у себя дома может воткнуть все что угодно. Остается только брать записи метража из диагностики кабеля при подключении и по нему ориентироваться кто где. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
terrible Опубликовано 26 июля, 2011 · Жалоба А проблема на самом деле серьезная. Обьясню:Украли у нас свич с чердака, отрезали все подписанные квартиры, ну или просто порезали все провода на чердаке. Поставили мы новый свич, восстановили все. А дальше? Кого в какой порт пихать? Выдавать не только по опции 82 IP адреса, но ещё и по последнему MAC адресу, засветившемуся на свиче, остальные звонят в техподдержку. В 95% случаем MAC-адрес у клиентов не меняется, а если и меняется, то у одно клиента со всего свича. Ищите маки, определяйте пользователей, и переформировывайте абонентов по портам свича заного, основываясь на появлении MAC адресов. Когда все заного определены - выключайте привязку к MAC адресу и выдавайте всё по старому. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
[-Alt-] Опубликовано 27 июля, 2011 (изменено) · Жалоба Как вариант на новом свитче выдавать Ip какого-то диапазона, и все запросы с этих ip перенаправлять на страницу с надписью: "Позвоните в ТП по телефону, Ваш ip такой-то." Человек звонит, исходя их полученного адреса вычисляем его порт и ставим туда уже адрес клиента из биллинга. А проблема на самом деле серьезная. Обьясню: Украли у нас свич с чердака, отрезали все подписанные квартиры, ну или просто порезали все провода на чердаке. Поставили мы новый свич, восстановили все. А дальше? Кого в какой порт пихать? В итоге Васю включим в порт Пети -он получит адрес Пети и будет сидеть на его тарифе и т.д. Адреса получат все, а вот кто чей -неизвестно. Изменено 27 июля, 2011 пользователем [-Alt-] Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...