Servicio gratuito de Wireguard VPN en AWS
El razonamiento
El aumento de la censura de Internet por parte de los regímenes autoritarios amplía el bloqueo de los recursos útiles de Internet haciendo imposible el uso de la WEB y, en esencia, viola el derecho fundamental a la libertad de opinión y expresión consagrado en la Declaración Universal de Derechos Humanos .
Artículo 19
Toda persona tiene derecho a la libertad de opinión y expresión; Este derecho incluye la libertad de mantener opiniones sin interferencia y de buscar, recibir e impartir información e ideas a través de cualquier medio e independientemente de las fronteras.
La siguiente es la instrucción detallada de 6 pasos para que las personas que no son de TI implementen un servicio VPN gratuito * sobre la tecnología Wireguard en la infraestructura de nube de Amazon Web Services (AWS) , utilizando una cuenta gratuita de 12 meses, en una Instancia (máquina virtual) ejecutada por Ubuntu Server 18/04 LTS.
Traté de hacer este tutorial lo más amigable posible para las personas que están lejos de TI. Lo único que se requiere es la asiduidad para repetir los pasos que se describen a continuación.
Nota
Etapas
- Registre la cuenta de AWS.
- Crea una instancia de AWS.
- Conéctese a la instancia de AWS.
- Configurar el servidor Wireguard.
- Configurar clientes VPN.
- Verifique la conexión VPN.
Enlaces utiles
Los autores
1. Registre la cuenta gratuita de AWS
Para registrar una cuenta de AWS, debe enviar un número de teléfono válido y una tarjeta bancaria (Visa o Mastercard). Recomiendo usar tarjetas virtuales proporcionadas de forma gratuita por Yandex.Money o Qiwi wallet.
AWS verifica la validez de la tarjeta deduciendo 1 $ en el registro seguido del reembolso.
1.1. Abrir la consola de administración de AWS
Siga el enlace: https://aws.amazon.com/ , haga clic en el botón Crear una cuenta de AWS .

1.2. Creación de cuenta de AWS
Complete los datos y haga clic en el botón Continuar .


Número de tarjeta, fecha de vencimiento y nombre del titular de la tarjeta.

1.5. Verificación de cuenta
AWS verifica su número de teléfono y debita $ 1 de su tarjeta bancaria. Luego, debe obtener un código de 4 dígitos en la pantalla de la computadora y recibir una llamada de Amazon. Durante una llamada, debe marcar el código de 4 dígitos que se muestra en la pantalla.

1.6. Elegir un plan de soporte de AWS
Elija un plan básico (gratis).

Inicie sesión en la consola de administración de AWS

1.8. Elegir la ubicación del centro de datos

1.8.1. Prueba de velocidad de internet
Le recomendé que realizara una prueba de velocidad a los centros de datos más cercanos en https://speedtest.net/ y elija el mejor para conectarse.
Los siguientes son los resultados de la prueba de velocidad de mi ubicación:
- Singapur

- Paris

- Frankfurt

- Estocolmo

- Londres

El Datacenter en Londres muestra el mejor resultado de velocidad, así que lo elijo para continuar.
2. Crear una instancia de AWS
2.1 Crear una máquina virtual (instancia)
2.1.0 Siga los pasos de creación de instancias
2.1.0.1. Vaya a la página de Lanzamiento de instancia, elija el servicio EC-2

2.1.0.2. Inicie un servidor virtual, conocido como instancia de Amazon EC-2

2.1.0.3. Elija Amazon machine Image (Sistema operativo): Ubuntu Server 18.04 LTS

2.1.1 Elegir tipo de instancia
El tipo de instancia t2.micro
está configurado de forma predeterminada y es el adecuado. Haga clic en el botón Siguiente: Configurar detalles de instancia para continuar.

Deshabilite la asignación automática de la IP pública, ya que asignará una estática a su instancia. Haga clic en el botón Siguiente: Agregar almacenamiento .

2.1.3. Agregar almacenamiento
Especifique el tamaño de la unidad: los 16 GB son suficientes.
Haga clic en Siguiente: botón Agregar etiquetas .

Si tiene varias instancias, puede agruparlas por etiquetas para permitir una mejor administración. Sin embargo, esta funcionalidad es excedente. Por lo tanto, omitimos esto presionando el botón Siguiente: Configurar grupo de seguridad .

