jueves, 21 de junio de 2012

UNIDAD 4: CONFIGURACIONES DE MEMORIA COMPARTIDA Y DISTRIBUIDA

Expo unidad 4
View more presentations from Jessica Diaz.

UNIDAD III PROCESOS Y PROCESADORES EN SISTEMAS DISTRIBUIDOS


3.1 PROCESOS Y PROECESADORES CONCEPTOS BASICOS

Un procesos.
Son todos o todas las actividades o programas compilados que se encuentran guardados en una memoria.


Un procesador. 
Es el dispositivo de hardware que se encarga de ejecutar los procesos. 






3.2 HILOS Y MULTIHILOS

Los hilos son mini procesos. Cada hilo se ejecuta en forma estrictamente secuencial y tiene su propio contador de programa una pila para llevar un registro de su posición.
Los hilos comparten CPU de la misma forma que lo hacen los procesos secuencialmente y tiempo compartido.
Solo en un multiprocesador se pueden ejecutar realmente en paralelo. Los hilos pueden crear hilos hijos, mientras un hilo esta bloqueado se puede ejecutar otra fila del mismo proceso en los distintos hilos de un proceso comparten un espacio de direcciones, y los hilos pueden tener distintos estados (en ejecución, bloqueado, listo y terminación).
Muchos sistemas operativos distribuidos soportan múltiples hilos de control dentro de un proceso que comparten un único espacio de direcciones que ejecutan casi paralelamente como si fueran procesos independientes.

3.3.- MODELOS DE PROCESADORES

En un sistema distribuido con varios procesadores un aspecto fundamental en el diseño es como se utiliza a los procesadores que se pueden organizar de varias formas:

  • ·         De estación de trabajo
  • ·         De pila de procesadores
  • ·         Híbrido

            3.3.1 DE ESTACIÓN DE TRABAJO

Este sistema consta de computadoras dispersas conectadas entre si mediante una red de área local puede contar o no con disco duro en cada una de ellas, los usuarios tienen una cantidad fija de poder de computo y un alto grado de autonomía para asignar sus recursos locales.
La idea consiste en ordenar realmente la ejecución de procesos en estaciones de trabajo inactivas.

Los usuarios tienen:
•      Una cantidad fija de poder de cómputo exclusiva.
•      Un alto grado de autonomía para asignar los recursos de su estación de trabajo.
Uso de los discos en las estaciones de trabajo:
•      Sin disco:
–     Bajo costo, fácil mantenimiento del hardware y del software, simetría y flexibilidad.
–     Gran uso de la red, los servidores de archivos se pueden convertir en cuellos de botella.
•      Disco para paginación y archivos de tipo borrador:
–     Reduce la carga de la red respecto del caso anterior.
–     Alto costo debido al gran número de discos necesarios.
•      Disco para paginación, archivos de tipo borrador y archivos binarios (ejecutables):
–     Reduce aún más la carga sobre la red.
–     Alto costo y complejidad adicional para actualizar los binarios.
•      Disco para paginación, borrador, binarios y ocultamiento de archivos.  
–     Reduce aún más la carga de red y de los servidores de archivos.
–     Alto costo.
–     Problemas de consistencia del caché.
•      Sistema local de archivos completo:
–     Escasa carga en la red.
–     Elimina la necesidad de los servidores de archivos.
–     Pérdida de transparencia. 
3.3.2.- MODELO DE PILA DE PROCESADORES

Este método consiste en construir una pila de procesadores, repleta de CPU, en un cuarto de maquinas, los cuales se pueden asignar de manera dinámica a los usuarios según la demanda.
A cada usuario se le da una terminal gráfica de alta rendimiento, como las terminales X, incluso se pueden utilizar terminales ASCII.

Ventajas
·         Precio
·         Elimina la asociación entre el número de usuarios y el de estaciones de trabajo.
·         Facilita el crecimiento por incrementos

