Hay una pregunta que he visto varias veces en los foros de soporte, o que me han hecho: “¿Cómo puedo hacer para que las máquinas que no son del Dominio no reciban configuración desde el servicio DHCP?”
Siempre he dado la respuesta “No se puede. Porque para que identifique que pertenece al Dominio o no, primero debe asignarle dirección IP para la comunicación”
Tengo que reconocerlo, estaba equivocado. Se puede hacer, y no es complicado
En casi todos los casos la pregunta estaba relacionada a que si alguna persona externa conectara su propia máquina a la red de la organización, no pudiera ni conectarse a las máquinas, ni salir a Internet
La infraestructura que utilizaré para esta demostración, es la misma de siempre en todas las notas. Solamente utilizaré las siguientes:
- DC1.ad.guillermod.com.ar: Controlador de Dominio con DNS y servicio DHCP
Dirección IP: 192.168.1.201/24 - CL1.ad.guillermod.com.ar: Cliente del Dominio con sistema operativo de escritorio
Dirección IP: obtenida por DHCP - Máquina con sistema operativo de escritorio, en Grupo de Trabajo
Para esta nota estoy usando sistemas operativos Windows Server 2016 y Windows 10, pero es válido también con sistemas operativos anteriores desde Windows Server 2012 en el servidor
He creado una Unidad Organizativa donde he puesto las cuentas de máquina, en este caso dos, pero utilizaré solamente a CL1. Esta configuración se debe a que más adelante utilizaré una Directiva de Grupo (GPO)
En DC1 está configurado el servicio DHCP, con los valores normales para un ambiente de Dominio, nada diferente a lo que se suele hacer: Dirección IP y Máscara de Subred, Puerta de Enlace, Dirección de servidor DNS y sufijo de Dominio de la conexión
Por último, muestro que la máquina CL1, está configurada para obtener configuración IP automáticamente, y lo está haciendo desde el servicio DHCP nombrado antes
Como hemos visto se trata de una configuración normal, sencilla y habitual
Si alguien tuviera dudas en la instalación y configuración del servicio DHCP dejo un enlace a una nota en este mismo blog
Windows Server 2012: Instalando y Configurando DHCP
Comento primero un concepto en general poco conocido relacionado a DHCP, y lo que voy a hacer en los próximos pasos
En el servicio DHCP, se pueden crear y utilizar “Vendor Classes” y “User Classes” para que de acuerdo a que el cliente se identifique perteneciendo a una clase determinada, el servicio DHCP le asigne diferentes parámetros de configuración (No dirección IP ni Máscara de Subred)
Las “Vendor Classes” son dependientes del sistema operativo del cliente. Es una opción presente desde Windows Server 2000, pero nunca la he visto utilizada, y ni siquiera en la teoría
En cambio las “User Classes” pueden tener aplicación en algunos casos, ya que las podemos definir a nuestra necesidad y criterio. En este caso definiré una “User Class” y le reservaré todo el rango de direcciones IP del ámbito, con lo cual si una máquina no pertenece a esta “User Class” no recibirá configuración IP
Por supuesto que esta configuración no es 100% segura ya que si alguien accede con su propia máquina, le puede poner configuración IP en forma manual, sólo que antes necesitará conocer los valores que debe configurar
Nota: uno más de los motivos por los que recomiendo nunca usar las direcciones IP privadas clásicas que usan casi todos y por lo tanto son fácilmente adivinables
Comencemos entonces creando una GPO enlazada a la Unidad Organizativa donde están las cuentas de máquina a fin de configurar la «User Class» de las máquinas. Se podría hacer también a nivel de Dominio, ya que normalmente los servidores usan configuración manual
Lo haremos como muestran las siguientes capturas de pantalla, por supuesto cada uno usará los nombres de su preferencia, lo mismo que los parámetros adecuados a su propia red
Asignaremos la “User Class” a través de un “Startup Script” de máquina. No debemos hacerlo por usuario, ya que si no es administrador local no podrá asignar la “User Class”. Recordar que aunque se llame “User Class” es para la máquina, no el usuario
La ubicación del “script” dentro de la GPO, siempre ha causado problemas al que no conoce el tema. Así que usaré un procedimiento “a prueba de …”, que consiste en abrir la carpeta que indica el sistema y crear en la misma el archivo de comandos, luego asignarlo
Simplemente creo un archivo de texto, lo edito, y finalmente cambio la extensión TXT a CMD
El comando para configurar al cliente para que pertenezca a una determinada “User Class” de DHCP es:
IPCONFIG /SetClassID <NombreAdaptadorDeRed> <NombreClase>
En mi caso: IPCONFIG /SetClassID Ethernet MiDominio
Nota: para todo lo que se refiera a nombres de “User Classes” conserven siempre la sintaxis mayúsculas/minúsculas ya que es sensible a esto
Guardamos los cambios, y cambiamos la extension a CMD. Ya podemos cerrar la ventana
Y ahora lo asignamos, como muestran las siguientes capturas de pantalla
Quedará así
Como lo que asignamos es un “Startup Script”, y para que surta efecto inmediato, en CL1, fuerzo la actualización de la GPO, y reincio para que ejecute el “Startup Script”
Luego del reinicio desde un CMD con IPCONFIG /ALL verifico que el cliente ya tiene asignada la “User Class”
Ahora debemos ir a DC1, y configurar el servicio DHCP, para lo cual lo primero a hacer es definir la “User Class” como se muestra a continuación
Debemos escribir en “Display Name”, luego pulsar bajo “ASCII” y poner el nombre. Tranquilos que el “Binary” se completa automáticamente :)
Quedará así
Ahora debemos crear la “DHCP Policy”, como se muestra. Cuidado, sobre “Policies” del “Scope”
Agregamos la condición de pertenecer a la “User Class”
Y continuamos con el asistente
Debemos asignarle a la “policy” todo el rango de direcciones IP disponibles en el ámbito
Y los parámetros necesarios: Puerta de Enlace, dirección de servidor DNS y sufijo de Dominio de la conexión
Y finalizamos el asistente
Quedará así en la consola DHCP
En CL1 y desde un CMD ejecutado como administrador ejecuto una renovación completa para ver si hubiera algún problema (IPCONFIG /RELEASE IPCONFIG /RENEW)
Y ahora la “prueba de fuego” ¿qué sucede con una máquina que no es cliente del Dominio? ¿le dará o no configuración IP?
Para esto he utilizado una máquina con sistema operativo Windows 10, en Grupo de Trabajo, y como podemos ver, no le asigna ni siquiera dirección IP/Máscara de Subred, simplemente no le responde
Por último, podemos verificar en la consola DHCP que solamente CL1 es quien ha obtenido parámetros de configuración
Como hemos visto, contrariamente a lo que yo creía hasta ahora, y además estaba seguro que era así, pues no lo era. Se puede hacer que un servidor DHCP no responda a clientes que no son parte del Dominio
Comentarios
No se visualizan los screenshots
Hola Juan, verifico desde otra máquina diferente, e inclusive otro navegador que se ven perfectamente las capturas de pantalla
Suele suceder cuando hay problemas en la conectividad a Internet o es muy lenta, intenta de nuevo si no haz podido verlas
cuando lio cuando con los router se puede hacer mucho mas sencillo.
un portal cautivo para todos y listo, automaticamente les lanza el portal cautivo y hasta que el portal no los idenfigue no pueden entrar e la red.
a demas con pfsense puedes dejar una red de acceso a los usuarios no de domio con unas rutas de acceso predeterminadas y a los de dominio otras.
o mas sencillo aun idenfificacion de bocas dejar las bocas no de domiio identificadas para que entren por defecto en una red y las bocas identificadas como equipos de dominio a otra.
Hola eduar, nuevamente estás confundiendo el objetivo de la nota, en ningún momento he planteado que es la única o mejor solución a un problema, simplemente es una
Y si te parece más sencillo un portal cautivo, redes diferentes u 802.1x ya puedes implementarlo a tu gusto
A mi me vinieron a cabeza 3 escenarios donde esto es mas viable de implementar que un portal cautivo. Todo depende del escenario.
Hola Javier, yo pienso exactamente lo mismo en cuanto a más fácil. Hay varias opciones posibles con más o menos dificultad de implemntación y también con más o menos seguridad
Esto implica que todos los adaptadores de red deberían tener el mismo nombre no? a menos que pueda manejaar comodines, o en todo caso configurar varias politicas
No creo que pueda manejar comodiones, pienso que lamentablemente habría que hacerlo por cada uno de los nombres, ya que diferentes versiones de Windows llaman diferente a la conexion de red
Para «trampear» esa restricción, se podría asignar el user class manualmente en la PC intentando conseguir DHCP; por ejemplo para máquinas que no pueden/deben estar en dominio, pero queremos que tengan DHCP.
Una buena medida de seguridad extra para evitar la conectividad a la red, de PCs que no son del dominio :)
Hola Leandro, exacto, si quisieras que alguien externo se pueda conectar le puedes indicar a mano el comando para poner la «User Class»
Pero no te olvides de decirle que luego lo debe sacar ;)
Nosotros venimos utilizando los filtros de DHCP para conseguir los mismo, aunque tenemos el mismo problema, si un usuario establece una IP fija consigue la conectividad sin problemas.
Hola Juan, tal como dices, esta es sólo una solución llamémoslo «sencila» pero no es la gran solución, sólo una opción para ambientes chicos y sencillos, sin grandes requerimientos de seguridad
Mejor opción es que los externos se conecten a una red separada, que conecta con el resto a través de un cortafuegos, que es una opción que permite un mejor control
Pregunta: ¿La configuracion del comando ipconfig es persistente? supongamos que tenemos equipos fuera del dominio que si son de la empresa (por la razon que sea y que, obviamente no se les aplican las gpo)…¿Hay que ejecutar en cada inicio el comando «IPCONFIG…» en cada equipo manual o automaticamente?? Gracias.
Al fijar el «User Class» es persistente. Para quitarla hay que ejecutar nuevamente el comando pero sin poner «User Class»
El trabajo que hace es de parabenos, me encontré con tu blog ayer anoite suceda antes de dormir y no tienen tiempo para leer pero he encontrado información sobre L2TP que necesitaba para entender la forma en que estaba funcionando, confieso que como una configuración y despliegue son únicos, se explica cada paso y debido a los errores y cómo solucionarlo.
Tengo que ajustar una configuración que ha implementado, tengo un DC w2k12r2 Una VPN Dedicado a w2k12r2 y w10 CLI, pero quiero el protocolo VPN funciona como L2TP, probablemente tendrá que tener un «AD CA» =) requeridos por los artículos
Hola Marcio, me alegro te sirva la información del blog, si quieres ver todas las notas te llevará bastante tiempo :) al día de hoy hay 448, y normalmente publico todos los días Martes
Si la idea es L2TP-IPsec, te confirmo que en ese caso se necesitan obligatoriamente certificados digitales, tanto en el servidor VPN como en cada uno de los clientes
Respecto a los protocolos para VPN te dejo unos enlaces, el primero con las necesidades de cada uno de los tres posibles, y los otras notas donde hay demostración paso a paso de cada uno
Conectando Clientes a la Red por VPN – Qué Protocolo Usar | WindowServer:
https://windowserver.wordpress.com/2015/12/08/conectando-clientes-a-la-red-por-vpn-qu-protocolo-usar/
Demostración Conectando Clientes a la Red por VPN – Windows Server 2008-R2 y Windows 7 – Parte 1 por PPTP | WindowServer:
https://windowserver.wordpress.com/2011/07/09/demostracin-conectando-clientes-a-la-red-por-vpn-windows-server-2008-r2-y-windows-7-parte-1-pptp-2/
Preparación de simulación de Internet para Demostraciones | WindowServer:
https://windowserver.wordpress.com/2011/10/01/preparacin-de-la-simulacin-de-internet/
Demostración Conectando Clientes a la Red por VPN – Windows Server 2008-R2 y Windows 7 – Parte 2 por L2TP-IPSec, SSTP y IKEv2 | WindowServer:
https://windowserver.wordpress.com/2011/10/02/demostracin-conectando-clientes-a-la-red-por-vpn-windows-server-2008-r2-y-windows-7-parte-2-por-l2tp-ipsec-sstp-y-ikev2/
Gracias Guillermo Delprato, realmente su blog es bastante completo, buscaba entre otras muchas cosas, vi que la enseñanza acerca de la creación de un equilibrio de carga de una puerta de enlace predeterminada, configurar la página web para la entidad emisora de certificados, a distancia a través de la aplicación web, es muy bonito de ver y no cree que esto en la web hoy en día. Y lo mejor de todo lo que son activos, participar, publicar y promocionar su blog.
Yeah parabenos. !!
¡Gracias Marcio! :)
Hola Guillermo, excelente aporte. En este contexto, si las máquinas que son de dominio adquieren IP y las que no pertenecen quedan sin conexion de red, como agregas una maquina nueva al dominio? Gracias
¡Muy buena pregunta! :)
Para unir máquinas al Dominio hay que ser administrador local, así que provisoriamente puede ponerle configuración manual
La idea es para cuando ya está el Dominio completo, y evitar que un «extraño» se conecte automáticamente a la red, aunque siempre queda la posibilidad que con unas pocas pruebas ponga direcciones válidas
Y justamente esto último es uno de los motivos por los que nunca recomiendo usar 192.168.0.0/24, 192.168.1.0/24, 172.16.0.0/16 y ninguna que comience con 10
Interesante y bien explicado, pero habría alguna forma de hacerlo por usuarios o grupos de usuarios en vez de por equipos? Alguna forma de ejecutar el script con permisos de administrador y que sea seguro?
Hola James, entiendo que no puede ser por usuario porque para identificar al usuario primero tendría que tener conectividad a la red del Dominio
Hola que tal, queria saber si teniendo un servidor de despliegue como el WDS voy a poder seguir trabajando con esto y me dara IP cuando voy a bootear desde la red. Gracias.
Entiendo que no porque la máquina primero se conectam, luego se instala y al final se agrega al Dominio
buenas, si yo quiero quitar el ID. de clase DHCPv4 como debo hacerlo porque de la forma que yo la elimino se queda en las maquinas sin importar que haga gpupdate /force y reinicie la maquina
Hola.Con el modificador «setclasid» seguido de nada, en blanco
Buenas tardes Guillermo, con los dispositivos de tipo smartphones, tablets o smart TVs, ¿qué sucedería en estos casos? Es decir: no hay forma de agregarlos al dominio y por ende no se les asignaría ningún IP. ¿Hay alguna forma de dar solución a este caso en particular? Muchas gracias de antemano.
Hola Ernestoc, habría que probar si se puede obtener alguna cadena inicial
Buenas tardes Guillermo, ante todo muchas gracias por su respuesta. Disculpe mi ignorancia, pero no le comprendo cuando dice: «habría que probar si se puede obtener alguna cadena inicial». ¿Pudiera explicarme mejor?
Revisa la creación de la User Class
No debería haber problemas si consigues una cuenta de máquina que contenga un cuenta de caracteres