2.1.5. Apertura de puertos
Configure el firewall asignando puertos abiertos. El conjunto de puertos abiertos se denomina "Grupo de seguridad". Debe crear un nuevo "Grupo de seguridad", asígnele un nombre, una descripción y un puerto UDP (regla UDP personalizada).
En el campo Rango de puerto, especifique un número de puerto del rango 49152 - 65535 de puertos dinámicos . En mi caso, elijo el número de puerto 54321.
Haga clic en el botón Revisar e iniciar para completar este paso.

2.1.6. Revise la configuración de Inicio de instancia
Revise y verifique todas las configuraciones para el Lanzamiento de instancia, y si todo está bien, haga clic en el botón Iniciar .

2.1.7. Crear claves de acceso
Cree o agregue una clave SSH existente en el cuadro de diálogo que usará para la conexión remota a su instancia.
Elija "Crear un nuevo par de claves" para generar una nueva clave. Déle un nombre y haga clic en el botón Descargar par de claves para descargar la clave generada en la unidad de la PC. Haga clic en el botón Iniciar instancias .

2.1.7.1. Guardar claves privadas (.pem)
Cuando hace clic en Descargar par de claves , guarda la clave como un archivo .pem.
Para una mejor administración, asigné un nombre wireguard-awskey.pem al archivo.

2.1.8. Resumen de lanzamiento de instancia
A continuación, debería ver un mensaje sobre el lanzamiento exitoso de la instancia que ha creado. Puede visitar la lista de sus instancias haciendo clic en el botón Ver instancias .

2.2. Crear una dirección IP externa
2.2.1. Crear una IP externa
Lo siguiente es la creación de una dirección IP externa, que usará para conectarse al servidor VPN.
Encuentre las IP elásticas en la categoría RED Y SEGURIDAD del panel de navegación. Haga clic en el botón Asignar nueva dirección .

2.2.2. Configuración de IP externa
En el siguiente paso, debe habilitar el grupo de Amazon (que es el predeterminado) y hacer clic en el botón Asignar

2.2.3. Descripción general de la dirección IP
La siguiente ventana muestra una dirección IP externa asignada por el grupo de Amazon. Anótelo, ya que lo necesitará para el proceso de configuración y para la configuración del servidor VPN. En esta guía, como ejemplo, uso la dirección IP 4.3.2.1 .
Una vez que termine este paso, haga clic en el botón Cerrar .

2.2.4. Lista de direcciones IP externas
A continuación, debe obtener una lista de sus direcciones IP públicas (Elastics IP).

2.2.5. Asignar una IP externa a la instancia
Elija la dirección IP de la lista (consulte 2.2.3) y haga clic con el botón derecho del mouse para obtener un menú desplegable.
En este menú, elija la dirección de Asociado para asignar una IP a la Instancia creada.

2.2.6. Dirección asociada con instancia
En el menú desplegable, seleccione la instancia creada y haga clic en el botón Asociar .

2.2.7. Resumen de asignación de IP externa
Ahora debe tener una instancia creada con una dirección IP pública asignada. Esto le permite realizar una conexión remota a la instancia desde el exterior (desde su PC) a través de SSH.

3. Conéctese a la instancia de AWS
SSH es un protocolo seguro para administrar dispositivos informáticos remotos.
3.1. Conéctese desde una PC con Windows a través de SSH
Descargue e instale una masilla para realizar una conexión desde la PC con Windows.
3.1.1. Importar clave privada para masilla
3.1.1.1. Importa la clave de AWS en Putty
Inicie una utilidad PuTTYgen para que coincida con su clave AWS en formato .pem con un formato .ppk adecuado para Putty.
Para hacer esto, seleccione Conversiones -> Importar clave en el menú superior.

A continuación, elija la clave que trató en 2.1.7.1
En mi caso es wireguard-awskey.pem .

3.1.1.3. Establecer los parámetros clave de importación
En este paso, debe especificar los parámetros de importación de la clave: el comentario clave y la frase clave . Los necesitará en cada conexión. También protege la clave con una contraseña contra el acceso no autorizado.
Puede omitir la asignación de contraseña. Pero esto hará que su conexión sea menos segura en caso de que la clave caiga en las manos equivocadas.
Una vez que termine, haga clic en el botón Guardar clave privada .

3.1.1.4. Guarde la clave .ppk importada
Puede guardar su clave privada en un formato .ppk
adecuado para Putty desde el cuadro de diálogo de guardar archivo.
Especifique el nombre de la clave (en mi caso, wireguard-awskey.ppk
) y haga clic en el botón Guardar .

3.1.2.1. Hacer una conexión
Ejecute el programa Putty, elija la categoría Sesión (está abierta de forma predeterminada) y en el campo Nombre del host ingrese la dirección IP pública del servidor. Recuerdo que obtuvo su dirección IP pública en el paso 2.2.3 .
Dé cualquier nombre a la conexión en el campo Sesión guardada (para mí es wireguard-aws-london
). Haz clic en el botón Guardar .

