{"id":1239,"date":"2013-02-28T15:59:26","date_gmt":"2013-02-28T13:59:26","guid":{"rendered":"https:\/\/inlab.fib.upc.edu\/?p=1239"},"modified":"2013-02-28T15:59:26","modified_gmt":"2013-02-28T13:59:26","slug":"funcionalidades-avanzadas-del-dhcp","status":"publish","type":"post","link":"https:\/\/inlab.fib.upc.edu\/es\/uncategorized-ca\/funcionalidades-avanzadas-del-dhcp","title":{"rendered":"Funcionalidades avanzadas del DHCP"},"content":{"rendered":"<p>El DHCP es una herramienta muy potente para gestionar y configurar nuestas estaciones de trabajo. En este art&iacute;culo veremos algunas funcionalidades que van m&aacute;s all&aacute; de los usos habituales.<\/p>\n<p>Todos conocemos el servicio de DHCP (Dynamic Host Configuration Protocol) como el protocolo que sirve para asignar din&aacute;micamente la configuracion IP a nuestros equipos, olvid&aacute;ndonos de tener que hacerlo manualmente.<\/p>\n<div style=\"position: absolute; top: -1999px; left: -1988px;\">\n\tTodos conocemos el servicio de DHCP (Dynamic Host Configuration Protocol) como el protocolo que sirve para asignar din&aacute;micamente la configuracion IP a nuestros equipos, olvid&aacute;ndonos de tener que hacerlo manualmente. Esto es especialmente &uacute;til hoy en d&iacute;a, ya que conectamos nuestros port&aacute;tiles y smartphones por cualquier red que encontremos sin ning&uacute;n problema. &iquest;Os imagin&aacute;is tener que poner a mano la IP de vuestro iPhone? &#8211; See more at: http:\/\/inlab.fib.upc.edu\/es\/blog\/funcionalidades-avanzadas-del-dhcp#sthash.A9BBK7SV.dpuf<\/div>\n<div style=\"position: absolute; top: -1999px; left: -1988px;\">\n\t&nbsp;<\/div>\n<div style=\"position: absolute; top: -1999px; left: -1988px;\">\n\tTodos conocemos el servicio de DHCP (Dynamic Host Configuration Protocol) como el protocolo que sirve para asignar din&aacute;micamente la configuracion IP a nuestros equipos, olvid&aacute;ndonos de tener que hacerlo manualmente. Esto es especialmente &uacute;til hoy en d&iacute;a, ya que conectamos nuestros port&aacute;tiles y smartphones por cualquier red que encontremos sin ning&uacute;n problema. &iquest;Os imagin&aacute;is tener que poner a mano la IP de vuestro iPhone? &#8211; See more at: http:\/\/inlab.fib.upc.edu\/es\/blog\/funcionalidades-avanzadas-del-dhcp#sthash.A9BBK7SV.dpuf<\/div>\n<p><!--more--><\/p>\n<p>Todos conocemos el servicio de DHCP (Dynamic Host Configuration Protocol) como el protocolo que sirve para asignar din&aacute;micamente la configuracion IP a nuestros equipos, olvid&aacute;ndonos de tener que hacerlo manualmente. Esto es especialmente &uacute;til hoy en d&iacute;a, ya que conectamos nuestros port&aacute;tiles y smartphones por cualquier red que encontremos sin ning&uacute;n problema. &iquest;Os imagin&aacute;is tener que poner a mano la IP de vuestro iPhone?<\/p>\n<p>La funcionalidad b&aacute;sica del DHCP es asignar din&aacute;micamente una IP, una m&aacute;scara y un gateway a nuestro equipo. Lo que no todo el mundo sabe es que el DHCP tiene toda una serie de extensiones que nos permiten pasarle, en tiempo de arranque montones de par&aacute;metros muy interesantes.<\/p>\n<p>Si adem&aacute;s, contamos con un servidor avanzado, podemos hacer que nuestro DHCP una herramienta muy potente para gestionar nuestras redes.<\/p>\n<p>En el inLab&nbsp; usamos, desde hace mucho tiempo, el servidor de DHCP del ISC (Internet Systems Consorcium). Este servidor es tremendamente potente y estable, y cuenta adem&aacute;s, entre otras cosas, con un mini lenguaje de programaci&oacute;n integrado.<\/p>\n<p>Podemos usar opciones especiales para par&aacute;metros especiales tales como:<\/p>\n<ul>\n<li>\n\t\tUn fichero de arranque (<strong>option filename<\/strong> &quot;BStrap\/X86pc\/BStrap.0&quot;;)<\/li>\n<li>\n\t\tEl servidor de impresores remoto (<strong>option lpr-servers<\/strong> <em>ip-address<\/em> )<\/li>\n<li>\n\t\tEl servidor de tiempo&nbsp; (<strong>option ntp-servers<\/strong> <em>ip-address<\/em> )<\/li>\n<li>\n\t\tEl servidor de TFTP (<strong>option<\/strong> <strong>next-server<\/strong> <em>ip-address<\/em> )<\/li>\n<\/ul>\n<p>Pod&eacute;is consultar la lista completa de par&aacute;metros predefinidos en el <a href=\"https:\/\/tools.ietf.org\/html\/rfc2132\" target=\"_blank\" rel=\"noopener\">RFC 2132<\/a>.<\/p>\n<p>Adem&aacute;s de las opciones pre-definidas, podemos montar nuestras propias opciones, e incluso estructuras de datos complejas para almacenar informaci&oacute;n propia.<\/p>\n<pre style=\"color: rgb(8, 41, 138);\">\r\n<em>option inLab-priv-sala  code 1 = text;\r\noption inLab-priv-hw    code 3 = text;\r\noption inLab-priv-es-pc code 2 = {boolean, integer 32, text };\r\noption inLab-priv-rutas code 4 = array of {ip-address,\r\n                                 ip-address,ip-address,integer 8};<\/em><\/pre>\n<p>Las opciones 1 y 2 contienen simplemente un string. La 3 contiene una tupla formada por un booleano, un n&uacute;mero entero y un string. La cuarta opci&oacute;n define&nbsp; un array de estructuras compuestas por grupo de 3 direcciones IP y un entero.&nbsp;<\/p>\n<p>As&iacute;, por ejemplo, podr&iacute;amos pasarle a un PC, desde el DHCP, en que sala esta, o una descripci&oacute;n de su hardware.<\/p>\n<pre style=\"color: rgb(8, 41, 138);\">\r\n<em>host  venus {<\/em>\r\n<em>fixed-address 10.10.43.196;\r\nhardware ethernet 24:BE:05:23:5E:F2;\r\noption netbios-name-servers 147.83.41.111;\r\noption domain-name &quot;fib.upc.es&quot;;\r\noption domain-name-servers 147.83.41.104, 147.83.41.36;\r\noption inLab-priv-es-pc false 2011 &quot;portatil de prestec&quot;;\r\noption inLab-priv-sala &quot;Campus Nord.B6.S104&quot;;\r\noption inLab-priv-hw &quot;ASUS Eee PC 900&quot;;\r\noption inLab-priv-rutas 147.83.200.0 255.255.255.0 10.10.43.2 8,\r\n                         88.20.34.0 255.255.0.0 10.10.43.45 8;<\/em>\r\n<em>}<\/em><\/pre>\n<p>&nbsp;<\/p>\n<p>Otra opci&oacute;n muy interesante del DHCP son las las &ldquo;Vendor Space&rdquo;. &iquest;Sab&iacute;ais que la petici&oacute;n de DHCP incluye un campo &ldquo;Vendor Identifier&rdquo; que nos identifica el tipo de cliente ? Por ejemplo, cuando un PC arranca desde la tarjeta de red, el cliente se identifica como PXE. El cliente de Microsoft se identifica como &ldquo;MSFT&rdquo;. Adem&aacute;s, Windows 98 se identificaba como &ldquo;MSFT 98&rdquo;, y los Windows a partir Windows 2000 como &ldquo;MSFT 5.0&rdquo;. As&iacute;, los fabricantes han ido definiendo campos y estructuras especiales, para sus clientes, como, por ejemplo la versi&oacute;n firmware del equipo, o campos para idenficiar puertos TCP\/IP de algunos protocolos.<\/p>\n<p>Aqu&iacute; podeis ver un par de ejemplos de estructuras predefinidas de algunos fabricantes.<\/p>\n<p>Campos especiales de un cliente Microsoft:<\/p>\n<pre style=\"color: rgb(8, 41, 138);\">\r\n<em>option space Microsoft;\r\nvendor-option-space Microsoft;\r\noption Microsoft.disable-netbios-over-tcpip     code 1   = unsigned integer 32;\r\noption Microsoft.release-dhcp-lease-on-shutdown code 2   = unsigned integer 8;\r\noption Microsoft.default-router-metric-base     code 3   = unsigned integer 8;\r\noption Microsoft.proxy-autodiscovery            code 252 = string<\/em><\/pre>\n<p>Campos especiales de un cliente PXE:<\/p>\n<pre style=\"color: rgb(8, 41, 138);\">\r\n<em>option space PXE;<\/em>\r\n<em>option PXE.mtftp-ip             code 1   = ip-address;\r\noption PXE.mtftp-cport          code 2   = unsigned integer 16;\r\noption PXE.mtftp-sport          code 3   = unsigned integer 16;\r\noption PXE.mtftp-tmout          code 4   = unsigned integer 8;\r\noption PXE.mtftp-delay          code 5   = unsigned integer 8;\r\noption PXE.discovery-control    code 6   = unsigned integer 8;\r\noption PXE.discover-maddr       code 7   = ip-address;\r\noption PXE.rembo-servers        code 8   = { unsigned integer 16, \r\n  unsigned integer 8, array of ip-address};\r\noption PXE.boot-server-menu     code 9   = { unsigned integer 16, \r\n  unsigned integer 8, string};\r\noption PXE.menu-prompt          code 10  = { unsigned integer 16, \r\n  unsigned integer 8 };\r\noption PXE.vendor-specific-info code 43  = string;\r\noption PXE.class-identifier     code 60  = string;\r\noption PXE.pxe-server-name      code 66  = string;\r\noption PXE.filename             code 67  = string;\r\noption PXE.pxe-ip-address       code 150 = string;<\/em><\/pre>\n<p>Gracias a estos campos, y la potencia del servidor DHCP del ISC, podemos hacer cosas tales como:<\/p>\n<pre style=\"color: rgb(8, 41, 138);\">\r\n<em>class &quot;PXE&quot; {<\/em>\r\n<em> match if substring(option vendor-class-identifier,0,9) = &quot;PXEClient&quot;;\r\n vendor-option-space PXE;<\/em>\r\n<em>}<\/em>\r\n\r\n<em>class &quot;Microsoft&quot; {<\/em>\r\n<em> match if substring(option vendor-class-identifier,0,4) = &quot;MSFT&quot;;\r\n option vendor-class-identifier = &quot;Microsoft&quot;;\r\n vendor-option-space Microsoft;<\/em>\r\n<em>}<\/em><\/pre>\n<p>Estas definiciones nos asignan un <em>vendor-option-space<\/em>, es decir una estructura, y en la variable <em>vendor-class-identifier<\/em> tenemos una descripci&oacute;n homogeneizada del <em>vendor<\/em>. As&iacute;, podemos asignar valores especiales para cada una de las opciones. &nbsp;Por ejemplo:<\/p>\n<pre style=\"color: rgb(8, 41, 138);\">\r\n<em>host astro {<\/em>\r\n<em> fixed-address 147.83.88.22;\r\n hardware ethernet 6C:62:6D:81:22:32;\r\n option PXE.discovery-control 11;\r\n option PXE.rembo-servers 43690 01 147.83.41.200;\r\n option Microsoft.rembo-servers 2231 01 147.83.58.34;\r\n next-server 147.83.41.200;<\/em>\r\n<em>}<\/em><\/pre>\n<p>Imaginad que quereis que vuestros equipos tengan servidores de DNS diferentes en funci&oacute;n del sistema operativo que arranquen en cada momentos. &iquest;C&oacute;mo lo podemos hacer autom&aacute;ticamente? Utilizando la informaci&oacute;n que nos pasa el cliente DHCP:<\/p>\n<pre style=\"color: rgb(8, 41, 138);\">\r\n<em>host astro {<\/em>\r\n\r\n<em>fixed-address 147.83.58.58;\r\nhardware ethernet 6C:62:6D:81:22:32;\r\nif (vendor-class-identifier = &quot;Microsoft&quot;) {\r\n         option domain-name-servers 8.8.8.8 ;\r\n} else if (vendor-class-identifier = &quot;PXE&quot;) {\r\n        option domain-name-servers 88.34.23.7 ;\r\n} else {\r\n        option domain-name-servers 4.4.4.4 ;\r\n}<\/em>\r\n<em>}<\/em><\/pre>\n<p>En ese ejemplo, asignamos el servidor DNS en funci&oacute;n del cliente que hace la petici&oacute;n de DHCP. En el arranque inicial de PXE, le asignar&iacute;amos el servidor 88.34.23.7, y luego, una vez arrancado, al Windows le dar&iacute;amos como servidor de DNS la 8.8.8.8. En otros casos, por ejemplo arrancando de un cliente Linux, le dariamos el servidor 4.4.4.4.<\/p>\n<h4>\n\tLo que el manual no explica:<\/h4>\n<p>Algunas de las funcionalidades aqu&iacute; expuestas las da el serviddor del ISC, la parte del servidor de DHCP, pero muhcas de estas mejoras solo pueden usarse si en cliente de DHCP es capaz de leerlas, interpretarlas, y pasarlas al sistema operativo. El servidor de DHCP del ISC, incluye un cliente de DHCP capaz de manejar todas estas opciones. Es muy recomendable usar este cliente en vez de los clientes sencillos que suelen llevar las distribuciones de Linux m&aacute;s comunes. Por el contrario, el cliente de Microsoft, solo maneja unas pocas opciones implementadas en su servidor DHCP.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>El DHCP es una herramienta muy potente para gestionar y configurar nuestas estaciones de trabajo. En este art&iacute;culo veremos algunas funcionalidades que van m&aacute;s all&aacute; de los usos habituales. Todos conocemos el servicio de DHCP (Dynamic Host Configuration Protocol) como el protocolo que sirve para asignar din&aacute;micamente la configuracion IP a nuestros equipos, olvid&aacute;ndonos de [&hellip;]<\/p>\n","protected":false},"author":594,"featured_media":1235,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[1],"tags":[],"experteses":[],"class_list":["post-1239","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-uncategorized-ca"],"acf":[],"_links":{"self":[{"href":"https:\/\/inlab.fib.upc.edu\/es\/wp-json\/wp\/v2\/posts\/1239","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/inlab.fib.upc.edu\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/inlab.fib.upc.edu\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/inlab.fib.upc.edu\/es\/wp-json\/wp\/v2\/users\/594"}],"replies":[{"embeddable":true,"href":"https:\/\/inlab.fib.upc.edu\/es\/wp-json\/wp\/v2\/comments?post=1239"}],"version-history":[{"count":0,"href":"https:\/\/inlab.fib.upc.edu\/es\/wp-json\/wp\/v2\/posts\/1239\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/inlab.fib.upc.edu\/es\/wp-json\/wp\/v2\/media\/1235"}],"wp:attachment":[{"href":"https:\/\/inlab.fib.upc.edu\/es\/wp-json\/wp\/v2\/media?parent=1239"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/inlab.fib.upc.edu\/es\/wp-json\/wp\/v2\/categories?post=1239"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/inlab.fib.upc.edu\/es\/wp-json\/wp\/v2\/tags?post=1239"},{"taxonomy":"experteses","embeddable":true,"href":"https:\/\/inlab.fib.upc.edu\/es\/wp-json\/wp\/v2\/experteses?post=1239"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}