De hecho se convierte el poder de cómputo en “estaciones de trabajo inactivas”, a las que se puede tener acceso de manera dinámica. Aquí no existe el concepto de propiedad.
La motivación para la idea de la pila de procesadores proviene de dar un paso mas adelante en la idea de las estaciones de trabajo sin disco.
El principal argumento para la centralización del poder de cómputo como pila de procesadores proviene de la teoría de colas.

     Aun así, el modelo de pila de procesadores es una forma más limpia de obtener poder de cómputo adicional que la búsqueda de estaciones inactivas. Ningún procesador pertenece a alguien, no hay máquina origen, no hay peligro de que el poseedor regrese.
Seleccionar pila de procesadores o estaciones de trabajo inactivas va a depender del trabajo que se desarrolle.

 3.3.3.- MODELO DE PROCESADOR HÍBRIDO

Se puede establecer una mediación al proporcionar a cada usuario una “estación de trabajo” personal y además tener una pila de procesadores. Aunque esta solución es  más cara.
  Para procesos interactivos sería mejor utilizar estaciones de trabajo, con una respuesta garantizada.  Sin embargo las estaciones inactivas no se utilizan, lo cual hace más sencillo al diseño del sistema. Solo se dejan sin utilizar. En vez de esto todos los interactivos se ejecutan  en la pila de procesadores, así como todo el cómputo pesado en general. Este modelo proporciona una respuesta interactiva más rápida, un uso eficiente de los recursos y un diseño sencillo. 





3.4 ASIGNACIÓN DE PROCESADORES

Por definición, un sistema distribuido consta de varios procesadores. Estos se pueden organizar como colección de estaciones de trabajo personales, una pila pública de procesadores o alguna forma híbrida. En todos los casos, se necesita cierto algoritmo para decidir cuál proceso hay que ejecutar y en qué máquina. Para el modelo de estaciones de trabajo, hay que decidir cuándo ejecutar el proceso de manera local y cuándo buscar una estación inactiva. Para el modelo de la pila reprocesadores, hay que tomar una decisión por cada nuevo proceso.

Uso de estaciones de trabajo inactivas
Plantea el problema de encontrar estaciones de trabajo inactivas en la red que puedan ejecutar procesos. Por lo cual las estaciones de trabajo deben de anunciar cuando no cuentan con una carga de trabajo asignada, así todas las demás estaciones toman nota de esto y lo registran.



Modelos de asignación
Generalmente se utilizan las siguientes hipótesis:
Todas las máquinas son idénticas o al menos compatibles en el código, difieren a lo sumo en la velocidad.
Cada procesador se puede comunicar con los demás. Las estrategias de asignación de procesadores se pueden dividir en 2 categorías amplias:

No migratorias:
Al crearse un proceso, se toma una decisión de donde colocarlo. Una vez colocado en la máquina, el proceso permanece ahí hasta que termina. No se puede mover, no importa lo sobrecargada que esté la máquina.

Migratorias:
Un proceso se puede trasladar aunque haya iniciado su ejecución. Permiten un mejor balance de la carga pero son más complejas y tienen un efecto fundamental en el diseño del sistema.
Los algoritmos de asignación intentan optimizar:

Uso de las CPU:
Maximizar el número de ciclos de CPU que se ejecutan para trabajos de los usuarios. Minimizar el tiempo de inactividad de las CPU.


Tiempo promedio de respuesta
Minimizar no los tiempos individuales de respuesta sino los tiempos promedio de respuesta.


Tasa de respuesta:
Minimizar la tasa de respuesta, que es el tiempo necesario para ejecutar un proceso en cierta máquina dividido por el tiempo que tardaría en cierto procesador de referencia.

3.4.1 ALGORITMOS  CON SUS ASPECTOS DE DISEÑO  E IMPLEMENTACIÓN Y ASIGNACIÓN.