3.1.2.2. Establecer un inicio de sesión automático de usuario
Elija la subcategoría Datos de la categoría Conexión . Ingrese el nombre de usuario de inicio de sesión automático ubuntu en el campo de nombre de usuario de inicio de sesión automático . ( ubuntu es el usuario de instancia estándar en AWS con Ubuntu).

3.1.2.3. Use una clave privada para una conexión SSH
Siga la ruta Conexión -> SSH -> Subcategoría de autenticación y haga clic en el botón Examinar para elegir el archivo de clave privada.

3.1.2.4. Abra el archivo de clave privada
Especifique la clave que importó anteriormente en el paso 3.1.1.4 - wireguard-awskey.ppk
y haga clic en el botón Abrir .

3.1.2.5. Guarde los cambios e inicie una conexión remota SSH
En la categoría Sesión de la ventana de configuración de Masilla, presione el botón Guardar para aplicar todos los cambios que realizó en ( 3.1.2.2 - 3.1.2.4 ).
Haga clic en el botón Abrir para iniciar la conexión remota SSH lista para usar.

3.1.2.7. Establecer una confianza entre los hosts
En la primera conexión, debería recibir una advertencia sobre la falta de confianza entre dos computadoras (hosts). El sistema le pregunta si confía en el host remoto. Haga clic en Sí para agregar el host remoto a la lista de confianza.

3.1.2.8. Ingrese la contraseña para activar la clave
En una ventana de terminal Putty, ingrese la contraseña clave que configuró en el paso
3.1.1.3 . Al ingresar la contraseña, no muestra ninguna acción en la pantalla. No se preocupe, si comete un error, puede usar la tecla de retroceso.

3.1.2.9. Conexión exitosa
Una vez que ingrese la contraseña correcta, recibirá un mensaje de bienvenida. Le informa que el sistema remoto está listo para ejecutar sus comandos.

A continuación se encuentran las instrucciones para una instalación y administración de Wireguard basada en scripts.
Mantengo la última versión de las instrucciones en el repositorio: https://github.com/isystem-io/wireguard-aws
4.1. Instalar protector de cables
Ingrese los siguientes comandos en la terminal Putty.
Puede copiarlos en el portapapeles y pegarlos en el terminal presionando el botón derecho del mouse.
4.1.1 Clonar el repositorio de scripts
Clonar un repositorio de scripts de instalación de Wireguard:
git clone https://github.com/pprometey/wireguard_aws.git wireguard_aws
4.1.2. Directorio de repositorios de scripts
Vaya al directorio del repositorio clonado:
cd wireguard_aws
4.1.3 Script de inicialización
Ejecute el script de instalación de Wireguard con derechos de administrador (usuario raíz):
sudo ./initial.sh
El script le pide que proporcione los siguientes datos para configurar Wireguard.
4.1.3.1. Establecer punto final de conexión (IP: puerto)
Ingrese la dirección IP externa (consulte 2.2.3 ) y el puerto abierto (consulte 2.1.5 ) del servidor Wireguard. Utilice el siguiente formato IP: puerto , por ejemplo, 4.3.2.1:54321
. Presione la tecla Enter para confirmar.
Enter the endpoint (external ip and port) in format[ipv4:port] (eg 4.3.2.1:54321): 4.3.2.1:54321
4.1.3.2. Establecer dirección IP interna
Ingrese la dirección IP del servidor Wireguard en una subred VPN segura. Si no sabe qué es, presione la tecla Intro para establecer el valor predeterminado ( 10.50.0.1
).
Enter the server address in the VPN subnet (CIDR format) ([ENTER] set to default: 10.50.0.1):
4.1.3.3. Especificar servidor DNS
Ingrese la dirección IP del servidor DNS o presione la tecla Intro para establecer el valor predeterminado 1.1.1.1
(Cloudflare public DNS).
Enter the ip address of the server DNS (CIDR format) ([ENTER] set to default: 1.1.1.1):
4.1.3.4. Especificar interfaz WAN
Ingrese el nombre de la interfaz de red externa. Esta interfaz detectará la interfaz de red interna de la VPN.
Presione Entrar para establecer el valor predeterminado para AWS ( eth0
)
Enter the name of the WAN network interface ([ENTER] set to default: eth0):
4.1.3.5. Especificar nombre del cliente
El servidor VPN de Wireguard no puede iniciarse hasta que agregue al menos un cliente. Ingrese un nombre de usuario VPN.
En mi caso, ingresé el nombre de Alex @ mobil.
Enter VPN user name: Alex@mobile
Después de eso, debería recibir un código QR de una configuración de cliente adicional. Este QR aplica la configuración del usuario al cliente móvil Wireguard en Android o iOS.
El texto del archivo de configuración también se muestra con QR. Necesitará en caso de configuración manual de clientes como se describe a continuación.

