You are on page 1of 28

Enrutamiento en Linux

En nuestro Centro Educativo hemos venido detectando problemas de saturación de la línea de


conexión a Internet sin motivo justificado. Hemos detectado que en algún ordenador de la sala de
profesorado y de algún departamento hay instalados programas de P2P (descarga masiva) y somos
conscientes de que estos programas saturan el canal de salida a Internet del centro, además
sospechamos que el alumnado también utiliza este tipo de programas.

El router ADSL está conectado a un switch y por lo tanto a través de múltiples utilidades es fácil
conocer su dirección IP y configurar nuestro equipo como puerta de enlace, con el consiguiente acceso
libre a Internet y a la descarga masiva. Nos encontramos con un esquema del tipo:

Este esquema no permite controlar el tráfico de red puesto que los PCs tienen acceso directo al router.

Situando el servidor entre la red y el router, todo el tráfico hacia Internet pasa por el servidor lo que
nos permitirá analizarlo, generar estadísticas, filtrar accesos, instalar un proxy-caché, etc., de forma
sencilla y centralizada.
Activación del enrutamiento en Linux

Las funciones de enrutamiento mediante NAT son realizadas por el cortafuegos que analizará los
paquetes provenientes de la red local interna cuyo destino sea Internet y los modificará
convenientemente para que salgan hacia Internet como si fueran emitidos por el servidor. A partir del
núcleo 2.4 de Linux, el cortafuegos empleado es iptables.

Para posibilitar que nuestro servidor Linux sea capaz de comportarse como un router y hacer de
puerta de enlace para los PCs de nuestra red local, será necesario crear un script que configure el
cortafuegos iptables para que realice NAT desde dentro de la red local hacia Internet.

Creación del script para activar enrutamiento


Para activar el enrutamiento en un sistema Linux, tan solo basta con poner a '1' la variable ip_forward
del sistema, es decir, basta con ejecutar desde una consola de root:
// Activar el enrutamiento en un sistema Linux
# echo "1" > /proc/sys/net/ipv4/ip_forward

Posteriormente tendríamos que configurar el filtrado para que acepte el redireccionamiento de


paquetes desde dentro hacia fuera de nuestra red y mediante NAT permita que los PCs de la red
interna naveguen con la dirección IP 'publica' del servidor. Supongamos que el router Linux tiene una
tarjeta (eth0) configurada con la IP 192.168.1.2/24 y conectada al router, cuya IP es 192.168.1.1/24,
y por otro lado, tenemos otra tarjeta (eth1) configurada con la ip 10.0.0.1/8 y conectada al switch
para dar servicio a nuestra red interna que utiliza el rango 10.0.0.0/8. Nuestro esquema sería como el
que vemos en la siguiente figura:
Router Linux

Tendríamos que indicar que se acepten todos los paquetes que son para reenviar, es decir, aquellos
que llegan a nuestra máquina pero que no es ella la destinataria. Para ello, tendríamos que aceptar los
paquetes de tipo FORWARD, como veremos en la siguiente sección. Por otro lado, tendríamos que
indicar que los paquetes que llegan desde nuestra red interna (-s 10.0.0.0/8) y que salgan por la
interfaz eth0 hacia el router (-o eth0), después de enrutarlos en nuestra máquina (POSTROUTING),
debemos enmascararlos (MASQUERADE), es decir, hacer NAT. Los comandos a ejecutar serían:

// Haciendo NAT en el servidor


# iptables -A FORWARD -j ACCEPT
# iptables -t nat -A POSTROUTING -s 10.0.0.0/8 -o eth0 -j MASQUERADE

Podríamos realizar un script que activara el enrutamiento y el NAT y otro para desactivarlo:

// activar-enrutamiento.sh
echo "1" > /proc/sys/net/ipv4/ip_forward
iptables -A FORWARD -j ACCEPT
iptables -t nat -A POSTROUTING -s 10.0.0.0/8 -o eth0 -j MASQUERADE

// desactivar-enrutamiento.sh
echo "0" > /proc/sys/net/ipv4/ip_forward

Así, nuestro servidor se convertiría en un router. Si todas las comunicaciones de la red pasan por
nuestro servidor, podremos tenerlas controladas, como veremos en las siguientes secciones.

Crear y eliminar rutas fijas

Cuando activamos el enrutamiento en Linux, nuestra máquina se convierte en un router automático,


de forma que todo lo que entre por la interfaz eth0 con destino a una red diferente de la definida en
eth0, lo reenviará por la interfaz eth1 y de igual forma, todo lo que entre por la interfaz eth1 con
destino a una red diferente de la definida en eth1, lo reenviará por la interfaz eth0. Es el
funcionamiento normal de un router, enrutar todo.

En algunos casos, puede que nos interese que ciertos paquetes salgan por una interfaz concreta. Por
ejemplo, supongamos que en nuestra red disponemos de dos conexiones ADSL independientes, una
para dar servicio de conexión a Internet al servidor (interfaz de producción) y otra, para conectarnos
desde nuestra casa al servidor, para realizar tareas de administración (interfaz de
administración).Supongamos que la interfaz eth0 está conectada al router ADSL de producción y la
interfaz eth1 está conectada al router ADSL para realizar tareas de administración.

