

¡Hola a todos!
En este breve artículo, explicaré cómo configurar su propio servidor VPN (red privada virtual) en una Raspberry PI con OpenVPN. Después de configurar el servidor, configuraremos un servidor de ofuscación para disfrazar nuestro tráfico indicando que estamos usando una VPN. Esto nos ayudará a evadir alguna forma de censura.
¿Por qué usar una VPN?
Primero, hablemos de por qué es posible que desee utilizar un servidor VPN:
- Evite los ataques del hombre en el medio. Si tiene un usuario malintencionado en su red local, incluso su compañero de cuarto, esa persona puede monitorear su tráfico no cifrado y manipularlo.
- Ocultar su actividad en Internet a su ISP (Proveedor de servicios de Internet) o Universidad, en mi caso.
- Desbloquear servicios. My University bloquea todos los paquetes UDP (User Datagram Protocol). Esto significa que no puedo usar ninguna aplicación que se comunique a través de UDP. ¡No puedo usar mi cliente de correo electrónico, jugar juegos o incluso usar Git!
Decidí configurar una VPN en el Internet de mi hogar usando una Raspberry Pi. De esta manera puedo conectarme a mi red doméstica mientras estoy en la Universidad. Si necesita un servidor VPN en otro país, puede comprar un servidor privado virtual de 5 $ / mes de DigitalOcean. Puede usar mi enlace de referencia para obtener un descuento de $ 10, es decir, dos meses de VPN gratuita. Pero no tienes que usarlo si no quieres.
Instalación de OpenVPN
Este paso es realmente fácil, porque usaremos un script de shell para hacerlo por usted. Así que solo tienes que “presionar” siguiente y terminar.
La instalación llevará mucho tiempo, según el tamaño de clave que elija. En mi Raspberry Pi 3 Model B, tardó aproximadamente 3 horas.
Vaya a este repositorio y luego siga las instrucciones
Instalación de Angristan / OpenVPN
Instalación de OpenVPN: configure su propio servidor OpenVPN en Debian, Ubuntu, Fedora CentOS y Arch Linux github.com
Si no conoce la dirección IP de su servidor, simplemente escriba 0.0.0.0
. Elegí 443
el puerto y TCP (Protocolo de control de transmisión) para el protocolo.
Nota : Esto es muy importante porque mi universidad solo permite puertos TCP / 80 y TCP / 443 , el resto está prácticamente bloqueado. Además, Obfsproxy solo funciona con TCP, ¡así que asegúrese de elegir TCP !
Una vez finalizado el script, obtendrá un archivo .ovpn . Se puede importar a su cliente VPN favorito, y todo debería funcionar de inmediato.
Probando la conexión
Importe el archivo .ovpn en su cliente VPN y cambie la ip 0.0.0.0
a la ip local de su Raspberry PI. Dependiendo de la configuración de su red, puede ser de la forma 192.168.*.*
.
Nota: Esto solo funcionará si está conectado al mismo WiFi que el Pi.

