terrible Опубликовано 17 июня, 2011 · Жалоба Прошу помощи, пакетик не попадает в класс по opt 82. Кусок конфига, в котором клиента пробую загнать в класс только по номеру порта: if exists agent.circuit-id { log(info, concat("Lease" ," IP ", binary-to-ascii(10, 8, ".", leased-address) ," MAC ", binary-to-ascii(16, 8, ":", substring(hardware, 1, 6)) ," port ", binary-to-ascii(10, 16, "", substring(option agent.circuit-id, 4, 2)) ," VLAN ", binary-to-ascii(10, 16, "", substring(option agent.circuit-id, 2, 2)) ," switch ", binary-to-ascii(16, 8, ":", substring(option agent.remote-id, 2, 20)) ) ); } shared-network "clients" { subnet 192.168.28.0 netmask 255.255.255.0 { option subnet-mask 255.255.255.0; option broadcast-address 192.168.28.255; option routers 192.168.28.1; option ms-classless-static-routes 16, 192, 168, 192, 168, 28, 1; option rfc3442-classless-static-routes 16, 192, 168, 192, 168, 28, 1; class "5068" { match if binary-to-ascii(10, 16, "", substring(option agent.circuit-id, 4, 2)) = "2"; } pool { range 192.168.28.163; allow members of "5068"; } } subnet 172.16.3.0 netmask 255.255.255.0 { } subnet 172.16.28.0 netmask 255.255.255.0 { } subnet 10.249.200.0 netmask 255.255.252.0 { range 10.249.200.1 10.249.203.254; option routers 10.249.200.1; } } При получении DHCP пакета, получаю в лог сообщение: Lease IP 10.249.201.28 MAC 0:1:a3:12:e2:94 port 2 VLAN 28 switch 0:21:91:52:dc:b4 Т.е. opt 82 отлично парсится. Однако в класс пакет так и не попадает, и уходит в гостевую подсеть. Почему пакет не попадает в класс? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
s.lobanov Опубликовано 17 июня, 2011 · Жалоба У вас dhcp-сервер получает запросы от релея или видет клиентов по L2? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
terrible Опубликовано 17 июня, 2011 (изменено) · Жалоба От релея, по L2 видит только соседние серваки. Изменено 17 июня, 2011 пользователем terrible Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
s.lobanov Опубликовано 17 июня, 2011 · Жалоба Значит giaddr попадает в subnet, содержаший 10.249.201.28/32, ну дальше сами понимаете Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
terrible Опубликовано 17 июня, 2011 · Жалоба giaddr - насколько я понимаю, это адрес релея. Подсети релеев указаны отдельно в конфиге (172.16.*) Или не так? я просто не пойму куда копать :( Как, кстати, вывести полный дебаг dhcpd? а то dhcpd -d -f em0 полностью пакет не показыват, только типа пакета и кому летит Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
s.lobanov Опубликовано 17 июня, 2011 · Жалоба Выкладывайте дамп dhcp-запросов(с сервера) в формате pcap, от клиента, который получает 10.249.201.28 вместо 192.168.28.163 Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
terrible Опубликовано 17 июня, 2011 (изменено) · Жалоба Снял пакет DHCP с помощью FreeRADIUS: Received DHCP-Request of id ff97665f from 172.16.28.1:68 to 172.16.3.1:67 DHCP-Opcode = Client-Message DHCP-Hardware-Type = Ethernet DHCP-Hardware-Address-Length = 6 DHCP-Hop-Count = 1 DHCP-Transaction-Id = 4288112223 DHCP-Number-of-Seconds = 0 DHCP-Flags = 0 DHCP-Client-IP-Address = 10.249.201.28 DHCP-Your-IP-Address = 0.0.0.0 DHCP-Server-IP-Address = 0.0.0.0 DHCP-Gateway-IP-Address = 172.16.28.1 DHCP-Client-Hardware-Address = 00:01:a3:12:e2:94 DHCP-Message-Type = DHCP-Request DHCP-Client-Identifier = 00:01:a3:12:e2:94 DHCP-Hostname = "terre4t65h6hh" DHCP-Vendor-Class-Identifier = "MSFT 5.0" DHCP-Parameter-Request-List = DHCP-Subnet-Mask DHCP-Parameter-Request-List = DHCP-Domain-Name DHCP-Parameter-Request-List = DHCP-Router-Address DHCP-Parameter-Request-List = DHCP-Domain-Name-Server DHCP-Parameter-Request-List = DHCP-NETBIOS-Name-Servers DHCP-Parameter-Request-List = DHCP-NETBIOS-Node-Type DHCP-Parameter-Request-List = DHCP-NETBIOS DHCP-Parameter-Request-List = DHCP-Perform-Router-Discovery DHCP-Parameter-Request-List = DHCP-Static-Routes DHCP-Parameter-Request-List = 249 DHCP-Parameter-Request-List = DHCP-Vendor DHCP-Relay-Agent-Information = 0x01060004001c00020208000600219152dcb4 Получается, что клиент уже брал адрес 10.249.201.28, и просит его продлить. А как тогда ему дать отказ в продлении и выдать другой адрес? Блин, поменял MAC у клиента - он стал всё нормально получать оО Поменял назад - такая-же кака Дамп пакетов: http://files.mail.ru/2GJ6N1 Изменено 17 июня, 2011 пользователем terrible Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
s.lobanov Опубликовано 17 июня, 2011 · Жалоба Дамп у вас какой-то грустный совсем(надо было у tcpdump ставить опцию -s 0). Но раз проблема в лизах, то тут 3 пути: 1. прикрутить костыль к биллингу, который будет удалять лизу(при смене статуса должник-оплативший и наооборт) через omshell 2. использовать dhcp сервер, который использует sql-запросы для выдачи адресов 3. поставить маленький lease-time (?) Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Abram Опубликовано 18 июня, 2011 · Жалоба Получается, что клиент уже брал адрес 10.249.201.28, и просит его продлить. А как тогда ему дать отказ в продлении и выдать другой адрес? Дать ему NAK, тогда он начнет все заново, начиная с DISCOVERY, и просить старый адрес уже не будет. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
terrible Опубликовано 19 июня, 2011 · Жалоба 1. прикрутить костыль к биллингу, который будет удалять лизу(при смене статуса должник-оплативший и наооборт) через omshell Обязательно ознакомлюсь с этим 2. использовать dhcp сервер, который использует sql-запросы для выдачи адресов Есть FreeRADIUS, он то всё отлично выдаёт и ему плевать на любые параметры DHCP пакета, кроме Option 82. Но его использование на продакшене пока не определено. 3. поставить маленький lease-time (?) Он и так равен 15 минутам, однако dhcpd продолжает выдавать IP, который уже этому клиенту выдавал :( По сути это и есть та самая проблема, о которой я эту тему и начал. Дать ему NAK, тогда он начнет все заново, начиная с DISCOVERY, и просить старый адрес уже не будет. А это как? Можно конечно вообще убить гостевую подсеть, тогда всем, кто не прописан в классах, будет выдан NAK. Однако есть другая проблема в этом: если поменять IP у клиента в конфиге dhcpd, то dhcpd будет продолжать отдавать ему старый IP адрес. По сути получится та-же проблема, что и в заголовке темы. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Abram Опубликовано 22 июня, 2011 · Жалоба Дать ему NAK, тогда он начнет все заново, начиная с DISCOVERY, и просить старый адрес уже не будет. А это как? Можно конечно вообще убить гостевую подсеть, тогда всем, кто не прописан в классах, будет выдан NAK. Однако есть другая проблема в этом: если поменять IP у клиента в конфиге dhcpd, то dhcpd будет продолжать отдавать ему старый IP адрес. По сути получится та-же проблема, что и в заголовке темы. А что у Вас за DHCP-сервер? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
terrible Опубликовано 22 июня, 2011 · Жалоба isc-dhcp31 Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
mukca Опубликовано 22 июня, 2011 · Жалоба 2. использовать dhcp сервер, который использует sql-запросы для выдачи адресов ой а подскажите такой рабочий сервер под nix Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Ivan_83 Опубликовано 22 июня, 2011 · Жалоба http://forum.nag.ru/forum/index.php?showtopic=64849 и в соседнем топике аналогичный функционал на сях. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Abram Опубликовано 23 июня, 2011 · Жалоба isc-dhcp31 Срочно прекращайте. Используйте DHCP-сервер, специально заточенный под Option 82, а не reference design с костылями. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
ilili Опубликовано 24 июня, 2011 · Жалоба isc-dhcp31 Срочно прекращайте. Используйте DHCP-сервер, специально заточенный под Option 82, а не reference design с костылями. Да. Cisco Network Registrar, отличная штука :) Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Abram Опубликовано 24 июня, 2011 · Жалоба isc-dhcp31 Срочно прекращайте. Используйте DHCP-сервер, специально заточенный под Option 82, а не reference design с костылями. Да. Cisco Network Registrar, отличная штука :) Я имел в виду самописный. Вверху две штуки, вариант от Ivan_83 я смотрел - недурно. Хотя лично сам я использую свой, третий вариант - так сложилось :). Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
terrible Опубликовано 8 июля, 2011 · Жалоба Проблему решил патчем: http://forum.nag.ru/forum/index.php?showtopic=61077&st=20&p=551071entry551071 Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...