Rutas fijas

Lo normal es que la interfaz eth0 tenga configurada como puerta de enlace la IP del router de
conexión a Internet, pero la interfaz eth1 no debería tener configurada la puerta de enlace, para que
no exista tráfico hacia Internet por dicha interfaz. Si en el ADSL de nuestra casa tenemos IP fija,
podemos crear una ruta para que cuando la IP destino sea la IP fija de nuestra casa, los paquetes se
enruten por eth1 en lugar de hacerlo por eth0. Ejemplo, si nuestra IP de casa es 80.58.12.27, el
comando a ejecutar será:

//Crear una ruta para una IP concreta


# route add 80.58.12.27 eth1

En lugar de una IP concreta, quizás nos interese crear una ruta para toda una red. Supongamos que
queremos que cuando la IP destino sea una IP del CNICE, salga por la interfaz eth1. Teniendo en
cuenta que el rango de IPs públicas del CNICE es 192.144.238.0/24, el comando a ejecutar sería:

//Crear una ruta para una red concreta


# route add -net 193.144.238.0/24 eth1

Si queremos eliminar una ruta, utilizaremos el parámetro 'del' seguido de la IP o la red destinataria.


Ejecutaríamos el siguiente comando:

//Eliminar una ruta


# route del -net 193.144.238.0/24

Si queremos ver la configuración de la tabla de rutas, debemos ejecutar el comando route sin


parámetros:
//Ver rutas
# route

Establecer rutas puede ser muy interesante cuando queremos dividir nuestra red en diferentes
subredes y disponemos de un servidor con varias tarjetas de red.
VPN en servidor Linux y clientes
Windows/Linux con OpenVPN +
Shorewall [Parte 1]
Autor: William López Jiménez
Correo electrónico:  william [punto] koalasoft [arroba] gmail [punto] com
Sitio de Red: http://www.koalasoftmx.net
Jabber ID:  koalasoft@jabber.org

Creative Commons Reconocimiento-NoComercial-CompartirIgual 2.1

© 2006-2007 William López Jiménez. Usted es libre de copiar, distribuir y comunicar públicamente la obra y hacer obras derivadas
bajo las condiciones siguientes: a) Debe reconocer y citar al autor original. b) No puede utilizar esta obra para fines
comerciales (incluyendo su publicación, a través de cualquier medio, por entidades con fines de lucro). c) Si altera o
transforma esta obra, o genera una obra derivada, sólo puede distribuir la obra generada bajo una licencia idéntica a ésta. Al
reutilizar o distribuir la obra, tiene que dejar bien claro los términos de la licencia de esta obra. Alguna de estas condiciones puede
no aplicarse si se obtiene el permiso del titular de los derechos de autor. Los derechos derivados de usos legítimos u otras
limitaciones no se ven afectados por lo anterior. Licencia completa en castellano. La información contenida en este documento y los
derivados de éste se proporcionan tal cual son y los autores no asumirán responsabilidad alguna si el usuario o lector hace mal uso
de éstos.

INTRODUCCIÓN
OpenVPNes una solución de conectividad basada en software: SSL(Secure Sockets Layer) VPNVirtual
Private Network [red virtual privada], OpenVPN ofrece conectividad punto-a-punto con validación, jerárquica
de usuarios y host conectados remotamente, resulta una muy buena opción en tecnologías Wi-Fi(redes
inalámbricas EEI 802.11) y soporta una amplia configuración, entre ellas balanceo de cargasentre otras.

Está publicado bajo licencia de código-libre (Open Source).

Tipo de configuración.
En esta ocasión se realizará una configuración tipo VPN Intranet.

Este tipo de redes es creado entre una oficina central [servidor] y una o varias oficinas remotas [clientes]. El
acceso viene del exterior. Se utiliza este tipo de VPN cuando se necesita enlazar a los sitios que son parte de
una compañía, en nuestro caso será compuesto por un servidor Central que conectará a muchos clientes VPN
entre si.

La información y aplicaciones a las que tendrán acceso los directivos móviles en el VPN, no serán las mismas
que aquellas en donde pueden acceder los usuarios que efectúan actividades de mantenimiento y soporte,
esto como un ejemplo de lo que se podrá realizar con esta configuración.

Ademas de que podrá conectarse vía Terminal Server [en el caso de clientes Linux] a terminales Windows
de la red VPN así como de Clientes Windows a computadoras con el mismo sistema operativo [mediante
RDP].

Nota Importante: Enfocado a esta configuración .. Una vez que los clientes [Win/Linux] se conecten a la red
VPN quedarán automáticamente sin conexión a Internet, lo cual NO podrán acceder a la red mundial. Esto
puede ser modificable en el servidor VPN.
Servidor de Pasarela OpenVpn con clientes [Win/Linux] remotos

El servidor VPN hace de pasarelapara que todos los clientes [Windows/Linux] puedan estar comunicados a
través del túnel OpenVpn, estos al conectarse por medio de Internet al túnel automáticamente quedan sin
lineaa la red mundial quedando como una red local, esto claro esta a través del VPN.