Los algoritmos de asignación intentan optimizar:
Uso de las CPU:
Maximizar el número de ciclos de CPU que se ejecutan para trabajos de los usuarios. Minimizar el tiempo de inactividad de las CPU.
Tiempo promedio de respuesta
Minimizar no los tiempos individuales de respuesta sino los tiempos promedio de respuesta.
Tasa de respuesta:
Minimizar la tasa de respuesta, que es el tiempo necesario para ejecutar un proceso en cierta máquina dividido por el tiempo que tardaría en cierto procesador de referencia.
Las principales decisiones que deben tomar los diseñadores se pueden resumir en 5 aspectos:

  1. Algoritmos deterministas vs. Heurísticos
  2. Algoritmos centralizados vs. Distribuidos
  3. Algoritmos óptimos vs. Subóptimos
  4. Algoritmos locales vs. Globales
  5. Algoritmos iniciados por el emisor vs. Iniciados por el receptor
1) Algoritmos deterministas
Son adecuados cuando se sabe de antemano todo acerca del comportamiento de los procesos. En pocos, si no es que en ninguno de los sistemas, se tiene un conocimiento total de antemano, pero a veces se puede obtener una aproximación razonable. Se pueden definir en términos de una máquina de estado; un «estado» describe qué está haciendo la máquina en un instante particular de tiempo. Justo cuando se produce la entrada, la máquina comienza en su «estado inicial» y, posteriormente, si la máquina es determinista, comenzará la ejecución de la secuencia de estados predeterminados. Una máquina puede ser determinista y no tener límite temporal para la ejecución o quedarse en un bucle de estados cíclicos eternamente. Ejemplos de máquinas abstractas deterministas son las máquinas de Turing deterministas y los autómatas finitos deterministas.


Algoritmos heurísticos
Son adecuados cuando la carga es impredecible. Un algoritmo heurístico (o simplemente heurística) puede producir una buena solución (puede que la óptima) pero también puede que no produzca ninguna solución o dar una solución no muy buena. Normalmente, se basa en un conocimiento intuitivo del programador sobre un determinado problema.


2) Diseño centralizado vs. Distribuido


La recolección de toda la información en un lugar permite tomar una mejor decisión, pero menos robusta y coloca una carga pesada en la máquina central. Son preferibles los algoritmos descentralizados, pero se han propuesto algunos algoritmos centralizados por la carencia de alternativas descentralizadas adecuadas. Una desventaja de los centralizados es que la máquina central se puede sobrecargar y se pierde robustez ante su posible falla.


   Cuando el poseedor de una estación de trabajo ejecuta procesos en las máquinas de otras personas, acumula puntos de penalización, un número fijo por cada segundo, como se muestra en la siguiente figura:


3)    Algoritmos óptimos vs. Sub óptimos:
Se pueden obtener las soluciones óptimas tanto en los sistemas centralizados como en los descentralizados, pero por regla son más caros que los sub óptimos. Hay que recolectar más información y procesarla un poco más. En la práctica la mayoría de los sistemas distribuidos reales buscan soluciones subóptimas, heurísticas y distribuidas, debido a la dificultad para obtener las óptimas.

Aspectos de la Implantación


Casi todos los algoritmos suponen que las máquinas conocen su propia carga y que pueden informar su estado:
·La medición de la carga no es tan sencilla
Un método consiste en contar el número de procesos (hay que considerarlos procesos latentes no activos).
Otro método consiste en contar solo los procesos en ejecución o listos.  
También se puede medir la fracción de tiempo que la cpu está ocupada.
Otro aspecto importante es el costo excesivo en consumo de recursos para recolectar medidas y desplazar procesos, ya que se debería considerar el tiempo de CPU, el uso de memoria y el ancho de banda de la red utilizada por el algoritmo para asignación de procesadores.
Se debe considerar la complejidad del software en cuestión y sus implicancias para el desempeño.
Si el uso de un algoritmo sencillo proporciona casi la misma ganancia que uno más caro y más complejo, generalmente será mejor utilizar el más sencillo.
Se debe otorgar gran importancia a la estabilidad del sistema:
·         Las máquinas ejecutan sus algoritmos en forma asíncrona por lo que el sistema nunca se equilibra.
·         La mayoría de los algoritmos que intercambian información:
o   Son correctos luego de intercambiar la información y de que todo se ha registrado.
o   Son poco confiables mientras las tablas continúan su actualización, es decir que se presentan situaciones de no equilibrio.