4.2. Agregar nuevo usuario VPN
Para agregar un nuevo usuario, debe ejecutar el script add-client.sh
en la terminal
sudo ./add-client.sh
El script solicita el nombre de usuario:
Enter VPN user name:
El nombre de usuario puede ir como un parámetro de script (en mi caso, el nombre de usuario es Alex @ mobile):
sudo ./add-client.sh Alex@mobile
La ejecución del script conduce a la creación del archivo de configuración del cliente en el directorio del cliente.
Archivo de configuración del cliente: /etc/wireguard/clients/{ClientName}/{ClientName}.conf
.
Directorio de clientes:
/etc/wireguard/clients/{ClientName}
4.2.1 Archivo de configuración del usuario
Ejecute el comando cat para obtener el contenido del archivo .conf
para la configuración manual del cliente.
sudo cat/etc/wireguard/clients/Alex@mobile/Alex@mobile.conf
El resultado de la ejecución del comando de la siguiente manera:
[Interface] PrivateKey = oDMWr0toPVCvgKt5oncLLRfHRit + jbzT5cshNUi8zlM = Address = 10.50.0.2/32 DNS = 1.1.1.1 [Peer] PublicKey = mLnd + mul15U0EP6jCH5MRhIAjsfKYuIU / j5ml8Z2SEk = PresharedKey = wjXdcf8CG29Scmnl5D97N46PhVn1jecioaXjdvrEkAc = AllowedIPs = 0.0.0.0/0, :: / 0 Endpoint = 4.3.2.1:54321
descripción del archivo de configuración del cliente:
[Interface] PrivateKey = Client's private key Address = Client IP Address DNS = DNS used by the client [Peer] PublicKey = Public key server PresharedKey = Shared server and client key AllowedIPs = Allowed addresses for connection (all - 0.0.0.0/0, :: / 0) Endpoint = IP address and port for connection
4.2.2 Configuración del cliente con código QR
Ejecute el qrencode -t ansiutf8
para obtener el QR de una configuración de cliente creada. (en mi caso, el nuevo nombre del cliente es Alex @ mobile).
sudo cat /etc/wireguard/clients/Alex@mobile/Alex@mobile.conf | qrencode -t ansiutf8
5.1. Configuración de cliente móvil Android
Descargue el cliente móvil Wireguard para Android desde la tienda oficial GooglePlay .
Escanee el código QR para importar la configuración del cliente (consulte 4.2.2 ) y asígnele un nombre.

Después de importar la configuración, puede habilitar el túnel VPN. Un pequeño símbolo de llave en el sistema Android confirma la conexión VPN.

5.2. Configuración del cliente de Windows
Descargue e instale TunSafe , que es un cliente Wireguard para Windows.
5.2.1. Crear un archivo de texto local para importar la configuración
Cree un archivo de texto ficticio en el escritorio de su PC.

5.2.2. Copie el archivo de configuración del servidor
Copie el contenido del archivo de configuración del servidor.
Luego, regrese al terminal Putty y muestre el contenido del archivo de configuración del usuario (consulte 4.2.1 ).
Use el botón derecho del mouse para copiar el texto de configuración en el terminal Putty.

5.2.3. Pegue el texto de configuración en un archivo de texto local
Pegue el texto de configuración del portapapeles en el archivo de texto ficticio que creamos anteriormente en el escritorio (consulte 5.2.1 ).

5.2.4. Guarde el archivo de configuración local.
Guarde el archivo de texto como formato .conf (en mi caso como london.conf
)

5.2.5. Importar archivo de configuración local
Importe el archivo de configuración al programa TunSafe.

5.2.6. Establecer una conexión VPN
En el programa TunSafe, seleccione el archivo de configuración importado y haga clic en el botón Conectar .

6. Verifique la conexión VPN
Use https://2ip.ua/en/ resource para verificar la conexión del túnel VPN. Si la dirección IP mostrada coincide con la que obtuvimos en 2.2.3 , entonces el túnel VPN está en funcionamiento.

En un terminal de Linux, puede verificar su dirección IP ejecutando el siguiente comando:
curl http://zx2c4.com/ip