Cada cliente se encuentra en lugares diferentes [ciudad/estado/país] con diferentes tipos de segmento de red,
al estar conectados mediante el túnel VPN se crea un red virtual y se asigna un nuevo segmento de red
proporcionada por el servidor principal en este caso con segmento [10.10.0.0/255.255.255.255].

INSTALACIÓN VPN CON OPENVPN


Actualización del Sistema

Antes que nada debemos actualizar todo nuestro sistema, si cuenta con acceso a Internet así como también
correctamente configurado sus depósitos yum se hará de la siguiente forma:

yum -y update

Lo anterior bajará lo paquetes actualizados de Internet así como sus dependencias en caso de ser necesario.
Paquetes Requeridos

Instalación a partir de RPM

Se necesita los paquetes OpenVPN y lzo, se podrá hacer de la siguiente forma, si cuenta en sus depósitos
con la paquetería AL Desktop:

yum -y install openvpn lzo

Instalación a partir de paquete TAR.

En caso de no contar con paquetes RPMpuede hacerlo de forma manual.

Se requiere utilizar la compresión sobre el enlace VPN, para esto instale la biblioteca LZO
[http://www.oberhumer.com/opensource/lzo/].

Si utiliza un Linux 2.2 o anterior descargue el controlador TUN/TAP [http://vtun.sourceforge.net/tun/].

Los usuarios de Linux 2.4.7 o superior deberían tener el controlador TUN/TAP ya incluido en su kernel.

Usuarios de Linux 2.4.0 -> 2.4.6 deberían leer la advertencia al final del fichero INSTALL.

Descargue ahora la última release de OpenVPN:

[http://prdownloads.sourceforge.net/openvpn/]

Instalar desde paquete .tar, descomprima el paquete donde x.x-x es la versión del Openvpn:

tar zxvf openvpn-x.x-x.tar.gz

Compilar OpenVPN:

cd openvpn-x.x.
./configure
make
make install

Si no se descargó la biblioteca LZO, añada --disable-lzoal comando configure. Se pueden habilitar otras


opciones como el soporte para pthread(./configure --enable-pthread) para mejorar la latencia durante los
intercambios dinámicos de clave SSL/TLS.

Si desea mas información acerca de todas las opciones de configuración para OpenVPN puede usar el
comando.

./configure –help

Preparación de guiones (script) RSA.

Para la administración de la PKI (Infraestructura de Llave Publica - Public Key Infrastructure) usaremos los
guiones que vienen junto con OpenVPN (easy-rsa) la versión reciente trae consigo muchas mejoras, es esta
easy-rsa 2.0.
cp -Rp /usr/share/doc/openvpn-x.x-x/easy-rsa/ /etc/openvpn
cp /etc/openvpn/easy-rsa/openssl.cnf /etc/openvpn

A continuación será modificar la Autoridad Certificadora ( CA) para generar las llaves, para esto se edita el
fichero /etc/openvpn/easy-rsa/vars de la siguiente forma, por ejemplo:

export KEY_COUNTRY=MX
export KEY_PROVINCE=MiEstado/Provincia
export KEY_CITY=MiCiudad
export KEY_ORG="midominio.com"
export KEY_EMAIL="fulanito@modominio.com"

De lo anterior, cada elemento significa lo siguiente:

• KEY_COUNTRY: Especifica el país donde se encuentra el servidor vpn

• KEY_PROVINCE: Provincia o estado donde se encuentra este.

• KEY_CITY: Ciudad ubicado el servidor vpn.

• KEY_ORG: Dominio o departamento de la organización/Empresa.

• KEY_MAIL: Correo electrónico de la organización/empresa.

Importante: Se deben de llenar todos los parámetros ya que son indispensables para los certificados que
serán creados.

Seguidamente se ejecutarán los guiones (scripts) para general las llaves correspondientes de la siguiente
forma:

Inicializando Autoridad Certificadora el CA

Para generar el CA deberá realizar los siguientes pasos:

cd /etc/openvpn/
source easy-rsa/2.0/./vars
sh easy-rsa/2.0/clean-all
sh easy-rsa/2.0/build-ca
cd /etc/openvp

Generando Parametros Diffie Hellman.

Los parámetros Diffie Hellmandeben de ser generados en el Servidor OpenVPN, para realizar esto deberá
ejecutar el guión de la siguiente forma:

sh easy-rsa/2.0/build-dh

Generación de llaves.

Para generar el certificado y llave privada para el servidor será de la siguiente forma:


sh easy-rsa/2.0/build-key-server miservidor

En donde [miservidor] es una variable para identificar la llave privada del servidor.

Para generar el certificado y llave para los clientes se hará de la siguiente forma:

Recomendación: Cada cliente deberá tener su propia llave.

sh easy-rsa/2.0/build-key cliente
sh easy-rsa/2.0/build-key cliente1
sh easy-rsa/2.0/build-key cliente2

Una ves que se han generado las llaves correspondientes a los clientes y servidor, se podrá rescatar estas en
el directorio /etc/openvpn/easy-rsa/2.0/keys

CONFIGURACIÓN.
Configuración del Servidor Linux VPN

Para la creación del servidor OpenVPN se deberá crear un archivo de configuración udppara el este en el
directorio /etc/openvpn/ con el nombre servidorvpn-udp-1194.conf

port 1194
proto udp
dev tun
#---- Seccion de llaves -----
ca keys/ca.crt
cert keys/server.crt
key keys/server.key
dh keys/dh1024.pem
#----------------------------
server 10.11.0.0 255.255.255.0
ifconfig-pool-persist ipp.txt
keepalive 10 120
comp-lzo
persist-key
persist-tun
status openvpn-status-servidorvpn-udp-1194.log
verb 3

Descripción:
Port: Especifica el puerto que será utilizado para que los clientes vpn
puedan conectarse al servidor.
Proto: tipo de protocolo que se empleará en a conexión a través de VPN
dev: Tipo de interfaz de conexión virtual que se utilizará el servidor
openvpn.
ca: Especifica la ubicación exacta del fichero de Autoridad Certificadora
[.ca].
cert: Especifica la ubicación del fichero [.crt] creado para el servidor.
key: Especifica la ubicación de la llave [.key] creada para el servidor
openvpn.
dh: Ruta exacta del fichero [.pem] el cual contiene el formato de Diffie
Hellman (requirerido para --tls-serversolamente).
server: Se asigna el rango IP virtual que se utilizará en la red del túnel VPN.
Ifconfig-pool-persist: Fichero en donde quedarán registrado las direcciones
IP de los clientes que se encuentran conectados al servidor OpenVPN.
Keepalive 10 120 : Envía los paquetes que se manejan por la red una vez
cada 10 segundos; y asuma que el acoplamiento es abajo si ninguna
respuesta ocurre por 120 segundos.
comp-lzo: Especifica los datos que recorren el túnel vpn será compactados
durante la trasferencia de estos paquetes.
persist-key: Esta opción soluciona el problema por llaves que persisten a
través de los reajustes SIGUSR1, así que no necesitan ser releídos.
Persist-tun: Permite que no se cierre y re-abre los dispositivos TAP/TUN al
correr los guiones up/down
status: fichero donde se almacenará los eventos y datos sobre la conexión
del servidor [.log]
verb: Nivel de información (default=1). Cada nivel demuestra todo el Info
de los niveles anteriores. Se recomienda el nivel 3 si usted desea un buen
resumen de qué está sucediendo.

0 --No muestra una salida excepto errores fatales. 1 to 4 –Rango de uso


normal. 5 --Salida Ry Wcaracteres en la consola par los paquetes de lectura
y escritura, mayúsculas es usada por paquetes TCP/UDP minúsculas es
usada para paquetes TUN/TAP.

Para la configuración del Servidor VPN necesitamos insertar el módulo (tun) para controlar los
interfaces /dev/net/tunXque se necesiten en le sistema, así pues creamos el directorio /var/emptypara hacer
chroot y seguidamente reiniciamos el servicio OpenVPN:

Cargamos el módulo:

modprobe tun

Y habilitamos el IP forwarding:

echo 1 > /proc/sys/net/ipv4/ip_forward

Comprobamos que tenemos /dev/net/tun, si no existelo lo creamos con:


mknod /dev/net/tun c 10 200

A continuación se creará un directorio para hacer chroot [jaula], en el cual solamente seráusado para
configuración de clientes Linux (no-Windows), de la siguienteforma:

mkdir /var/empty

Ahora signamos el tipo de usuarios y grupo como [nobody]..

chown nobody.nogroup /var/empty

Para la ejecución del servidor OpenVPN puede utilizar el siguiente guión y guardarlo con el nombre de
[iniciovpnserver], tendrá el siguiente contenido:

#!/bin/bash
#
#-- Variables --
RUTACONFIG=”/etc/openvpn/”
NOMCONFIG=”servidorvpn-udp-1198.conf”
#
#-- Ejecuciónde la configuraciónpara el servicioOpenVPN
#
$RUTACONFIG./$NOMCONFIG
#
exit 0

Y damos los permiso de ejecución correspondientes:

chmod +x iniciovpnserver

Para ejecutar nuestro guión al inicio del sistema (arranque), puede colocar lo siguiente dentro del
fichero /etc/rc.local

#inicia la configuración OpenVPN


/donde/este/tu/fichero/iniciovpnserver

Configuración del cortafuego [Shorewall]


Acerca de shorewall

Shorewall(Shoreline Firewall) es una robusta y extensible herramienta de alto nivel para la configuración


de muros cortafuego. Shorewall solo necesita se le proporcionen algunos datos en algunos ficheros de
texto simple y éste creará las reglas de cortafuegos correspondientes a través de iptables. Shorewallpuede
permitir utilizar un sistema como muro cortafuegos dedicado, sistema de múltiples funciones como puerta de
enlace, dispositivo de encaminamiento y servidor.

URL: http://www.shorewall.net/

En esta ocasión se supone que el servidor VPN se encuentra en el mismo Firewall.


Procedimiento

Fichero de configuración /etc/shorewall/zones

En este fichero se definirá las zonas que se administrarán con Shorewall. La zona fwestá presente en el
fichero /etc/shorewall.conf como configuración predefinida. En el siguiente ejemplo se registrarán las zonas
de Internet (net), Red Local (loc) y el túnel virtual tunpara el vpn (rem):

#ZONE DISPLAY OPTIONS


fw firewall
net ipv4
loc ipv4
# OpenVPN ----
rem ipv4
#LAST LINE -- ADD YOUR ENTRIES BEFORE THIS ONE -- DO NOT
REMOVE

Fichero de configuración /etc/shorewall/interfaces

En éste se establecen cuales serán las interfaces para las tres diferentes zonas. Se establecen las interfaces
que corresponden a la Internet, virtual tuny Red Local.

A continuación se cuenta con una interfaz ppp0 para acceder hacia Internet, una interfaz eth0 para acceder
hacia la LANy una interfaz rem para acceder hacia la red virtual tun, y en todas se solicita se calcule
automáticamente la dirección de transmisión (Broadcast):

#ZONE INTERFACE BROADCAST OPTIONS


GATEWAY
net ppp0 detect
loc eth0 detect
# OpenVPN ----
rem tun0 detect
#LAST LINE -- ADD YOUR ENTRIES BEFORE THIS ONE -- DO NOT
REMOVE

Fichero de configuración /etc/shorewall/policy

En este fichero se establece como se accederá desde una zona hacia otra y hacia la zona de Internet.

#SOURCE DEST POLICY LOG LIMIT:BURST


loc net ACCEPT
fw net ACCEPT
# OpenVpn ----
rem fw ACCEPT
fw rem ACCEPT
net rem ACCEPT
rem net ACCEPT
# ------------
net all DROP info
all all REJECT info
#LAST LINE -- ADD YOUR ENTRIES BEFORE THIS ONE -- DO NOT
REMOVE
Lo anterior hace lo siguiente:

1. La zona de la red local puede acceder hacia la zona de Internet.


2. La zona virtual tun (rem) puede acceder hacia el cortafuegos, viceversa y
también hacia la zona de Internet.
3. El cortafuegos mismo puede acceder hacia la zona de Internet.
4. Se impiden conexiones desde Internet hacia el resto de las zonas.
5. Se establece una política de rechazar conexiones para todo lo que se haya
omitido.

Fichero de configuración /etc/shorewall/tunnels

En éste se establecen el tipo de conexión vpn. Puesto que es un servidor VPN se le indicará a al cortafuego
que en el servidor vpn se utilizará el puerto que nosotros le indiquemos así como también la IP donde se
encuentra este, en nuestro caso siguiendo el tipo de configuración será en la red 192.168.2.0/24:

#TYPE ZONE GATEWAY GATEWAY


# ZONE
openvpnserver:1194 rem 192.168.2.0/24
#LAST LINE -- ADD YOUR ENTRIES BEFORE THIS ONE -- DO NOT
REMOVE

Fichero de configuración /etc/shorewall/rules

Todos los puertos están cerrados de modo predefinido, así que se deberá habilitar el puerto configurado para
el túnel vpn en el cual fue especificado en la configuración del servidor OpenVpn. Esto debe ser especificado
con la acción [ACCEPT] en [rules].

ACCEPT

La acción ACCEPT se especificará que se permiten conexiones para el puerto OpenVpn desde o hacia una(s)
zona (s) un protocolo(s) y puerto(s) en particular. A continuación se permiten conexiones desde Internet hacia
el firewall y viceversa por el puerto UDP [1194]. Los nombres de los servicios se asignan de acuerdo a como
estén listados en el fichero /etc/services.

#ACTION SOURCE DEST PROTO DEST


# PORT
# OpenVPn ---
ACCEPT net fw udp 1194
ACCEPT fw net udp 1194
#LAST LINE -- ADD YOUR ENTRIES BEFORE THIS ONE -- DO NOT
REMOVE

Configuración de SELinux.

A fin de permitir que OpenVPN funcione en un sistema con SELinux activo, es necesario activar la
política setsebool openvpn_disable_trans de la siguiente manera.

setsebool openvpn_disable_trans 1
Configuración de Clientes VPN con OpenVPN.

Clientes Windows

Para la configuración de clientes OpenVPN utilizaremos el programa OpenVPN GUI para Windows.

OpenVPN GUI para Windowscorre normalmente en una ventana de consola, al ser conectado al servidor
remoto/local VPN le da un aviso en el área de notificación (el área de abajo a la derecha por el reloj en la
barra ), desde allí puede tener el control de iniciar/parar el Cliente OpenVPN, consultar los avisos (log), incluso
cambiar su contraseña.

Puede ser descargado en el sitio OpenVPN GUI for Windows [http://openvpn.se].

Preparativos y configuración

A continuación deberá copiar los siguientes ficheros:

• ca.crt.

• cliente1.crt.

• cliente1.csr.

• cliente1.key

Estos fueron creados en el directorio /etc/openvpn/easy-rsa/2.0/keys y deberán ser colocados en la máquina


cliente dentro de C:Program FilesOpenVPNconfig o a su vez en C:|Archivos de Programa|OpenVPN|config

Se creará un fichero de configuración cliente para el OpenVPN dentro del directorio C:|Archivos de


ProgramaOpenVPNconfigcon el nombre de cliente1-udp-1194.ovpn.

Tendrá la siguiente configuración:

client
dev tun
proto udp
remote dominio-o-ip.del.servidor.vpn 1194
float
resolv-retry infinite
nobind
persist-key
persist-tun
#------ SECCION DE LLAVES --------
ca ca.crt
cert cliente.crt
key cliente.key
ns-cert-type server
#---------------------------------
comp-lzo
verb 3
Descripción:
client: Especifica el tipo de configuración, en este caso tipo cliente
OpenVPN.
Port: Especifica el puerto que será utilizado para que los clientes VPN
puedan conectarse al servidor.
Proto: tipo de protocolo que se empleará en a conexión a través de VPN
dev: Tipo de interfaz de conexión virtual que se utilizará el servidor
openvpn.
remote: Host remoto o dirección IP en el cliente, el cual especifica al
servidor OpenVPN.

El cliente OpenVPN puede tratar de conectar al servidor con host:porten el


orden especificado de las opciones de la opción --remote.
float: Este le dice a OpenVPN aceptar los paquetes autenticados de
cualquier dirección, no solamente la dirección cuál fue especificado en la
opción --remote.
resolv-retry: Si la resolución del hostname falla para -- remote, la
resolución antes de fallar hace una re-comprobación de n segundos.
nobind: No agrega bind a la dirección local y al puerto.
ca: Especifica la ubicación exacta del fichero de Autoridad Certificadora
[.ca].
cert: Especifica la ubicación del fichero [.crt] creado para el servidor.
key: Especifica la ubicación de la llave [.key] creada para el servidor
OpenVPN.
remote: Especifica el dominio o IP del servidor así como el puerto que
escuchara las peticiones para servicio VPN.
comp-lzo: Especifica los datos que recorren el túnel VPN será compactados
durante la trasferencia de estos paquetes.
persist-key: Esta opción soluciona el problema por llaves que persisten a
través de los reajustes SIGUSR1, así que no necesitan ser releídos.
Persist-tun: Permite que no se cierre y re-abre los dispositivos TAP/TUN al
correr los guiones up/down
verb: Nivel de información (default=1). Cada nivel demuestra toda la
Información de los niveles anteriores. Se recomienda el nivel 3 si usted
desea un buen resumen de qué está sucediendo.

0 --No muestra una salida excepto errores fatales. 1 to 4 –Rango de uso


normal. 5 --Salida Ry Wcaracteres en la consola par los paquetes de lectura
y escritura, mayúsculas es usada por paquetes TCP/UDP minúsculas es
usada para paquetes TUN/TAP.
Una ves configurado el cliente VPN con Windows, deberá ir al área de notificación (el área de abajo a la
derecha por el reloj en la barra de Windows) y dar un click derecho al icono del cliente OpenVPN, allí
aparecerá un menú en el cual podrá elegir la opción conectar [connect].

Nota: Para una mejor comprensión se recomienda haber leído la [Parte 1] de este manual.

Continuación ...

Menú del cliente OpenVPN para efectuar la conexión al servidor VPN

Cuando intente conectarse al servidor VPN una vez que haya elegido la opción [connect]
aparecerá una ventana de notificación en el cual vera los procesos de verificación e intento de
conexión al servidor VPN, si todo sale bien, en el icono de notificación del cliente OpenVPN le
indicará la correcta conexión y le mostrará el número de IP virtual [tun] que se le fue asignado.

Mensaje de notificación al conectarse al servidor VPN

Pruebas de Conexión

Una ves efectuada la conexión al servidor, para asegurarse que estamos dentro del túnel VPN y
tenemos conexión al servidor, podemos realizar una búsqueda de dirección IP [Ping], así como
también verificar el número IP asignado por el servidor VPN al estar conectarnos en el túnel.
Para esto utilizaremos el comando [cmd] para hacer llamado al MS-Dos de Windows a través de la
aplicación [ejecutar].
Una ves estando en la consola en modo texto, utilice el comando [ipconfig] para ver que dirección
IP se le fue asignado.

Verificación de asignación de dirección IP virtual [tun]

Verificación de conexión de red a través del túnel VPN

Importante: Deberá desactivar el cortafuego que trae como predeterminado Windows o cual quier
otro que este utilizando.

Clientes Linux
Para la configuración de clientes Linux con OpenVPN utilizaremos el modo texto [terminal] y el
arranque a través de un bash.
Preparativos y configuración
A continuación deberá copiar los siguientes ficheros:
 ca.crt
 cliente1.crt
 cliente1.csr
 cliente1.key
Estos fueron creados en el directorio /etc/openvpn/easy-rsa/2.0/keys y deberán ser colocados en la
máquina cliente dentro del directorio OpenVPN.
Supongamos que las llaves la tenemos en el directorio /tmp/llaves, debemos copiar estas en el
siguiente directorio/etc/openvpn/keys, para esto hay que crearlo antes.

mkdir /etc/openvpn/keys
cp -R /tmp/llaves/* /etc/openvpn/keys/
cd /etc/openvpn/
A continuación se creará un fichero de configuración cliente para el OpenVPN dentro del
directorio /etc/openvpn/ con el nombre de cliente1-udp-1194.ovpn.
Tendrá la siguiente configuración:

client
dev tun
proto udp
remote dominio-o-ip.del.servidor.vpn 1194
float
resolv-retry infinite
nobind
persist-key
persist-tun
#------ SECCION DE LLAVES --------
ca ca.crt
cert cliente.crt
key cliente.key
ns-cert-type server
#---------------------------------
comp-lzo
verb 3
Descripción:
client : Especifica el tipo de configuración, en este caso tipo cliente OpenVPN.
Port : Especifica el puerto que será utilizado para que los clientes VPN puedan
conectarse al servidor.
Proto: tipo de protocolo que se empleará en a conexión a través de VPN
dev : Tipo de interfaz de conexión virtual que se utilizará el servidor openvpn.
remote : Host remoto o dirección IP en el cliente, el cual especifica al servidor
OpenVPN.
El cliente OpenVPN puede tratar de conectar al servidor con host:port en el orden
especificado de las opciones de la opción --remote.
float : Este le dice a OpenVPN aceptar los paquetes autenticados de cualquier
dirección, no solamente la dirección cuál fue especificado en la opción --remote.
resolv-retry : Si la resolución del hostname falla para -- remote, la resolución antes
de fallar hace una re-comprobación de n segundos.
nobind : No agrega bind a la dirección local y al puerto.
ca : Especifica la ubicación exacta del fichero de Autoridad Certificadora [.ca].
cert : Especifica la ubicación del fichero [.crt] creado para el servidor.
key : Especifica la ubicación de la llave [.key] creada para el servidor OpenVPN.
remote : Especifica el dominio o IP del servidor así como el puerto que escuchara las
peticiones para servicio VPN.
comp-lzo : Especifica los datos que recorren el túnel VPN será compactados durante la
trasferencia de estos paquetes.
persist-key : Esta opción soluciona el problema por llaves que persisten a través de los
reajustes SIGUSR1, así que no necesitan ser releídos.
Persist-tun : Permite que no se cierre y re-abre los dispositivos TAP/TUN al correr los
guiones up/down
verb : Nivel de información (default=1). Cada nivel demuestra toda la Información de
los niveles anteriores. Se recomienda el nivel 3 si usted desea un buen resumen de
qué está sucediendo.
0 -- No muestra una salida excepto errores fatales. 
1 to 4 – Rango de uso normal. 
5 -- Salida R y W caracteres en la consola par los paquetes de lectura y escritura,
mayúsculas es usada por paquetes TCP/UDP minúsculas es usada para paquetes
TUN/TAP

Ahora necesitamos insertar el módulo [tun] para controlar los interfaces /dev/net/tunX que se


necesiten en le sistema para el servicio OpenVPN:
Cargamos el módulo:
modprobe tun
y habilitamos el IP forwarding:
echo 1 > /proc/sys/net/ipv4/ip_forward
Comprobamos que tenemos /dev/net/tun, si no existe lo creamos con:
mknod /dev/net/tun c 10 200
Para la ejecución del cliente OpenVPN puede utilizar el siguiente guión y guardarlo con el nombre
de [iniciovpncliente], tendrá el siguiente contenido:

#!/bin/bash
#
#-- Variables --
RUTACONFIG=”/etc/openvpn/”
NOMCONFIG=”cliente1-udp-1194.conf”
#
#-- Ejecución de la configuración para el servicio OpenVPN
#
/usr/bin/openvpn $RUTACONFIG./$NOMCONFIG
#
exit 0
Y damos los permiso de ejecución correspondientes:
chmod +x iniciovpncliente
Si desea ejecutar el servicio VPN al inicio del sistema (arranque), puede colocar lo siguiente dentro
del fichero /etc/rc.local
#inicia la configuración OpenVPN
/donde/este/tu/fichero/iniciovpncliente
Pruebas de Conexión

Una ves efectuada la conexión al servidor VPN, para asegurarse que estamos dentro del túnel
VPN y tenemos conexión al servidor, podemos realizar una búsqueda de dirección IP [Ping], así
como también verificar el número IP asignado por el servidor VPN al estar conectarnos en el túnel.
Para esto utilizaremos el necesitamos entrar a la terminal de comando, una ves estando en la
consola en modo texto, utilice el comando [ifconfig] para ver que dirección IP se le fue asignado.

Verificación de asignación de dirección IP [tun] con  ifconfig


Prueba de conexión con el comando [ping] hacia el servidor VPN

Comprobación de conexión hacia el servidor VPN en interfaz gráfica


Si SELinux está activo en el sistema y se va a utilizar el componente de OpenVPN
para NetworkManager(NetworkManager-openvpn), y se van a utilizar certificados almacenados
en el directorio del usuario, se debe activar la política openvpn_enable_homedirs.
setsebool -P openvpn_enable_homedirs 1

Última Edición 05/03/2009, 17:47|28,790 Accesos 


Hace unos días explicaba como configurar el Cliente de Terminal Server que viene instalado por defecto en
Ubuntu.

El programa hacia lo que se le pedía pero no me acababa de gustar y navegando he encontrado este
otroRemmina.

Remmina es un cliente escritorio remoto escrito en GTK, que pretender ser útil para los administradores de
sistemas y los viajeros, que necesiten trabajar mucho con otros equipos remotos. Remmina soporta
protocolos de red múltiples en un interfaz integrado. Actualmente soporta RDP, VNC, XDMCP y
SSH. Remmina consta de tres paquetes separados:

 remmina: la aplicación principal de GTK+


 remmina-gnome: el applet de escritorio GNOME
 remmina-xfce: el panel de Xfce.

La instalación es sencilla y se hace mediante repositorios:

$ sudo add-apt-repository ppa:llyzs/ppa


$ sudo apt-get update
$ sudo aptitude install remmina remmina-gnome
Una vez terminada la instalación lo encontraremos en Aplicaciones --> Internet --> Cliente de escritorio
remoto Remmina

La configuración es muy sencilla, en la pantalla principal se muestra una lista con las distintas conexiones
guardadas, estas conexiones las puedes clasificar mediante grupos.

Para agregar una nueva sólo hay que pulsar el boton de crear un nuevo escritorio remoto y configurar la
pantalla que se muestra.
Enviar por correo
electrónico Comparti
r con
Twitter Compartir Etiquetas: Aplicaciones, Terminal Server, Ubuntu
con
Facebook Compartir
con Google Buzz

Configurar el Cliente de Terminal Server


martes 23 de marzo de 2010
comentarios (2)

En un post anterior explique como crear una vpn para conectarme a la oficina (Esta un dominio de Windows
Server), y deje pendiente la parte de configuración del cliente de Terminal Server. Pues bien, hoy lo
comentaré.

Lo primero será abrir el cliente que ya viene instalado en Ubuntu 9.10, para ello accederemos a Aplicaciones
--> Internet --> Cliente de Terminal Server.
Se mostrará una pantalla bastante sencilla de configurar, en "Equipo" pondremos la dirección IP de la
máquina a la que queremos acceder, el protocolo será RDP (el que aparace por defecto), luego
informaremos el usuario y la contraseña y por último en mi caso el dominio. Con eso ya sería suficiente para
conectarnos. Pero hay algunos parámetros del programa a destacar.

En la pestaña "Pantalla", podemos escoger el tamaño de la ventana y los colores.


En "Recursos locales", esta la opción de reproducción de sonido, esta opción la suelo dejar en "No
reproducir". Y también esta una de las opciones más interensantes a mi parecer, la de añadir mi unidad al
equipo remoto, es muy útil para transferir archivos de forma sencilla si no se dispone de un ftp.
La pestaña "Programas" sólo sirve si quieres que el usuario que se conecte acceda a un programa
predeterminado automáticamente.
Y en la última "Rendimiento", puedes activar alguna marca para ver si mejora la velocidad de conexión.

Enviar por correo


electrónico Comparti
r con
Twitter Compartir Etiquetas: Terminal Server, Ubuntu
con
Facebook Compartir
con Google Buzz

Configurar VPN en Ubuntu 9.10


domingo 21 de marzo de 2010
comentarios (1)

A veces, dejo el PC del trabajo en marcha con algún proceso y luego desde casa me conecto para verificar
que ha terminado y apagar la máquina. Para conectarme a la red del trabajo desde mi casa primero debo
crear una VPN.  
Una VPN es una red privada virtual que sirve para mantener una comunicación entre dos puntos de forma
privada y de forma cifrada. Es decir que los datos van a ser privados y no van a poder ser vistos por terceros.

Si vas a Sistema --> Preferencias --> Conexiones de red en la pestaña de VPN todo esta deshabilitado, ya que
por defecto en Ubuntu no se instalan los paquetes para la configuración de VPN's. La solución es bien
sencilla como siempre desde de la consola instalaremos el o los paquetes que necesitemos en función del
tipo de cliente.

 cliente vpnc:

sudo apt-get install network-manager-vpnc

 cliente openvnc:

sudo apt-get install network-manager-openvp

 cliente pptp:

sudo apt-get install network-manager-pptp


Ahora ya podrás añadir una VPN. Deberás ir a Sistema --> Preferencias --> Conexiones de red y en la pestaña
de VPN verás que ya esta habilitada la opción de añadir.

Una vez pulses el botón añadir aparecerá una pantalla donde deberás escoger el tipo de conexión VPN, en
mi caso es un túnel punto a punto (pptp).
Ahora sólo queda configurar:

Os indicaré como lo he configurado para conectarme a la red de mi trabajo que es Windows Server. Lo
primero será indicar un nombre a la conexión; la pasarela que será la dirección IP del servidor VPN; el
usuario y la contraseña dentro del dominio de Windows Server. En Dominio de red no pondremos nada.

En avanzado lo configuré con se muestra en la imagen. De la ventana sólo marque los métodos de
autentificación que se muestran.
Y para terminar en la pestaña de "Ajustes de IPV4", cambié el método e informe la IP del servidor de DNS.

Con todo esto por fin termine de configurar la VPN. Ya sólo me queda configurar el cliente de Terminal
Server. Pero eso lo contaré en otro post.

You might also like