En este artículo os vamos a enseñar cómo crear una VPN de forma fácil, para ello crearemos un servidor con la imagen de Docker y usaremos Outline creado por Jigsaw (Google). Outline no es bien bien una VPN, pero hace su función mediante proxy socks5. La ventaja de usar una VPN es que protegemos nuestra conexión y no puede ser vista por otros usuarios que estén conectados a la misma red que nosotros. También usaremos las buenas prácticas para usar Docker desde países bloqueados por el mismo.
Outline es una herramienta de código abierto que le permite configurar su propio servidor VPN de forma rápida y sencilla. Esto significa que ya no tiene que confiar en un servicio VPN de terceros y tiene un control total sobre los datos que van y vienen de su servidor VPN. Además, cuando instala Outline en su propio servidor, nadie más puede ver la configuración de su cliente. Solo usted tiene acceso al funcionamiento interno de cómo conectar un cliente de Outline a su servidor de Outline.
Mientras que en el pasado los beneficios que vienen con el control total sobre su servidor VPN requerían redes de computadoras avanzadas y habilidades de administración de servidores, Outline le promete una experiencia de instalación más conveniente. Outline se destaca entre las VPN de código abierto como una de las más fáciles de instalar y administrar para un uso continuo.
Para esta instalación usaremos los servicios de clouding.io la instalacion empezamos primeramente creando un servidor con Linux, en este caso usaremos ubuntu 20.04
Outline usa 2 puertos uno para la administración y otro para los accesos mediante llaves, entonces configuraremos el el cortafuego, recomendamos abrir todos los puertos en el firewall y una vez instalado lo limitan a los puertos que usan para el mismo.
Una vez creados las reglas del firewall, vas al VPS y desvincular el que tienes puesto y vinculas el mismo que acabas de crear.
Una vez iniciado el Servidor accedemos al mismo y preparamos los requerimientos mínimos que en este caso será docker
sudo -- sh -c 'apt-get update; apt-get upgrade -y; apt-get dist-upgrade -y; apt-get autoremove -y; apt-get autoclean -y'
Instalamos Docker
apt-get install docker.io
Una vez instalado docker procedemos a configurar algunos mirror por si estas instalando desde un lugar donde docker no esta permitido libremente
nano /etc/docker/daemon.json
{ "registry-mirrors": [ "https://rw21enj1.mirror.aliyuncs.com", "https://dockerhub.azk8s.cn", "https://reg-mirror.qiniu.com", "https://hub-mirror.c.163.com", "https://docker.mirrors.ustc.edu.cn", "https://1nj0zren.mirror.aliyuncs.com", "https://quay.io", "https://docker.mirrors.ustc.edu.cn", "http://f1361db2.m.daocloud.io", "https://registry.docker-cn.com" ] }
Si desea agregar un registro de mirror inseguro aquí les dejo el enlace de cómo hacerlo. Reiniciamos para que se vean los cambios.
systemctl daemon-reload systemctl restart docker
Este paso a continuación es para aquellos que están detrás de un proxy padre y es opcional.
Crear la carpeta docker.service.d mkdir -p /etc/systemd/system/docker.service.d Creamos el fichero http-proxy.conf nano /etc/systemd/system/docker.service.d/http-proxy.conf Dentro agregamos: [Service] Environment="HTTP_PROXY=http://user:password@proxyip:port/" Environment="HTTPS_PROXY=http://user:password@proxyip:port/" Environment="NO_PROXY= hostname.example.com,localhost,127.0.0.1" Recargamos la config y reiniciamos el servicio: systemctl daemon-reload systemctl restart docker
Ahora comprobaremos que todo está bien.
Usaremos el comando: docker info Nos dará una salida similar a la siguiente: Client: Context: default Debug Mode: false Server: Containers: 0 Running: 0 Paused: 0 Stopped: 0 Images: 0 Server Version: 20.10.2 Storage Driver: overlay2 Backing Filesystem: extfs Supports d_type: true Native Overlay Diff: true Logging Driver: json-file Cgroup Driver: cgroupfs Cgroup Version: 1 Plugins: Volume: local Network: bridge host ipvlan macvlan null overlay Log: awslogs fluentd gcplogs gelf journald json-file local logentries splunk syslog Swarm: inactive Runtimes: io.containerd.runtime.v1.linux runc io.containerd.runc.v2 Default Runtime: runc Init Binary: docker-init containerd version: runc version: init version: Security Options: apparmor seccomp Profile: default Kernel Version: 5.4.0-66-generic Operating System: Ubuntu 20.04.2 LTS OSType: linux Architecture: x86_64 CPUs: 1 Total Memory: 981.2MiB Name: outline.syscu.net ID: XAT3:I4L7:QJLM:5XKW:WAQ5:UGGD:LMHE:EMMF:GNC7:QSQI:ZWBL:UWK4 Docker Root Dir: /var/lib/docker Debug Mode: false Registry: https://index.docker.io/v1/ Labels: Experimental: false Insecure Registries: 127.0.0.0/8 Registry Mirrors: https://rw21enj1.mirror.aliyuncs.com/ https://dockerhub.azk8s.cn/ https://reg-mirror.qiniu.com/ https://hub-mirror.c.163.com/ https://docker.mirrors.ustc.edu.cn/ https://1nj0zren.mirror.aliyuncs.com/ https://quay.io/ http://f1361db2.m.daocloud.io/ https://registry.docker-cn.com/ Live Restore Enabled: false WARNING: No swap limit support WARNING: No blkio weight support WARNING: No blkio weight_device support Aquí solo deben fijarse si les reconoce el proxy(si se lo pusieron) y los mirrors alternos(Registry Mirrors).
Configuramos docker para que inicie automáticamente
sudo systemctl enable docker
Comprobamos que docker este iniciado sin problema
sudo sudo systemctl status docker
Si todo esta corriendo bien procedemos a instalar entonces el Outline con el siguiente comando:
Nota: Si desean personalizar los puertos y el host mirar al final del artículo.
sudo wget -qO- https://raw.githubusercontent.com/Jigsaw-Code/outline-server/master/src/server_manager/install_scripts/install_server.sh | bash
De ahí tenemos que guardar los datos que nos dan, ya que son las llaves de acceso para el Outline Manager, es decir debe guardar la información siguiente:
CONGRATULATIONS! Your Outline server is up and running. To manage your Outline server, please copy the following line (including curly brackets) into Step 2 of the Outline Manager interface: {"apiUrl":"https://185.254.204.115:63058/lUcKsF3obk36qPLVUTB3bQ","certSha256":"85C84BA2BF7F44AC52216480AAAEF00B31F89743261CA704B1580A44029B0AC5"} If you have connection problems, it may be that your router or cloud provider blocks inbound connections, even though your machine seems to allow them. Make sure to open the following ports on your firewall, router or cloud provider: - Management port 63058, for TCP - Access key port 6972, for TCP and UDP
Como notaron en la imagen anterior ya tenemos las llaves de acceso para el manager de outline y los puertos que usará el mismo para cada cosa tanto manager como para los clientes.
Antes de seguir podemos cerrar ya en nuestro cortafuegos limitando a esos 2 puertos y desactivando las reglas que creamos permitiendo todos los puertos
Ya una vez configurado el firewall en el cortafuego procedemos a descargar el Outline Manager:
Outline Manager para Windows
Una vez instalado procedemos a configurar la llave de acceso a la administración.
En la página de configuración, seleccione «Configurar esquema en cualquier lugar» y pegue la clave de administración del servidor, como mostramos a continuación:
Una vez que hayas configurado tu servidor, genera claves de acceso únicas directamente desde la aplicación Administrador para ordenadores. Esta aplicación te permite enviar invitaciones para conectarse a tu servidor a través de tu plataforma de comunicación preferida. Las claves de acceso sirven para conectar dispositivos a Administrador de Outline y protegerlos mediante tu servidor. Cada clave de acceso es única, y todas se pueden gestionar o eliminar directamente desde el servidor. Puedes fijar límites de datos para controlar cuánto ancho de banda puede usar cada clave.
Para conectar la pc actual con la que estamos administrando a través del outline clientes damos click en el icono que mostramos acá y copiamos la llave de acceso
Si una persona quiere conectarse a tu servidor, basta con que acepte la invitación que le hayas enviado. Una vez que se haya conectado, podrá conectarse o desconectarse fácilmente desde la aplicación.
Pueden descargar el cliente de outline:
Cliente para Android
Cliente para Windows
Cliente para Chrome
Cliente para Iphone
Cliente para macOS
Cliente para Linux
Cuando un cliente se conecta la app se pone en verde como ven
Probamos desde el sitio ifconfig.io que estemos saliendo por el ip del servidor
Estadisticas de los accesos, podemos verlo en el Outline Manager como les muestro aca
En el mismo podemos limitar llaves el consumo de datos que queremos que tengan
Con Outline VPN, no tiene que hacer nada por su parte para mantener su servidor actualizado. Las últimas correcciones de errores y mejoras de seguridad se instalan automáticamente. Esto se logra mediante el contenedor de Docker denominado “Watchtower” en su servidor. Watchtower es una aplicación de código abierto que busca e instala actualizaciones en el contenedor Shadowbox.
Además de las actualizaciones del servidor de Outline, cuando configura su servidor usando el Administrador de Outline, se configurará un trabajo cron para actualizar automáticamente el sistema operativo del host y reiniciar cuando sea necesario.
sudo bash -c "$(wget -qO- https://raw.githubusercontent.com/Jigsaw-Code/outline-server/master/src/server_manager/install_scripts/install_server.sh)" --hostname=WGAPI --keys-port=443 --api-port=8080
Básicamente, api-port es para Outline Manager, donde simplemente puede agregar eliminar usuarios desde una aplicación simple conectada al servidor
El keys-port es el puerto para cada usuario o clave de acceso creada en el administrador de esquemas
El hostname es su nombre personalizado indicado en el esquema de usuario de VPN
Después de la instalación, es posible que deba proteger Outline Server con UFW (cortafuegos sencillo):
– Cómo proteger Outline Server:
En primer lugar, instale UFW si no lo está.
sudo apt-get install ufw
después de instalar UFW, puede configurar el firewall sin habilitarlo.
sudo ufw allow / sudo ufw allow 8080/tcp sudo ufw allow 8080/udp sudo ufw allow 443/tcp sudo ufw allow ssh
Nota: estas reglas de cortafuegos es en el servidor como tal y usando los puertos que pusimos en la personalización, el cual puede cambiarlo a los que su servidor requiera sino lo personalizo.
Habilitación de UFW:
sudo ufw enable
Esto tendrá la siguiente salida: Firewall is active and enabled on system startup
Aún así, no se establece la limitación de velocidad del usuario, lo que significa que sus conexiones dependiendo de su servidor y la velocidad de Internet del usuario pueden alcanzar hasta 150 MB por clave de acceso.
Me complace anunciar la creación de esta útil herramienta (SquidStats), para el análisis y monitoreo…
La inteligencia artificial está revolucionando las industrias al automatizar tareas, predecir patrones y permitiendo tomar…
Uno de los grandes retos al que nos podemos enfrentar cuando una aplicación crece, es…
Percona Monitoring and Management (PMM) es una herramienta de código abierto para la supervisión y…
Qué es lo que deseo hacer en este capítulo? Básicamente un sonoff, quiero encender/apagar las…
Hace algunos meses estoy escuchando hablar del proyecto Home Assistant (HA). En palabras literales del…
View Comments
necesito saber como reiniciar las estadisticas de trafico para las claves de acceso
AAlguien le funciona el outline ???
Buenas, este tutorial me sirve para montar la vpn sin tener docker?
Hola, he estado tratando de leer documentación etc, pero no encuentro respuesta, en Outline se agregan servers de tipo l2tp, openvpn, etc? o el utiliza sus propios protocolos?
Saludos Armando
hola q tal , en mi caso obtuve un error del tipo 403 al intentar instalar el outline, desactive el firewall y aun asi seguia dandome el mismo error, agradeceria cualkier tipo de ayuda
les adjunto el error q obtengo:
Last error: curl: (22) The requested URL returned error: 403
curl: (22) The requested URL returned error: 403
Failed to determine the server's IP address. Try using --hostname .
Sorry! Something went wrong. If you can't figure this out, please copy and paste all this output into the Outline Manager screen, and send it to us, to see if w e can help you.
Full log: /tmp/outline_logqSn
la conexion por ste vpn, me funcionaba asta ace 2 meses, pero ya no, sera que debo actualizar el cliente
Me sirve, pero sin docker