3.5 COPLANIFICACION

Cada procesador se multiprograma con “n” espacios para los procesos (multiprogramación de nivel “n”). El algoritmo de Ouster hout utiliza el concepto de coplanificación:
· Toma en cuenta los patrones de comunicación entre los procesos durante la planificación.
·    Debe garantizar que todos los miembros del grupo se ejecuten al mismo tiempo.
·    Se emplea una matriz conceptual donde: = Las filas son espacios de tiempo.=  Y las columnas son las tablas de procesos de los procesadores.
·  Cada procesador debe utilizar un algoritmo de planificación Round Robin. Donde:  
1-      Todos los procesadores ejecutan el proceso en el espacio “0” durante un cierto período fijo.
2-      Todos los procesadores ejecutan el proceso en el espacio “1” durante un cierto período fijo, etc.
3-      Se deben mantener sincronizados los intervalos de tiempo.
4-      Todos los miembros de un grupo se deben colocar en el mismo número de espacio de tiempo pero en procesadores distintos.

 3.6 TOLERANCIA A FALLOS

La tolerancia a fallos es un aspecto crítico para aplicaciones a gran escala, ya que aquellas simulaciones que pueden tardar del orden de varios días o semanas para ofrecer resultados deben tener la posibilidad de manejar cierto tipo de fallos del sistema o de alguna tarea de la aplicación.
Sin la capacidad de detectar fallos y recuperarse de estos, dichas simulaciones pueden no llegar a completarse. Es más, algunos tipos de aplicaciones requieren ser ejecutadas en un entorno tolerante a fallos debido al nivel de seguridad requeridos.
De cualquier forma, en ciertos casos debería haber algún modo de detectar y responder automáticamente a ciertos fallos del sistema o al menos ofrecer cierta información al usuario en el caso de producirse un fallo.
En PVM hay un mecanismo de notificación de fallos, de forma que una tarea puede manejar notificaciones sobre ciertas tareas de las que espera recibir un mensaje. Por ejemplo, si una tarea muere, otra que estuviese esperando un mensaje de la primera recibirá una notificación en lugar del mensaje que esperaba. De esta forma, la notificación le da la oportunidad de responder al fallo sin tener que fallar forzosamente.


3.7 SISTEMAS DE TIEMPO REAL

Los sistemas de tiempo real son aquellos que interactuan con el mundo exterior donde el tiempo es un factor importante.

CARACTERÍSTICAS.
Se activan por evento o por tiempo.
Su comportamiento debe ser predecible.
Deben ser tolerantes a fallas.
La comunicación en los sistemas distribuidos de tiempo real debe de alto desempeño.
 CLASIFICACIÓN.
Los sistemas de tiempo real se clasifican en general en dos tipos dependiendo de lo serio de sus tiempos límite y de las consecuencias de omitir uno de ellos. Estos son:
·         Sistema de tiempo real suave.
·         Sistema de tiempo real duro.
 El tiempo real suave significa que no existe problema si se rebasa un tiempo límite. Un sistema de tiempo real duro es aquel en el que un tiempo límite no cumplido puede resultar catastrófico.
Ejemplo de sistema de tiempo real suave.
Conmutador telefónico.
Ejemplo de sistema de tiempo real duro.
Alarma sísmica.


ACTIVACIÓN DE SISTEMAS DE TIEMPO REAL.
Los sistemas de tiempo real pueden ser activados por evento o por tiempo. Se dice que un sistema es activado por evento cuando, al ocurrir un evento externo, este es detectado por algún sensor, lo que entonces provoca que el CPU conectado tenga una interrupción. Los sistemas activados por eventos están controlados entonces por las interrupciones. Por otro lado, en los sistemas de tiempo real activados por el tiempo, se verifican los sensores cada cierto tiempo, para verificar si está ocurriendo algún evento externo. La desventaja es que se pierde mucho tiempo de CPU si los eventos ocurren con poca frecuencia.

viernes, 1 de junio de 2012

PRACTICA


INSTALACIÓN DEL SERVIDOR
Iniciamos con la configuración de nuestro servidor.
Primero tenemos que instalar el sistema operativo y podemos encontrar las imágenes iso AQUÍ la última versión en este momento es "Ubuntu 10.10 (Maverick Meerkat)" en ese link pueden encontrar para procesadores de 64 bits o 32 bits.
En este caso seleccionaré el siguiente (32 bits):
Una vez que ya descargamos el archivo de formato ".iso" podemos quemarlo con un software gratuito y excelente para los usuarios de güin2 llamado ImgBurn que lo encuentran aquí, en su página oficial o instalarlo por medio de unetbootin en una USB.
A continuación arrancamos con el CD dentro de nuestra unidad óptica y veremos la siguiente pantalla.


Seleccionamos el idioma español:
Entramos en la opción "Instalar Ubuntu Server":
Elegimos nuestro país "México"
Seleccionamos sí para configurar nuestro teclado
Buscamos en nuestro teclado los símbolos y letras que nos piden (+, y, u, r, etc.)
Ahora buscamos si el símbolo "Ç" se encuentra en nuestro teclado y si está seleccionamos sí.
Oprimimos la tecla
Con estos pasos nos configuró nuestro teclado y encontró que el idioma es "es".






Si tenemos conectado nuestro modem a la computadora por cable Ethernet entonces la configuración se hará con el protocolo DHCP para obtener los parámetros de configuración de red automáticamente.
Seleccionamos el nombre de la máquina (por defecto es Ubuntu), este parámetro puede ser modificado por motivos de seguridad para no dar información acerca de nuestro sistema operativo, poniendo un nombre que no de información.

En este caso la zona horaria es de acuerdo a la ubicación ciudad de México



Ahora toca la parte del particionado y seleccionamos particionado "manual"
Aquí en el ejemplo el disco duro virtual tiene un tamaño de 10 GB pero no importa más o menos indicaremos cuales son los tamaños de las particiones necesarias.
Elegimos la opción "sí"

Seleccionamos el espacio libre para nuestra tabla de particiones
Creamos una partición nueva
Ponemos el tamaño de la partición en este ejemplo que para nada es el recomendable se seleccionaron dos particiones una / (raíz) y lo demás para swap (área de intercambio).
Pero las particiones recomendables con los respectivos tamaños son las siguientes:


Imagen tomada de "Implementación de Servidores con GNU/Linux"

Seleccionamos la partición primaria
Y ahora queremos que la partición este al principio
El sistema de ficheros para todas nuestras particiones excepto para la partición swap es "EXT4".
Como está indicado en la imagen anterior las particiones recomendadas son:
/boot con sistema de ficheros EXT4 y tipo de partición primaria (100MB)
/ con sistema de ficheros EXT4 y tipo de partición primaria (1024MB)
swap con sistema de ficheros "área de intercambio" (doble de la memoria ram o en algunos casos no es necesaria cuando la potencia del ordenador es muy grande)
/tmp con sistema de ficheros EXT4 y tipo de partición lógica (4.2GB)
/usr con sistema de ficheros EXT4 y tipo de partición lógica (8 GB)
/var con sistema de ficheros EXT4 y tipo de partición lógica (mitad del disco duro restante)
/home con sistema de ficheros EXT4 y tipo de partición lógica (la otra mitad del disco duro restante)

Seleccionamos "se ha terminado de definir la partición"
Creamos las siguientes particiones

Terminamos de definir las particiones

Aceptamos con "sí" para que se escriban los cambios en el disco
 Nombre de nuestro nuevo usuario (nombre y apellido o solo nombre)

Nombre corto del usuario de la cuenta



Elegimos una contraseña y la repetimos para comprobarla
Seleccionamos "no" en el cifrado de la carpeta personal

Lo dejamos en blanco y seleccionamos continuar


En este punto el único paquete que instalaremos es "OpenSSH server" y lo seleccionamos con la tecla space.


Después de darle en continuar y que se instalen lo paquetes veremos la siguiente pantalla


Ponemos "sí" para instalar GRUB


Y con esto terminamos con la instalación del servidor, ahora vamos a instalar las aplicaciones que son necesarias para tener el servidor de correo.

GADMIN-SAMBA.
Es una sencilla aplicación GTK+ para administrar Samba y el servidor de impresión. Cuenta con múltiples usuarios remotos y locales e importación de grupos, creación y manipulación de usuarios, incluyendo la aleatorización de nombres de usuario y contraseñas. Impresión de documentos PDF a directorios compartidos/privados o vía e-mail. También cuenta con tres niveles de estrategias de gestión de dominios.

INSTALACIÓN

Desde un repositorio se puede usar Synaptic directamente o editar a mano, con su editor favorito, el fichero /etc/apt/sources.list. Para instalarlo, puede accederse a la sección de descargas de Gadmin-Samba. Se encuentran disponibles paquetes para su instalación. Es posible descargarlo también desde repositorios locales con distribuciones como Debian 6.0 Squeeze. Después es posible instalar Gadmin-samba a través del apt con las siguientes órdenes:
·         apt-get update (para actualizar)
·         apt-get install gadmin-samba (instalar)

Posteriormente a su instalación se puede acceder al mismo desde Aplicaciones/Herramientas del sistema/Gadmin-samba. Al ejecutarse por primera vez Gadmin-samba, se presentará una ventana con una serie de fichas y comandos configurables.

Configuración de Samba mediante Gadmin-Samba

Para los nuevos en Samba, la configuración de este proveedor de archivo sin costura y servicios de impresión a clientes SMB / CIFS a veces puede ser una pesadilla. No sólo se trata de archivos de configuración complicada, también tiene está el hecho de conseguir usuarios que se agregen a los archivos de contraseña cifrada. Una de esas herramientas que hacen posible la configuración es la herramienta gadmin-samba de la suite Gadmintools de GUI de Linux. La suite Gadmintools permite configurar fácilmente Samba con la ayuda de una interfaz gráfica bien elaborada. Con esta herramienta es posible tener Samba en marcha y funcionando en poco tiempo.

Programas necesarios

Deben estar instalados previamente algunos programas para la correcta configuración de samba mediante Gadmin-samba, puede hacerse de dos maneras:
Instalar la suite completa de herramientas Gadmin.
Instalar sólo la herramienta Samba.
Hay que asegurarse de que Samba está instalado, así como winbind. Si se tiene dudas puede ejecutarse Synaptic y buscar lo siguiente:
samba
winbind
gadmin-samba
Posteriormente a esto se procederá con la configuración.

Correr Gadmin-samba

Para iniciar la herramienta se irá a Herramientas del sistema sub-menú del menú Aplicaciones - Gadmin Samba. Se tendrá que entrar en el sudo (o usuario root - dependiendo de la distribución) contraseña. La ventana principal se abrirá, sin opciones de configuración de llenado.
Configuración del servidor

Aunque hay numerosas opciones para configurar, sólo se necesita configurar algunos para obtener un servidor Samba básico en marcha y funcionando.
El nombre de host de los servidores: Este es realmente el nombre Netbios como se configura en smb.conf.
Grupo de trabajo: El grupo de trabajo del servidor Samba será una parte.
Nivel de seguridad: Si se establece de acuerdo a las necesidades.
Hosts permitidos y las redes: eth0 (puede que tenga que modificar eth0 para reflejar el nombre del dispositivo de red).

Usuarios

