miércoles, 29 de septiembre de 2010

Instalar DHCP en Windows Server 2003

Según explica Wikipedia:

DHCP (sigla en inglés de Dynamic Host Configuration Protocol - Protocolo de configuración dinámica de host) es un protocolo de red que permite a los nodos de una red IP obtener sus parámetros de configuración automáticamente. Se trata de un protocolo de tipo cliente/servidor  en el que generalmente un servidor posee una lista de direcciones IP dinámicas y las va asignando a los clientes conforme éstas van estando libres, sabiendo en todo momento quién ha estado en posesión de esa IP, cuánto tiempo la ha tenido y a quién se la ha asignado después.

Este protocolo se publicó en octubre de 1993, estando documentado actualmente en la RFC 2131. Para DHCPv6 se publica el RFC 3315.

Bueno, sabiendo esto ahora nos prepararemos para conocer una forma sencilla y eficiente de instalar el rol de DHCP a un servidor de Windows Server 2003. Algunos aspectos que deben ser tomados en cuenta son los siguientes:

I. Este DHCP ha sido montado para ser parte del Dominio Tabroken.local, no es parte del Active Directory que se creo en el primer tutorial, por tanto las direcciones ips, no coincidirán.

II. Las direcciones y nombres han sido tomados a forma de ejemplo, por tanto no es obligatorio usar el rango de ips y/o el subneteo, el rango de ips que el usuario ha de tomar dependería de la cantidad de equipos que pertenecerán a la estructura IT que este desarrolle.

III. El tutorial tiende a ser básico, un segundo tutorial con opciones avanzadas podría ser lanzado (aunque por el momento sin fecha)

Teniendo esto claro, pasemos a la instalación:

1. Lo primero es que necesitas dirigirnos hacia donde se agrega o elimina algún rol en nuestro servidor. A seguidas seleccionamos a DHCP Server, el cual es el rol que vamos a configurar




















2. Aquí tenemos el sumario de las selecciones que realizamos anteriormente. Es una pantalla informatva, donde bien podemos avanzar, retrocerder, cancelar la instalación o solicitar cierto tipo de ayuda en caso de que no estemos claros en lo que estamos haciendo




















3. Al empezar la instalación de los componentes necesarios, nos pedirá colocar el CD de Windows Server 2003.





















4.Aquí terminó de instalar los componentes, simplemente le damos a next y nos preparamos para realizar nuestra parte




















5. En esta parte nos encargaremos de dos cosas: A. Darle un nombre al Scope (ámbito) y B. Completar la descripción de este Scope, OjO, la descripción no es obligatorio, pero puede resultar ser muy importante en un futuro, además llenarlo es muy sencillo, así que no supone inconveniente alguno completarlo.




















6. Llegó el momento de especificar el rango de direcciones IP que serán utilizadas en nuestra ámbito. Se necesita especificar una dirección de IP inicial y una final, además del tipo de subneteo que le vamos a dar. Lo recomendable es usar direcciones IP del tipo privada, para quienes no tiene claro este concepto, estamos hablando de lo siguiente:

Clase A: 10.0.0.0 a 10.255.255.255 (8 bits red, 24 bits hosts)
Clase B: 172.16.0.0 a 172.31.255.255 (12 bits red, 20 bits hosts)
Clase C: 192.168.0.0 a 192.168.255.255 (16 bits red, 16 bits hosts)

Puede usar cualquiera de las tres clases, pero lo más recomendable es seleccionar una que se ajuste a lo que realmente necesitaremos.




















En mi caso, decidí (porque así me dio el deseo) establecer un rango de direcciones privadas de Clase B




















7.Luego de completar el rango de direcciones a repartir, pasamos a especificar las exclusiones. Pero, excluir qué? Excluir las direcciones IP que no queremos que nuestro servidor DHCP se mantenga repartiendo. Esto lo utilizamos cuando tenemos equipos en red que por su uso necesitan mantener una IP constante, ya se un printer en red o algún Network-attached storage NAS.

Entiendo que dirán que resulta mejor ponerle manualmente la dirección IP al equipo y nos evitamos agregar excepciones, ciertamente esto no es un paso obligario que además puede realizarse posteriormente, sin embargo yo lo encuentro bastante recomendable excluir ciertas direcciones para evitar duplicidad en la red.




































8.Continuando con la configuración de nuestro Scope, ahora le indicamos a nuestro servidor la cantidad de tiempo que una maquina podrá tener una dirección IP, podemos hacer que cambie en dias, horas y minutos. Por defecto viene con una duración de ocho días. A menos que por alguna razón especifica tengamos que cambiarlo, así se puede quedar.




















9. Ahora vamos a configurar las opciones del DHCP, estas pueden ser configuradas más tarde o de inmediato. Hasta aquí la primera parte del Tutorial sobre configurar DHCP en Windows Server 2003. En la segunda y última parte, vamos a configurar estas opciones y a ver, brevemente, algunas configuraciones avanzadas. Hasta la próxima 

Configurar Servidor DNS en Windows Server 2003

Domain Name System / Service (o DNS, en español: sistema de nombre de dominio) es un sistema de nomenclatura jerárquica para computadoras, servicios o cualquier recurso conectado a internet o a una red privada. Este sistema asocia información variada con nombres de dominios asignado a cada uno de los participantes. Su función más importante, es traducir (resolver) nombres inteligibles para los humanos en identificadores binarios asociados con los equipos conectados a la red, esto con el propósito de poder localizar y direccionar estos equipos mundialmente.

El DNS es una base de datos distribuida y jerárquica que almacena información asociada a nombres de dominio en redes como Internet. Aunque como base de datos el DNS es capaz de asociar diferentes tipos de información a cada nombre, los usos más comunes son la asignación de nombres de dominio a direcciones IP y la localización de los servidores de correo electrónico de cada dominio.

Fuente: Wikipedia

Sabiendo esto, procederemos a realizar la configuración de nuestro Servidor DNS

1. Lo primero es que debemos acceder a a las opciones de configuración de nuestro DNS Server a través de la pantalla Manage Your Server




















2. A continuacion, damos click derecho sobre la sección llamada Reverse Lookup Zones, donde vamos a crear una nueva Zona Reversa. Una Zona Reversa traduce direcciones IP a nombres DNS.



















3. A continuación debemos especifiar qué tipo de zona es la que vamos a crear. En nuestro caso lo que queremos es realizar una Zona Primaria, puesto que es nuestro primer servidor DNS, en caso de que quisieramos instalar un servidor para backup de DNS, podríamos instalar una Zona Secundaria



















4. Aquí tenemos que especificar la forma en la que replicará la data del DNS a través de nuestra red. Puede ser para todos los servidores DNS en el Forest Active Directory del dominio, a todos los servidores en el Dominio o a todos los controladores de dominio. Esta última opción la utilizaremos en caso de que nuestra zona vaya a ser cargada por servidores DNS con Windows 2000.



















5. Esta es una parte muy importante (bueno, todas lo son XD) aquí vamos a darle nombre a nuestra zona reversa. Una forma sencilla y efectiva de ajustar esto es, simplemente colocar la dirección IP de la tarjeta de Red de nuestro servidor DNS. Recuerden siempre que la IP DNS de nuestro servidor es su propia IP. En mi caso, la ip es 192.168.0.10, por eso coloqué 192.168 como ID de Red.



















6. Esta parte está dedicada a las actualizaciones dinámicas. Nuestras opciones son: Permitir sólo actualizaciones dinámicas seguras, Permitir tanto las seguras como las no seguras y No permitir las actualizaciones. Nos interesa permitir las seguras, por tanto elegimos la primera opción.




















7. Luego de que veamos el sumario, le damos a finalizar




















8. Ahora viene la parte donde vamos a ver en la linea de comandos cómo el DNS hace la resolución de nombres. Si se fijan ahora que digitamos el comando nslookup, pero como aun no hemos registrado el DNS, nos va a indicar que no encuentra el servidor.




















9. Salimos del nslookup y, a continuación, digitamos ipconfig /registerdns. De inmediato esto iniciará el registro del DNS. Cualquier error que se presente podrá ser visto en el visor de eventos dentro de 15 minutos














