6 votos

El envío de DHCP específicos de los proveedores de opciones a un servidor de Windows

Mi objetivo es enviar algo de información (url y un solo token) para una máquina windows. Está trabajando muy bien para servidores GNU/Linux, porque puedo obtener la información de /var/lib/dhcp/dhcp.contrato de arrendamiento o similar. Esta es mi configuración:

dhcp server (servidor GNU/Linux):

host windows {
            dynamic;
            hardware ethernet XX:XX:XX:XX:XX:XX;
            fixed-address 10.70.10.107;
            supersede vendor-encapsulated-options  "http://URL/TOKEN";
    }

La única manera que he encontrado para conseguir esta información en el servidor windows en el registro. Como he añadido aquí, en HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\services\Tcpip\Parameters\Interfaces{ID} usted puede encontrar la clave denominada DhcpInterfaceOptions.

El problema es que la información en esta clave es "dañado". Voy a intentar explicar.

Con Wireshark puedo ver bien formado DHCP respuesta de mi servidor DHCP con un 43 del conjunto de opciones. Esta opción contiene exactamente lo que estoy buscando. Cuando intento leer en el registro contiene un montón de basura y algunas parte de la dirección url es la que falta.

Las opciones de DHCP RFC 2132 define el siguiente protocolo:

Code   Len   Vendor-specific information
+-----+-----+-----+-----+---
|  43 |  n  |  i1 |  i2 | ...
+-----+-----+-----+-----+---

He observado que Windows se está haciendo algo similar después de la opción. Quiero decir, si la URL es "http://URL/TOKEN' que windows no se establece la " h " como ID, 't' como la longitud y la empieza a leer después de la segunda "t". Mi url es más largo que la última ASCII imprimibles carácter (~) y yo no puedo hacer ninguna solución en la que.

Actualización 1

WireShark captura:

Option: (t=43,l=16) Vendor-Specific Information
  Option: (43) Vendor-Specific Information
  Length: 16
  Value: 687474703a2f2f55524c2f544f4b454e (http://URL/TOKEN)

Registro De Windows:

"DhcpInterfaceOptions"=hex:06,00,00,00,00,00,00,00,08,00,00,00,00,00,00,00,52,\
 45,b7,4f,0a,46,0a,01,08,08,08,08,03,00,00,00,00,00,00,00,04,00,00,00,00,00,\
 00,00,52,45,b7,4f,0a,46,0a,01,0f,00,00,00,00,00,00,00,0f,00,00,00,00,00,00,\
 00,52,45,b7,4f,74,50,1f,2b,6f,61,6f,75,75,6a,3f,64,6e,77,2e,00,01,00,00,00,\
 00,00,00,00,04,00,00,00,00,00,00,00,52,45,b7,4f,ff,ff,ff,00,36,00,00,00,00,\
 00,00,00,04,00,00,00,00,00,00,00,52,45,b7,4f,0a,46,0a,01,35,00,00,00,00,00,\
 00,00,01,00,00,00,00,00,00,00,52,45,b7,4f,05,00,00,00,fc,00,00,00,00,00,00,\
 00,00,00,00,00,00,00,00,00,2a,bd,b6,4f,33,00,00,00,00,00,00,00,04,00,00,00,\
 00,00,00,00,52,45,b7,4f,00,00,8c,a0

Actualización 2

Si la dirección url es menor que el tamaño definido en el protocolo de Windows, la dirección url se muestra en el registro. En mi caso la " h " será el identificador y 't' en el tamaño (116). Si la dirección url es :

http://AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

El registro contiene algo como que me pega anteriormente. La dirección url es exactamente 117 caracteres, pero se usan 2 para la identificación y el tamaño. que significa que los datos 115. No lo suficiente.

si añado una 'a' para mi url:

http://AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

A continuación, el registro contiene:

"DhcpInterfaceOptions"=hex:68,00,00,00,00,00,00,00,74,00,00,00,01,00,00,00,62,\
0e,bb,4f,74,70,3a,2f,2f,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,\
41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,\
41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,\
41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,\
41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,06,00,00,00,00,00,\
00,00,08,00,00,00,00,00,00,00,62,0e,bb,4f,0a,46,0a,01,08,08,08,08,03,00,00,\
00,00,00,00,00,04,00,00,00,00,00,00,00,62,0e,bb,4f,0a,46,0a,01,0f,00,00,00,\
00,00,00,00,0f,00,00,00,00,00,00,00,62,0e,bb,4f,75,61,4a,1f,31,4c,ca,11,55,\
6f,2e,63,1f,6d,fe,00,01,00,00,00,00,00,00,00,04,00,00,00,00,00,00,00,62,0e,\
bb,4f,ff,ff,ff,00,33,00,00,00,00,00,00,00,04,00,00,00,00,00,00,00,62,0e,bb,\
4f,00,00,8c,a0,36,00,00,00,00,00,00,00,04,00,00,00,00,00,00,00,62,0e,bb,4f,\
0a,46,0a,01,35,00,00,00,00,00,00,00,01,00,00,00,00,00,00,00,62,0e,bb,4f,05,\
00,00,00

41 es la representación hexadecimal de la 'a'.

2voto

Seoman Puntos 178

La solución implementada fue:

dhcpd.conf:

option space yourCompany;
    option yourCompany.url code 128 = text;

class "vendor-classes" {
    match option vendor-class-identifier;
}

subclass "vendor-classes" "MSFT 5.0" {
    vendor-option-space yourCompany;
}

En su contrato de arrendamiento, agregue la siguiente línea:

supersede yourCompany.url = "http://URL"

usted puede cambiar el .url para todo lo que quería. Sólo asegúrese de cambiar el nombre de la opción en el espacio de suorganización.

El uso de este método que puede ver la dirección URL completa en el registro.

1voto

Grant Puntos 10929

No creo que reemplazan es correcta para el servidor de configuración. Generalmente es utilizado por el cliente dhcp config.

Trate de añadir esto a su dhcpd config y ver si usted puede ver las opciones en el registro

option space ISC code width 1 length width 1 hash size 3; 
option ISC.sample code 1 = text; 
option vendor.ISC code 2495 = encapsulate vivso-sample; 
option vendor-class.ISC code 2495 = text;

option ISC.sample "configuration text here"; 
option vendor-class.ISC "vendor class here";

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by: