Servidor DHCP con 3 rangos de IP en Centos 6

Hola a la comunidad.
Les cuento mi problema. Tengo que montar un servidor dhcp en Centos, el servidor y los clientes (hosts con win XP) a los que debe dar IP están en la red 10.1.1.0. Necesito que se entreguen direcciones en 3 rangos:
- Grupo 1: Desde la 10.1.1.50 a la 10.1.1.100
- Grupo 2: Desde la 10.1.1.101 a la 10.1.1.199
- Grupo 3: Desde la 10.1.1.200 a la 10.1.1.250
Mi pregunta es, cómo hago para que el DHCP sepa la IP que debe asignar al host según el grupo al que pertenece?
¿Se puede filtar por nombre de host?, por ejemplo, un pc con win XP y nombre de host PCGrupo1 solicita una ip al servidor y éste le asigna una del Grupo1.
¿Hay alguna otra forma de lograr esto?
Gracias!
10 years, 7 months ago
No se puede tener dos maquinas de igual nombre en una misma red por lo que no hay forma facil de hacer lo que pides. Lo que puedes hacer es armar una lista de las direcciones mac y nombre de las pcs de cada grupo y configurar el servidor dhcp asignando manualmente una ip a cada maquina pero allí perderia sentido tener dhcp ya que seria casi como hacer direccionamiento estatico. La forma de hacer lo que te dije seria editar el archivo /etc/dhcp/dhcpd.conf y agregar al final:
host NOMBREDELHOST {
hardware ethernet MACE:LA:MA:QUI:NA;
fixed-address IP.QUE.TU.QUIERAS;
}
tendrias que agregar uno por uno y seria un trabajo tedioso. Habria que ver si no existe forma de configurar de forma tal de decirle que “si el nombre del host empieza con tales letras asignale una ip de tal rango”, o algo asi que agilice la configuracion, aunque lo dudo.
10 years, 7 months ago
PunXtaR
No se puede tener dos maquinas de igual nombre en una misma red por lo que no hay forma facil de hacer lo que pides. Lo que puedes hacer es armar una lista de las direcciones mac y nombre de las pcs de cada grupo y configurar el servidor dhcp asignando manualmente una ip a cada maquina pero allí perderia sentido tener dhcp ya que seria casi como hacer direccionamiento estatico. La forma de hacer lo que te dije seria editar el archivo /etc/dhcp/dhcpd.conf y agregar al final:
host NOMBREDELHOST {
hardware ethernet MACE:LA:MA:QUI:NA;
fixed-address IP.QUE.TU.QUIERAS;
}
tendrias que agregar uno por uno y seria un trabajo tedioso. Habria que ver si no existe forma de configurar de forma tal de decirle que “si el nombre del host empieza con tales letras asignale una ip de tal rango”, o algo asi que agilice la configuracion, aunque lo dudo.
Tal vez no me expresé bien.. las pc no tendrían el mismo nombre, sería una nomenclatura para cada grupo, por ejemplo, las pc del Grupo 1 tendrian nombres del tipo PCGrupo1.1, PCGrupo1.2…. etc. donde el último número los diferenciaría (es un ejemplo, no se si se puede poner punto en el nombre de equipo en XP).
A lo que yo apunto es algo más referido a lo que pusiste al final: “si el nombre del host empieza con tales letras asignale una ip de tal rango”.
10 years, 7 months ago
Código: #/etc/dhcp/dhcpd.conf

#Supongo que el servidor de DCHP corre en 10.1.1.1
server-identifier 10.1.1.1;
# DNS
option domain-name-servers 10.1.1.1;

#tiempos por default 1 dia
default-lease-time 86400;
max-lease-time 86400;

#Servidor con autoridad para esta red
authoritative;

#Si la red es/24 …
option subnet-mask 255.255.255.0;
option broadcast-address 10.1.1.255;

#dafault gateway
option routers 10.1.1.1;


# Divide la red en clases

class “Grupo1” {
match if (

(substring (option dhcp-client-identifier, 0, 6) = “Grupo1&rdquosmile
);
}

class “Grupo2” {
match if (

(substring (option dhcp-client-identifier, 0, 6) = “Grupo2&rdquosmile

);
}

class “Grupo3” {
match if (
(substring (option dhcp-client-identifier, 0, 6) = “Grupo3&rdquosmile

);
}

# Como es la red y como se otorgan las direcciones

subnet 10.1.1.0 netmask 255.255.255.0 {
option routers 10.1.1.1;
pool {
allow members of “Grupo1”;
deny members of “Grupo2”;
deny members of “Grupo3”;
range 10.1.1.50 10.1.1.100;
}
pool {
allow members of “Grupo2”;
deny members of “Grupo1”;
deny members of “Grupo3”;
range 10.1.1.101 10.1.1.199;
}
pool {
allow members of “Grupo3”;
deny members of “Grupo1”;
deny members of “Grupo2”;
range 10.1.1.200 10.1.1.250;
}
}
Cada cliente debería mandar el identificador correspondiente. En el caso de sistemas basados en debian el archivo a modificarse es el dhclient.conf
….
….
send dhcp-client-identifier “Grupo1”
….
….
Saludos
10 years, 7 months ago
Esto de las clases se me había ocurrido.. pero no se bien como es lo de enviar el identificador… hay q tener en cuenta q los clientes tienen win XP. Intenté hacerlo con el nombre de host pero se ve q no lo lee de ahi.
Aclaro que los host tienen nombres distintos.. es decir, las pc del grupo 1 tendrian nombres del tipo: pc1grupo1, pc2grupo1,….., pcNgrupo1.
Gracias por la respuesta
Johanes
Código: #/etc/dhcp/dhcpd.conf

#Supongo que el servidor de DCHP corre en 10.1.1.1
server-identifier 10.1.1.1;
# DNS
option domain-name-servers 10.1.1.1;

#tiempos por default 1 dia
default-lease-time 86400;
max-lease-time 86400;

#Servidor con autoridad para esta red
authoritative;

#Si la red es/24 …
option subnet-mask 255.255.255.0;
option broadcast-address 10.1.1.255;

#dafault gateway
option routers 10.1.1.1;


# Divide la red en clases

class “Grupo1” {
match if (

(substring (option dhcp-client-identifier, 0, 6) = “Grupo1&rdquosmile
);
}

class “Grupo2” {
match if (

(substring (option dhcp-client-identifier, 0, 6) = “Grupo2&rdquosmile

);
}

class “Grupo3” {
match if (
(substring (option dhcp-client-identifier, 0, 6) = “Grupo3&rdquosmile

);
}

# Como es la red y como se otorgan las direcciones

subnet 10.1.1.0 netmask 255.255.255.0 {
option routers 10.1.1.1;
pool {
allow members of “Grupo1”;
deny members of “Grupo2”;
deny members of “Grupo3”;
range 10.1.1.50 10.1.1.100;
}
pool {
allow members of “Grupo2”;
deny members of “Grupo1”;
deny members of “Grupo3”;
range 10.1.1.101 10.1.1.199;
}
pool {
allow members of “Grupo3”;
deny members of “Grupo1”;
deny members of “Grupo2”;
range 10.1.1.200 10.1.1.250;
}
}
Cada cliente debería mandar el identificador correspondiente. En el caso de sistemas basados en debian el archivo a modificarse es el dhclient.conf
….
….
send dhcp-client-identifier “Grupo1”
….
….
Saludos
10 years, 7 months ago
Creo que se puede hacer una clasificación por hostname, de hecho, los sistemas que usan dhclient mandan el hostname en una linea del archivo dhclient.conf:
send host-name “<hostname>”;
Mira la sintaxis de substring
substring (data-expr, offset, length)
The substring operator evaluates the data expression and returns the substring of the result of that evaluation that starts offset bytes from the beginning, continuing for length bytes. Offset and length are both numeric expressions. If data-expr, offset or length evaluate to null, then the result is also null. If offset is greater than or equal to the length of the evaluated data, then a zero-length data string is returned. If length is greater then the remaining length of the evaluated data after offset, then a data string containing all data from offset to the end of the evaluated data is returned.

Deberías prestar atención que parte de la cadena “hostname” queres comparar con qué.
Si para el esquema de nombres de host decidis usar pcNNgrupoN
donde N es un digito de 0 a 9, podrias hacer:
class “Grupo1” {
match if (
(substring(option host-name,4,6) = “grupo1&rdquosmile
);
}
Podes usar expresiones booleanas dentro del if
Mucho más para leer aca:
Saludos
10 years, 7 months ago
simoncolon
Pudiste solucionar el problema mativ8?
Tengo el mismo problema para un trabajo práctico. Saludos y gracias
Me suena ese tp de algun lado smile
Fijate más arriba, la solución a tu problema particular no debe andar lejos de eso.
Saludos
8 years, 7 months ago
 

Buscar mensajes