10. Luego del arrancado del registro del DNS, podemos dirigirnos hacia la administración del servidor, expandiendo el contenido de las Zonas Reversas. Fijense que ahí tenemos nuestra Zona 162.168.x.x




















11. Ahora sí podemos volver a la linea de comandos y escribir nslookup, fijense que ya podemos visualizar nuestro servidor por defecto y su dirección IP. De inmediato me lanzo a probar la resolución de nombres escribiendo www.google.com.do y el servidor me devuelve las IPs 208.69.32.230 y 208.69.32.231














12. Para finalizar, volvemos a la administración de nuestro Servidor DNS, click derecho y propiedades.



















Para qué volvemos a ver las propiedades? Para ajustar los Forwarders (reenviadores) que nos servirán para agilizar nuestra resolución de nombres. Estos son bastante efectivo, y, en caso de que algún día necesitemos realizar algún bloqueo de webs vía DNS, nos van a ser muy útiles. Emplearemos a las direcciones IPs 208.67.220.220 y 208.67.222.222 que pertenecen a OpenDNS. Luego de agregarlas, aplicamos y le damos Ok. 



















Bueno, con esto finalizamos este tutorial básico de la instalación del Servidor DNS. Posteriormente trataré de mostrar algunas opciones avanzadas.

sábado, 25 de septiembre de 2010

Programa que lee un arreglo y lo escribe de la forma que se nos pide

Entramos a la parte de los arreglos. Según Wikipedia:

Una matriz o vector (llamados en inglés arrays) es una zona de almacenamiento contiguo, que contiene una serie de elementos del mismo tipo, los elementos de la matriz. Desde el punto de vista lógico una matriz se puede ver como un conjunto de elementos ordenados en fila (o filas y columnas si tuviera dos dimensiones). En principio, se puede considerar que todas las matrices son de una dimensión, la dimensión principal, pero los elementos de dicha fila pueden ser a su vez matrices (un proceso que puede ser recursivo), lo que nos permite hablar de la existencia de matrices multidimensionales, aunque las más fáciles de imaginar son los de una, dos y tres dimensiones.

1. Escribir un programa que lea el arreglo

4    7    1    3    5
2    0    6    9    7
3    1    2    6    4

Y lo escriba

4    2    3   
7    0    1
1    6    2
3    9    6
5    7    4

/************************************************************************/
/* Programa que lee un arreglo y lo escribe de la forma que se nos pide  */
/* Nombre de programa: leearreglo.cpp                                               */
/************************************************************************/

#include <stdio.h>
#include <conio.h>

main()
{

/* Definimos las variables f = filas y c = columnas*/
int f= 0, c= 0;
/* Definimos las dimensiones del arreglo que vamos a leer, si se fijan este arreglo tiene 3 filas y 5 columnas*/
int arreglo[3][5] = {4,7,1,3,5,2,0,6,9,7,3,1,2,6,4};

printf("Programa que lee un arreglo y lo ordena");
printf("\n\n");

/* Aquí utilizamos la estructura de repetición for para que llene nuestro arreglo y luego lo vamos a imprimir */
for (f=0; f<3; f++)
{
for (c=0; c<5; c++)
{
printf("%d\t",arreglo[f][c]);

}
printf("\n");
}
printf("\n");

/* Aquí escribimos el arreglo en el orden que se nos pidió al intercambiar los valores de las filas y las columnas */
for (f=0; f<5; f++)
{
for (c=0; c<3; c++)
{
printf("%d\t",arreglo[c][f]);

}
printf("\n");

}
/* No se nos pide una pausa, pero de todas formas la incluyo */
getch();
}

Programa que calcula la media de una lista de numeros positivos y termina con uno negativo

/************************************************************************/
/* Programa que calcula la media de una lista de numeros positivos  */
/* y termina con uno negativo                                                          */
/* Nombre de programa: media.cpp                                               */
/************************************************************************/

# include <stdio.h>
# include <stdlib.h>
# include <conio.h>

