lunes, 18 de marzo de 2013

VPN PPT en Linux

Muchas veces ha nacido la duda de que VPN es mejor y por que, pues en este link encontraremos un artículo interesante con esta respuesta.

http://es.giganews.com/vyprvpn/compare-vpn-protocols.html

En particular me gusta mucho utilizar OpenVPN, es la más segura que existe pero también la mas "larga" y complicada de configurar así como aún no aceptada de forma nativa por Windows, IOs, Android, la mayoría de teléfonos VoIP y Linux, es decir se deben instalar software de terceros para lograr esta conexión aunque vale la pena.

Por lo que aveces necesito otro tipo de VPN es para conectar teléfonos SIP ya que en México Telmex bloquea el protocolo RTP (En todo América Latina) y no se pueden realizar llamadas VoIP "planas" es decir necesitamos encriptar los datos para "engañar" a nuestro carrier.

Pues en esta ocasión muestro como levantar un servidor PPTD en nuestro Linux, en realidad es muy fácil.

1. Instalando lo necesario.

# sudo apt-get install pptpd

2. Configurando las IPs de nuestro servidor.

# sudo nano /etc/pptpd.conf

Agregamos o modificamos las siguientes líneas:


localip 192.168.200.1
remoteip 192.168.200.2-253

Donde localip es la IP del servidor que le queremos otorgar en nuestra VPN
y remoteip son las IPs que se le otorgarán a nuestros clientes.

3. Configurando las opciones.

# sudo nano /etc/ppp/pptpd-options

Al final agregamos estas líneas.

nobsdcomp
noipx
mtu 1490
mru 1490

4. Creamos usuarios.

# sudo nano /etc/ppp/chap-secrets

En este archivo se agregarán los usuarios y contraseñas para acceder al servidor.

usuario1 pptpd password1 *
usuario2 pptpd password2 *

5. Configurando el Firewall.

# sudo iptables -t nat -A POSTROUTING -s 192.168.200.0/24 -o eth0 -j MASQUERADE
# sudo iptables -A INPUT -p tcp --dport 1723 -j ACCEPT

IPTABLES es todo un tema posteriormente agregaré una entrada al respecto.

eth0 es la interfaz de la red local donde está el servidor, puede ser eth1, eth2 según tu caso particular.

6. Ahora se pueden conectar desde Windows, Linux, MacOS, IOs, Android, etc de forma muy sencilla. Es importante "quitar" la opción de "pasar todo el tráfico" por la VPN en nuestra configuración del cliente ya que de no hacerlo TODO el tráfico se intentará ir por la VPN y esto nos alentaría el Internet o no tendríamos Internet solo conexión a la VPN.

En Windows.

Propiedades de la conexión -> Funciones de Red -> Protocolo de Internet Version 4 -> Propiedades -> Opciones avanzadas.

Desmarcar la opción de "Usar la puerta de enlace predeterminada en la red remota"

7. A disfrutar de la VPN.




Iniciar cualquier aplicación como servicio en Linux

A continuación describo como poner nuestro OpenERP (en realidad cualquier aplicación) para iniciar con Linux.

Existen varias formas de hacerlo, en particular lo prefiero como servicio "real" con comandos de start, stop y restart pero esta vez lo realizaremos desde el archivo rc.local lo cual es más fácil y más estándar.

1. Primero debemos identificar las rutas completas de nuestros archivos a ejecutar, para el caso de OpenERP, para los que aún no han instalado su OpenERP revisar esta entrada.

Así lo ejecutamos dentro de la carpeta donde esté nuestro OpenERP /home/ubuntu/openerp/server/:

sudo -u ubuntu python openerp-server -c erp.conf

Lo debemos ahora ejecutar con sus rutas completas:

sudo -u ubuntu python /home/ubuntu/openerp/server/openerp-server -c /home/ubuntu/openerp/server/erp.conf

Probaremos el comando anterior si todo funciona perfectamente muy bien !

2. Le indicaremos a Linux que inicie nuestro programa al iniciar.

Editamos el archivo /etc/rc.local:

# sudo nano /etc/rc.local

Agregamos estas líneas:


sudo -u ubuntu python /home/ubuntu/openerp/server/openerp-server -c /home/ubuntu/openerp/server/erp.conf
exit 0

Le damos permiso de ejecución a ese archivo:

# sudo chmod +x /etc/rc.local

Listo !

Ahora probemos reiniciando nuestro Linux.

Importante: Todos los programas que se agreguen en este archivo serán ejecutados como ROOT lo cual es riesgoso por eso le indicamos con "sudo -u ubuntu" que lo ejecute con un usuario con menos privilegios.

Saludos.