La ficha Usuarios es exactamente lo que se puede esperar - un medio para configurar los usuarios de la cuota de Samba. En esta sección se toma el lugar sin tener que utilizar el comando smbpasswd. En esta ficha se tendrá que llenar:
Nombre de usuario: El nombre del usuario.
Contraseña: La contraseña para el usuario.
Grupo: Debe agregar el usuario a un grupo. Se puede agregar con seguridad al usuario el mismo nombre que el nombre de usuario.
Comentario: Por alguna extraña razón, los comentarios son obligatorios.
Directorio de inicio. Se pone en el directorio home del usuario.
Shell: Lo más probable es que sea / bin / sh
Después de llenar esta información, se hará clic en el botón Aplicar.

Recursos compartidos

Al hacer clic en la pestaña Recursos compartidos es posible que se encuentren algunos valores por defecto en su lugar. En todo caso sólo se debe configurar lo siguiente:
Nombre del recurso compartido: El nombre del recurso compartido que se desea crear.
Directorio compartido: El directorio que se desea compartir a cabo. Por defecto, Samba Gadmin va a querer compartir con / opt / samba. Esto está bien, pero se debe recordar que los usuarios normales no tienen permiso de escritura en este directorio.Es posible agregar usuarios a este directorio por el desplazamiento hacia abajo y hacer clic en "Añadir permisos de acceso" y caminar a través del asistente.
Debe tenerse cuidado con esto. Si se agrega a los usuarios del recurso, sólo los usuarios tendrán acceso al recurso. Se trata de una buena seguridad, pero se debe recordar que para agregar nuevos usuarios a este recurso compartido se debe tener acceso a nuevos usuarios. Una vez que se haya configurado el usuario, se puede hacer clic en la ficha Configuración para ver lo que el archivo / etc / samba / smb.conf mostrar. Clic en el botón Guardar. Una vez que haya guardado el archivo de configuración, hacer clic en el botón Activar y Samba estará en marcha y funcionando, listo para su conexión a los usuarios.

Consideraciones finales

La interfaz gráfica de usuario Gadmintools Samba ha tomado la complejidad de la configuración de un servidor Samba. Dar a esta herramienta una oportunidad puede conseguir que el servidor Samba funcione más rápidamente y con menos dificultades existentes con los ajustes manuales.
CREACION DE UN VPN
Lo primero de todo, saber que nuestro equipo debe tener una dirección IP estática. Por otro lado el router debe tener el puerto PPTP (1723 TCP) abierto, sería recomendable abrirlo utilizando la regla predefinida en el router.
Es preferible seleccionar la regla específica para PPTP en el router ya que, además del puerto 1723, necesitamos tener abierto otro puerto que soporte el protocolo GRE. Manualmente no podemos realizar esta operación, pero las reglas predefinidas sí la realizan.

En esta parte difieren en cuál es la mejor opción para administrar las actualizaciones de seguridad y los parches por instalar. Es recomendable si es minucioso que elija la opción "sin actualizaciones automáticas" pero es posible que complemente la opción de "instalar actualizaciones de seguridad automáticamente" y revisando en páginas como debian-security-announce, y algunas más para mantener su sistema seguro.


Manual de Seguridad de Debían.



Para este tutorial tendremos que recurrir a un terminal. Así que vamos a abrir el terminal pulsando sobre el botón “Inicio”, buscamos “Terminal” y lo abrimos.


Instalar los paquetes

En el terminal tecleamos la siguiente orden:
sudo apt-get install pptpd
Una vez tecleada pulsamos ENTER para que se ejecute. Ahora vamos a ver qué significa cada una de las palabras:
·         sudo: Dice al sistema que ejecute lo que le sigue como administrador.
·         apt-get: Programa encargado de gestionar los paquetes del sistema.
·         install: Parámetro que dice a apt-get que deseamos instalar paquetes.
·         pptpd: Paquete a instalar, en este caso el servidor de PPTP.
Dado que el comando se ejecutará como administrador, el sistema pedirá nuestra contraseña de usuario. Para mayor seguridad no se mostrará ningún tipo de símbolo en la pantalla mientras escribimos dicha contraseña.