int main ()
{
    float x, suma, media;
    int n;
    system ("cls");
    printf("******************************************************************************");
    printf("\n*      Programa que calcula la media de una lista de numeros positivos                                     *"); printf("\n******************************************************************************");
    printf("\n\n\nDebe introducir la lista de numeros positivos ");
    printf("\nLuego cualquier negativo para finalizar ");
    printf ("\n\nIntroduzca los numeros de la lista: \n");
       scanf ("%f", &x);
       if (x<0){
       printf ("\nIntroduzca negativos solo para terminar la lista \n");
       printf("\n\n\nIntroduzca la lista de numeros positivos: \n");
       scanf ("%f", &x);
       }
       while (x<0);
    suma = x;
    n = 1;
    scanf ("%f", &x);
    while (x >= 0)
    {
       n++;
       suma = suma + x;
       scanf ("%f", &x);
    }
    media = suma/n;
    printf ("\nLa media de esta lista de numeros positivos es: %.2f\n\n\n", media);
    getch(); 
    return (0);
}

Programa que calcula, e imprime el producto, cociente entero y resto de dos numeros de tres cifras

/************************************************************************/
/* Programa que calcula, e imprime el producto, cociente entero         */
/* y resto de dos numeros de tres cifras                                */
/* Nombre de programa: trescifras.cpp                                   */ /************************************************************************/

#include <stdio.h>
#include <conio.h>

main()
{

      int a,b;
     
    system ("cls");
    printf("******************************************************************************");
    printf("\n*      Programa que calcula, e imprime el producto, cociente entero          *");
    printf("\n*               y resto de dos numeros de tres cifras                        *");
 printf("\n******************************************************************************");
      printf("\n\n\nIntroduzca el primer numero: ");
      scanf("%d",&a);
      while (a < 99 || a > 1000){
      printf("\n\nSolo se aceptan numeros de tres cifras.\n");
      printf("\n\nIntroduzca el primer numero: ");
      scanf("%d",&a);
      }
      printf("\n\nIntroduzca el segundo numero: ");
      scanf("%d",&b);
      while (b < 99 || b > 1000){
      printf("\n\nSolo se aceptan numeros de tres cifras.\n");
      printf("\n\nIntroduzca el segundo numero: ");
      scanf("%d",&b);
      }
      printf("\n\nEl producto es: %d * %d = %d\n", a, b, a*b);

      printf("\nEl cociente es: %d / %d = %d\n",a, b, a/b);

      printf("\nEl resto es: %d mod %d = %d\n", a, b, a%b);
     
      printf("\n\n\nPresione cualquier tecla para salir ");
      
      getch();
      return 0;
}

Programa que calcula el área de un triangulo

/************************************************************************/
/* Programa que calcula el área de un triangulo                         */
/* Nombre de programa: areatriangulo.cpp                                */
/************************************************************************/

/*Calcular el área de un triangulo mediante la fórmula:
Area = (p(p-a)(p-b)(p-c))^1/2
Donde p es el semiperimetro, p=(a+b+c) / 2, siendo a,b,c los tres lados
del triangulo*/

# include <stdio.h>
# include <math.h>
# include <conio.h>


main()
{
   
float a, b, c, p;
system("cls");
printf("Programa que calcula el area de un triangulo\n\n");
printf("\n\nIntroduzca la longitud del lado a: ");
scanf("%f", &a);
printf("\n\nIntroduzca la longitud del lado b: ");
scanf("%f", &b);
printf("\n\nIntroduzca la longitud del lado c: ");
scanf("%f", &c);
p = (a + b + c)/2;
printf("\n\nEl area es: %.2f\n", sqrt(p*(p-a)*(p-b)*(p-c)));

getch();
}

Cuál es la salida del siguiente segmento de programa?

Cuál es la salida del siguiente segmento de programa?

for(cuenta=1; cuenta<5; cuenta++)
printf(“%d”, (2*cuenta));
/*Cual es la salida del siguiente segmento de programa?
for(cuenta=1; cuenta<5; cuenta++)
prinft("%d", (2*cuenta));*/

#include <stdio.h>
#include <conio.h>

main(){
    int cuenta;
    system("cls");
        for(cuenta=1; cuenta<5; cuenta++)
        printf("%d", (2*cuenta));

getch();

}

/*La salida es 2468*/