marzo 29, 2024

Aplicación en Android para activar y desactivar las conexiones VPN administrados por un gateway VPN bajo Raspberry Pi.

0
Voiced by Amazon Polly
Comparte en redes sociales

PiVPN es una aplicación para Android que se utiliza para activar y desactivar las conexiones VPN administrados por un gateway VPN bajo la plataforma Raspberry Pi. La Raspberry Pi tiene dos adaptadores de red: uno que está conectado a Internet y con el otro se conecta uno o más dispositivos.
 

Un ejemplo practico de uso es una Raspberry Pi que tiene una tarjeta WiFi para conectarse a una red existente con una conexión a Internet. Un televisor está conectado a la interfaz de cable en la Raspberry Pi, mediante la aplicación para Android es posible conectar o desconectar el acceso de la televisión.

Se necesita:

  • Una Raspberry Pi.
  • Un segundo adaptador de red, que puede ser cable o inalámbrica.


Paso para preparar la Raspberry Pi:

Se puede utilizar cualquier imagen como base para el gateway VPN bajo Raspberry Pi, pero la mas adecuada es Raspbian, en la que mas abajo veremos todos los pasos para obtener un entorno de trabajo y tener una conexión a Internet en un adaptador de red. Estas instrucciones no hacen las reglas de firewall, configuración relacionados con la seguridad, sólo el mínimo para hacer que funcione. Según estas instrucciones se supone “wlan0” es la interfaz externa que conecta a Internet, “eth0” es la interfaz para conectar los dispositivos y “ppp0” será la interfaz para la conexión VPN. Hay que modificar todos los archivos y los comandos de acuerdo a su configuración propia.

El primer paso es instalar los paquetes que vamos a necesitar y después realizar los pasos de configuración necesarios. Los paquetes que vamos a utilizar son un servidor DHCP y un cliente PPTP. Para instalar los paquetes, se ejecuta el siguiente comando, que reportara un error, a partir del servidor DHCP, ya que no se ha configurado todavía.

sudo apt-get install isc-dhcp-server pptp-linux 

Para habilitar el reenvío de paquetes IP, se edita el archivo “/etc/sysctl.conf” y se edita la línea quitando el carácter «#» que inhabilita la linea, quedando de esta forma.

net.ipv4.ip_forward=1

En el paso anterior se asegura de que el reenvío de paquetes se habilita cuando se inicie la Raspberry Pi. Para cargar la configuración en este momento, se ejecuta el siguiente comando:

sysctl –system 

En este momento, la Raspberry Pi enviará paquetes IP de una interfaz a otra, si lo solicita el remitente de un paquete. Sin embargo, otros componentes de la red no saben de la existencia de la subred detrás de la Raspberry Pi por lo que no serán capaces de encaminar los paquetes hacia atrás. La forma más fácil de solucionar esto, es permitir la traducción de direcciones de red (NAT) en la Raspberry Pi. Creando un archivo “/etc/iptables.up.rules” con las siguientes instrucciones:

*nat
-A POSTROUTING -o wlan0 -j MASQUERADE
-A POSTROUTING -o ppp0 -j MASQUERADE
COMMIT 

El archivo anterior añade dos reglas a la POSTROUTING del NAT a las tablas de iptables. La primera regla asegura que el NAT se aplica a todas las conexiones que tengan como ruta la interfaz inalámbrica. La segunda regla hace lo mismo para la conexión VPN, que se va ser creada.

Para activar estas reglas, hay que cargarlos en el arranque del kernel. Así que, hay que escribir un script que haga eso. Creando un nuevo archivo “/etc/network/if-pre-up.d/iptables” y poniendo las siguientes líneas en él:

#!/bin/sh
/sbin/iptables-restore < /etc/iptables.up.rules

Se le da permisos de ejecución al script:

sudo chmod +x /etc/network/if-pre-up.d/iptables 

Este script se ejecutará cuando comience la pila de red. Para eso hay que reiniciar la pila de red después de configurar la dirección IP de la interfaz de red interna. Para asignar a la interfaz de red interna  una dirección IP, es necesario seleccionar un rango para este segmento. Es aconsejable utilizar una dirección en un rango privado y  asegurarse de que no se superponga con el rango utilizado en la interfaz externa.

Como ejemplo hemos elegido 192.168.4.1 como la dirección IP para la interfaz interna. Hay que editar el archivo “/etc/network/interfaces”, buscamos la linea “iface eth0” (recordemos que asumimos “eth0” es la interfaz interna). Se cambia este archivo y las siguientes líneas por:

auto eth0
iface eth0 inet static
 address 192.168.4.1
 netmask 255.255.255.0

Para leer la configuración de la interfaz de red, hay que reiniciar la pila de red usando:

sudo /etc/init.d/networking restart 

En este punto, un dispositivo en la red interna que tenga una dirección IP debe ser capaz de comunicarse hacia Internet. Para poder asignar direcciones IP utilizando el servidor DHCP, tenemos que  editar el archivo “/etc/default/isc-dhcpserver” y buscar la línea que comienza con “INTERFACES” y añadir su interfaz interna a la misma:

INTERFACES=»eth0″ 

En este punto, el servidor DHCP se limitará a responder a las peticiones de la interfaz dada, pero tenemos que especificar de qué manera se debe responder. Por lo tanto, modificar el archivo “/etc/dhcp/dhcpd.conf”. Sólo hay que dejarlo todo como está y añadir la siguiente configuración a la parte inferior del archivo:

option domain-name-servers 8.8.8.8;
subnet 192.168.4.0 netmask 255.255.255.0 {
  range 192.168.4.100 192.168.4.200;
  option routers 192.168.4.1;

Asi configuramos el servidor DHCP para distribuir direcciones IP en el rango 192.168.4.100 – 192.168.4.200 y enviar a los clientes la dirección IP del servidor DNS (8.8.8.8 es el servidor DNS de Google) y la dirección IP del router. La dirección IP del router es la dirección IP de la interfaz interna, ya que para los dispositivos conectados es la que funciona de router.

En este punto, es posible conectar un dispositivo en la interfaz interna y ser capaz de acceder a Internet. El siguiente paso es agregar la configuración de una conexión PPTP. Para esto hay que editar el archivo “/etc/ppp/chap-secrets”

user1 provider2 password3 

Además, tenemos que crear un archivo de configuración para el punto final. El archivo es la configuración del proveedor, que convenientemente llamamos “provider2”. Por lo tanto hay que crear un archivo “/etc/ppp/peers/provider2” y poner las siguientes líneas en ella (en sustitución de “1.2.3.4” la dirección IP real o nombre de host del servidor VPN, en sustitución de “user1” con su nombre de usuario y las dos apariciones de “provider2” con el nombre de su proveedor):

pty «pptp 1.2.3.4 –nolaunchpppd»
name user1
remotename provider2
require-mppe-128
file /etc/ppp/options.pptp
ipparam provider2

Más información y descarga de PiVPN:
https://github.com/phedny/PiVPN

Deja un comentario