En este caso, apt-get ha detectado que para que se pueda instalar el paquete pptpd necesita, además, el paquete bcrelay. Antes de realizar acción alguna pide nuestra aprobación. Dado que estamos de acuerdo presionamos la tecla “S“y luego ENTER para que comience la descarga y posterior instalación de los paquetes.


Configuración

Una vez finalizado el proceso se iniciará el servidor PPTP automáticamente, pero aún no está configurado, para lo cual ejecutaremos:
Sudo nano /etc/pptpd.conf
Al igual que hicimos con la órden anterior, procedemos a su explicación:
·         sudo: Dice al sistema que ejecute lo que le sigue como administrador.
·         nano: editor de texto para terminal. Hay cientos de editores pero creo que este es de los más sencillos de utilizar.
·         /etc/pptpd.conf: Ruta absoluta del archivo que queremos modificar.


Tras ejecutarlo aparecerá en la misma ventana del terminal el editor nano. Usando los cursores bajamos hasta el final del todo e insertamos, como si se tratara del bloc de notas, las líneas (en la captura la hemos seleccionado para distinguirlas del resto del texto):
localip 10.10.10.1
remoteip 10.10.10.100-200,10.10.10.245
·         Explicación:
·         Primera línea: Especificamos cuál será la dirección IP de nuestro servidor dentro de la VPN. Para que no haya conflicto con las direcciones IP “domésticas”, hemos seleccionado un rango de direcciones distinto.
·         Segunda línea: Especifica el rango de direcciones que usaremos para asignar a los clientes. En la parte anterior a la “,” (coma) hemos especificado un rango y detrás una dirección simple. Con esto hemos querido mostraros las dos posibles formas de especificar las direcciones de los clientes, es decir, que podéis especificar simplemente un rango.
Para guardar los cambios presionamos “Control + O“ y para salir “Control + X“.



Añadiendo usuarios

Ahora vamos a añadir usuarios a nuestra VPN. Para hacerlo modificaremos el archivo chap-secrets:
sudo nano /etc/ppp/chap-secrets


Formato (cada espacio es en realidad una tabulación):
nombre_de_usuario pptpd contraseña *
En nuestro ejemplo hemos usado los siguientes pares usuario/contraseña:
·         usuariovpn / password
·         usuario2 / 12345
Ahora guardamos y salimos, ya sabéis “Control + O“ y “Control + X


Configurando iptables

Hasta este punto ya tenemos todo lo referente a nuestra VPN configurado, tan sólo quedaconfigurar el cortafuegos de Ubuntu para que permita el acceso a las conexiones entrantes yredirija el tráfico. Para que la configuración se mantenga con cada reinicio modificaremos el scriptrc.local:
sudo nano rc.local
Vamos hasta el final del fichero e insertamos ANTES de la última línea lo siguiente:
iptables -t nat -A POSTROUTING -s 10.10.10.0/24 -o eth0 -j MASQUERADE
A tener en cuenta:

§  10.10.10.0/24 : Rango de direcciones que elegimos cuando estábamos configurando PPTPD.
§  eth0 : Nombre de la interfaz de red. En nuestro caso se trata de cable, si fuera WiFi recibiría el nombre de wlan0 .
Una vez realizados los cambios, cerramos y guardamos como hasta ahora.
Ahora vamos a proceder a activar el IP forwarding, para ello vamos a modificar el archivo/etc/sysctl.conf:
sudo nano /etc/sysctl.conf

Buscamos la línea:
#net.ipv4.ip_forward=1
Y le quitamos la #:
net.ipv4.ip_forward=1
Guardamos los cambios y cerramos el archivo.
Aunque en un principio podríamos aplicar los cambios sin necesidad de reiniciar el ordenador, creo que es interesante verificar que después de reiniciar todo continúa funcionando perfectamente. Así que vamos a reiniciar el ordenador desde el propio terminal:
sudo telinit 6
Listo, ya sólo queda configurar los clientes y disfrutar de nuestra VPN.