Jump to content

Recommended Posts

Posted

Прошу помощи, пакетик не попадает в класс по 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 отлично парсится. Однако в класс пакет так и не попадает, и уходит в гостевую подсеть.

 

Почему пакет не попадает в класс?

Posted

giaddr - насколько я понимаю, это адрес релея. Подсети релеев указаны отдельно в конфиге (172.16.*)

 

Или не так? я просто не пойму куда копать :(

Как, кстати, вывести полный дебаг dhcpd? а то dhcpd -d -f em0 полностью пакет не показыват, только типа пакета и кому летит

Posted (edited)

Снял пакет 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

Edited by terrible
Posted

Дамп у вас какой-то грустный совсем(надо было у tcpdump ставить опцию -s 0). Но раз проблема в лизах, то тут 3 пути:

1. прикрутить костыль к биллингу, который будет удалять лизу(при смене статуса должник-оплативший и наооборт) через omshell

2. использовать dhcp сервер, который использует sql-запросы для выдачи адресов

3. поставить маленький lease-time (?)

Posted

Получается, что клиент уже брал адрес 10.249.201.28, и просит его продлить.

А как тогда ему дать отказ в продлении и выдать другой адрес?

Дать ему NAK, тогда он начнет все заново, начиная с DISCOVERY, и просить старый адрес уже не будет.

Posted

1. прикрутить костыль к биллингу, который будет удалять лизу(при смене статуса должник-оплативший и наооборт) через omshell

Обязательно ознакомлюсь с этим

2. использовать dhcp сервер, который использует sql-запросы для выдачи адресов

Есть FreeRADIUS, он то всё отлично выдаёт и ему плевать на любые параметры DHCP пакета, кроме Option 82. Но его использование на продакшене пока не определено.

3. поставить маленький lease-time (?)

Он и так равен 15 минутам, однако dhcpd продолжает выдавать IP, который уже этому клиенту выдавал :( По сути это и есть та самая проблема, о которой я эту тему и начал.

Дать ему NAK, тогда он начнет все заново, начиная с DISCOVERY, и просить старый адрес уже не будет.

А это как?

Можно конечно вообще убить гостевую подсеть, тогда всем, кто не прописан в классах, будет выдан NAK. Однако есть другая проблема в этом: если поменять IP у клиента в конфиге dhcpd, то dhcpd будет продолжать отдавать ему старый IP адрес. По сути получится та-же проблема, что и в заголовке темы.

Posted

Дать ему NAK, тогда он начнет все заново, начиная с DISCOVERY, и просить старый адрес уже не будет.

А это как?

Можно конечно вообще убить гостевую подсеть, тогда всем, кто не прописан в классах, будет выдан NAK. Однако есть другая проблема в этом: если поменять IP у клиента в конфиге dhcpd, то dhcpd будет продолжать отдавать ему старый IP адрес. По сути получится та-же проблема, что и в заголовке темы.

А что у Вас за DHCP-сервер?

Posted
2. использовать dhcp сервер, который использует sql-запросы для выдачи адресов

ой а подскажите такой рабочий сервер под nix

Posted

isc-dhcp31

Срочно прекращайте.

Используйте DHCP-сервер, специально заточенный под Option 82, а не reference design с костылями.

Да. Cisco Network Registrar, отличная штука :)

Posted

isc-dhcp31

Срочно прекращайте.

Используйте DHCP-сервер, специально заточенный под Option 82, а не reference design с костылями.

Да. Cisco Network Registrar, отличная штука :)

Я имел в виду самописный. Вверху две штуки, вариант от Ivan_83 я смотрел - недурно. Хотя лично сам я использую свой, третий вариант - так сложилось :).

  • 2 weeks later...

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.

×
×
  • Create New...
На сайте используются файлы cookie и сервисы аналитики для корректной работы форума и улучшения качества обслуживания. Продолжая использовать сайт, вы соглашаетесь с использованием файлов cookie и с Политикой конфиденциальности.