He configurado mi enrutador para que el PI siempre obtenga una dirección IP reservada. Es posible que deba verificar la configuración de su enrutador si desea hacer algo similar.
Si la conexión es exitosa, felicitaciones, ¡ahora tiene un servidor VPN! Pero no puedes acceder a él desde el exterior… todavía.
Si solo desea un servidor OpenVPN sin el proxy de ofuscación, puede pasar al reenvío de puertos .
Instalación del proxy de ofuscación
Obfs4 es un proxy de codificación. Disfraza su tráfico de Internet para que parezca ruido. Alguien que fisgonee en su tráfico no sabrá realmente lo que está haciendo, y lo protegerá de los ataques de sondeo activos que utiliza el Gran Cortafuegos de China.
Nota: este método no funcionará si su adversario solo permite el tráfico en la lista blanca :(
Instalemos el servidor proxy ahora.
0. Instale el paquete requerido:
apt-get update && apt-get install obfs4proxy
- Cree un directorio que contendrá la configuración.
sudo mkdir -p /var/lib/tor/pt_state/obfs4
2. Cree el archivo de configuración.
sudo nano /var/lib/tor/pt_state/obfs4/obfs4.config
En el archivo de configuración, pegará lo siguiente:
TOR_PT_MANAGED_TRANSPORT_VER=1TOR_PT_STATE_LOCATION=/var/lib/tor/pt_state/obfs4TOR_PT_SERVER_TRANSPORTS=obfs4TOR_PT_SERVER_BINDADDR=obfs4-0.0.0.0:444TOR_PT_ORPORT=127.0.0.1:443
TOR_PT_SERVER_BINDADDR es la dirección en la que el proxy escuchará nuevas conexiones. En mi caso es, 0.0.0.0:444
¿por qué 444 y no 443? Bueno, porque no quiero cambiar la configuración del servidor OpenVPN que está escuchando actualmente en 443. Además, asignaré esta dirección más tarde a 443 usando Port Forwarding.
TOR_PT_ORPORT debe apuntar al servidor OpenVPN. En mi caso, mi servidor se ejecuta en127.0.0.1:443
3. Cree un archivo de servicio SystemD.
sudo nano /etc/systemd/system/obfs4proxy.service
Luego pegue el siguiente contenido en él:
[Unit]Description=Obfsproxy Server[Service]EnvironmentFile=/var/lib/tor/pt_state/obfs4/obfs4.configExecStart=/usr/bin/obfs4proxy -enableLogging true -logLevelStr INFO[Install]WantedBy=multi-user.target
4. Inicie el proxy de ofuscación.
Ahora, asegúrese de que OpenVPN se esté ejecutando y ejecute los siguientes comandos para iniciar el proxy y habilitarlo para que se inicie en el arranque.
sudo systemctl start obfs4proxysudo systemctl enable obfs4proxy
5. Guarde la CLAVE del certificado
Una vez iniciado el servicio, ejecute el siguiente comando y guarde la CLAVE del certificado.
cat /var/lib/tor/pt_state/obfs4/obfs4_bridgeline.txt
The key is of the form Bridge obfs4 :
ert=KEY iat-mode=0 . You will need it when you’re connecting to the VPN.
6. Testing the connections.
Open up your VPN client and change the ip from 443 to 444 in order to connect to the proxy instead of the OpenVPN server.
After that, find the Pluggable Transport option in your OpenVPN client and see if it supports obfs4.

If everything works, then you’re all set! Congratulations! Only a few more things to tweak before using this VPN from the outside world.
Port Forwarding
In order to access the OpenVPN server from the outside world we need to unblock the ports, because they are most likely blocked. As you remember, I have reserved my PI’s IP address on my router to always be 192.168.1.125
so it doesn’t change if the PI disconnects or if the router reboots.
This way I have defined the following rules in my Port Forwarding table:

The outside port 443 will point to the obfuscation’s server port 444. If you don’t have an obfuscation server, then leave 443->443.
The port 25 will point to the PI’s SSH port 22. This is only for my own convenience.
In case I want to access the OpenVPN server directly without the obfuscation proxy, I have created a rule 444->443
The service port is the OUTSIDE port that will be used with your PUBLIC IP address. To find your public IP, use a service like whatsmyip.com.
The internal port is the INSIDE port. It can be used only when you are connected to the network.
Note: The first rule is saying redirect all the connections from PUBLIC_IP:443 to 192.168.1.125:444
Testing
- Find your public IP and replace your old IP with the public IP in the .ovpn file or in the VPN client.
- Connect to the VPN.
That’s it.
Dynamic DNS
In most cases, your IP will change because it’s a dynamic IP. A way to overcome this is to create a small program on the PI that saves your IP and sends you an email every day or so. You may also store the IP in an online database such as Firebase.
My router has Dynamic DNS setting. This way I can use a service provider like NoIP and get a domain like example.no-ip.com
that will always point to my public IP address.

Other Resources:
- A Childs Garden Of Pluggable Transports
- Viscosity-Obsfurcation/
- //www.pluggabletransports.info/transports/
If you have any questions hit me up on Twitter.