Para que?
Con la creciente censura de Internet por parte de regímenes autoritarios, se está bloqueando un número creciente de recursos y sitios de Internet útiles. Incluyendo información técnica.
Por lo tanto, se hace imposible usar Internet por completo y se está violando el derecho fundamental a la libertad de expresión consagrado en la Declaración Universal de Derechos Humanos .
Sección 19
Toda persona tiene derecho a la libertad de opinión y expresión; Este derecho incluye la libertad de adherirse libremente a las creencias personales y la libertad de buscar, recibir y difundir información e ideas por cualquier medio y sin importar las fronteras estatales.
En esta guía, en 6 pasos implementaremos nuestro propio servicio VPN gratuito * basado en la tecnología Wireguard , en la infraestructura de nube de Amazon Web Services (AWS), utilizando una cuenta gratuita (durante 12 meses), en una instancia (máquina virtual) que ejecute 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 perseverancia para repetir los pasos que se describen a continuación.
Nota
Etapas
- Registro de cuenta gratuita de AWS
- Crear instancia de AWS
- Conectarse a una instancia de AWS
- Configurar Wireguard
- Configurar clientes VPN
- Verifique la instalación de VPN
Enlaces utiles
1. Registro de cuenta de AWS
Para registrar una cuenta de AWS gratuita, necesita un número de teléfono real y una tarjeta de crédito Visa o Mastercard pagadera. Recomiendo el uso de tarjetas virtuales que Yandex.Money o Qiwi wallet proporciona de forma gratuita. Para verificar la validez de la tarjeta, se deduce $ 1 durante el registro, que posteriormente se devuelve.
1.1. Abrir la consola de administración de AWS
Debe abrir un navegador e ir a: https://aws.amazon.com/en/
Haga clic en el botón "Registrarse"

1.2. Rellenando datos personales
Complete los datos y haga clic en el botón "Continuar"

1.3. Completar datos de contacto
Rellene los datos de contacto.

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

1.5. Verificación de cuenta
En esta etapa, se confirma el número de teléfono y se cobra $ 1 directamente de la tarjeta de pago. Se muestra un código de 4 dígitos en la pantalla de la computadora y se recibe una llamada de Amazon en el teléfono especificado. Durante la llamada, debe marcar el código que se muestra en la pantalla.

1.6. Elección de un plan tarifario.
Elegir: plan básico (gratis)

1.7. Inicie sesión en la consola de administración

1.8. Elegir una ubicación del centro de datos

1.8.1. Prueba de velocidad
Antes de elegir un centro de datos, se recomienda probar a través de https://speedtest.net la velocidad de acceso a los centros de datos más cercanos, en mi ubicación, los siguientes resultados:
- Singapur

- Paris

- Frankfurt

- Estocolmo

- Londres

El centro de datos de Londres muestra los mejores resultados de velocidad. Por lo tanto, lo seleccioné para una mayor personalización.
2. Crear una instancia de AWS
2.1 Crear una máquina virtual (instancia)
2.1.0 Inicio del tutorial Crear instancia
2.1.0.1. Ir a la página de inicio de instancia

2.1.0.2. Inicio del tutorial Crear instancia

2.1.0.3. Elegir un tipo de sistema operativo de instancia

2.1.1 Seleccionar tipo de instancia
Por defecto, la instancia t2.micro está seleccionada, la necesitamos, simplemente haga clic en el botón Siguiente: Configurar detalles de la instancia

2.1.2. Configurar parámetros de instancia
En el futuro, conectaremos una IP pública permanente a nuestra instancia, por lo que en esta etapa desactivaremos la asignación automática de IP pública y haremos clic en Siguiente: Agregar almacenamiento

2.1.3. Conexión de almacenamiento
Especifique el tamaño del "disco duro". 16 gigabytes son suficientes para nuestros propósitos, y haga clic en el botón Siguiente: Agregar etiquetas

2.1.4. Personalización de etiqueta
Si creamos varias instancias, entonces podrían agruparse por etiquetas, para facilitar la administración. En este caso, esta funcionalidad es redundante, haga clic inmediatamente en el botón Siguiente: Configurar Security Gorup

2.1.5. Apertura de puerto
En este punto, configuramos el firewall abriendo los puertos requeridos. El conjunto de puertos abiertos se llama Grupo de seguridad. Necesitamos crear un nuevo grupo de seguridad, darle un nombre, descripción, agregar un puerto UDP (Regla UDP personalizada), en el campo Rango de clasificación necesita asignar un número de puerto del rango dinámico de puertos 49152–65535. En este caso, elegí el número de puerto 54321.

Después de completar los datos necesarios, haga clic en el botón Revisar e iniciar
2.1.6. Descripción general de todas las configuraciones de instancia
En esta página hay una descripción general de todas las configuraciones de nuestra instancia, verifique si todas las configuraciones están en orden y haga clic en el botón Iniciar

2.1.7. Crear claves de paso
Luego viene un cuadro de diálogo que ofrece crear o agregar una clave SSH existente, con la que luego nos conectaremos de forma remota a nuestra instancia. Seleccionamos la opción "Crear un nuevo par de claves" para crear una nueva clave. Establezca su nombre y haga clic en el botón Descargar par de claves para descargar las claves creadas. Guárdelos en un lugar seguro en el disco de la computadora local. Una vez descargado, haga clic en el botón Iniciar instancias

2.1.7.1. Guardando Passkeys
Aquí se muestra el paso de guardar las claves creadas del paso anterior. Después de hacer clic en el botón Descargar par de claves , la clave se guarda como un archivo de certificado con la extensión * .pem. En este caso, le di el nombre de wireguard-awskey.pem

2.1.8. Descripción general de los resultados de creación de instancias
A continuación, vemos un mensaje sobre el lanzamiento exitoso de la instancia que acabamos de crear. Podemos ir a la lista de nuestras instancias haciendo clic en el botón Ver instancias

2.2. Crear una dirección IP externa
2.2.1. Comience a crear una IP externa
A continuación, necesitamos crear una dirección IP externa permanente a través de la cual nos conectaremos a nuestro servidor VPN. Para hacer esto, en el panel de navegación en el lado izquierdo de la pantalla, seleccione el elemento Elastic IPs de la categoría RED Y SECTURIDAD y haga clic en el botón Asignar nueva dirección

2.2.2. Configurar la creación de IP externa
En el siguiente paso, necesitamos que la opción de grupo de Amazon esté habilitada (habilitada de forma predeterminada) y haga clic en el botón Asignar

2.2.3. Descripción general de los resultados de crear una dirección IP externa
La siguiente pantalla mostrará la dirección IP externa que recibimos. Se recomienda recordarlo, y es aún mejor escribirlo. será útil una y otra vez en el proceso de configuración y uso del servidor VPN. En esta guía, uso la dirección IP 4.3.2.1 como ejemplo. Cómo escribir la dirección, haga clic en el botón Cerrar

2.2.4. Lista de direcciones IP externas
A continuación, abrimos una lista de nuestras direcciones IP públicas permanentes (IP elástica).

2.2.5. Asignación de una instancia de IP externa
En esta lista, seleccionamos la dirección IP que recibimos y presionamos el botón derecho del mouse para que aparezca un menú desplegable. En él, seleccione el elemento de dirección Asociado para asignarlo a la instancia creada anteriormente.

2.2.6. Configurar asignación de IP externa
En el siguiente paso, seleccione nuestra instancia de la lista desplegable y haga clic en el botón Asociar

2.2.7. Resumen de resultados de asignación de IP externa
Después de eso, podemos ver nuestra instancia y su dirección IP privada vinculada a nuestra dirección IP pública permanente.

Ahora podemos conectarnos a nuestra instancia recién creada desde afuera, desde nuestra computadora a través de SSH.
3. Conéctese a una instancia de AWS
SSH es un protocolo seguro para el control remoto de dispositivos informáticos.
3.1. Conexión SSH desde una computadora con Windows
Para conectarse a una computadora con Windows, primero debe descargar e instalar el programa Putty .
3.1.1. Importar una clave privada para masilla
3.1.1.1. Después de instalar Putty, debe ejecutar la utilidad PuTTYgen que viene con ella para importar la clave del certificado en formato PEM a un formato adecuado para su uso en Putty. Para hacer esto, seleccione Conversiones-> Importar clave en el menú superior

Luego, seleccione la clave que guardamos previamente en el paso 2.1.7.1, en nuestro caso, su nombre es wireguard-awskey.pem

3.1.1.3. Establecer opciones de importación clave
En este paso, debemos especificar un comentario para esta clave (descripción) y establecer una contraseña y su confirmación de seguridad. Se solicitará cada vez que se conecte. Por lo tanto, protegemos la clave con una contraseña del uso inapropiado. No puede establecer una contraseña, pero es menos segura si la clave cae en las manos equivocadas. Después de hacer clic en el botón Guardar clave privada

3.1.1.4. Guardar una clave importada
Se abre el cuadro de diálogo Guardar archivo, y guardamos nuestra clave privada como un archivo con la extensión .ppk
, adecuada para su uso en Putty .
Especifique el nombre de la clave (en nuestro caso wireguard-awskey.ppk
) y haga clic en el botón Guardar .

3.1.2. Crear y configurar una conexión en Putty
3.1.2.1. Crear conexión
Abra el programa Putty, seleccione la categoría Sesión (está abierta de forma predeterminada) e ingrese la dirección IP pública de nuestro servidor en el campo Nombre de host , que recibimos en el paso 2.2.3. En el campo Sesión guardada , ingrese un nombre arbitrario para nuestra conexión (en mi caso wireguard-aws-london ), y luego haga clic en el botón Guardar para guardar los cambios que realizamos.

3.1.2.2. Configuración de inicio de sesión de usuario
Además, en la categoría Conexión , seleccione la subcategoría Datos y en el campo Nombre de usuario de inicio de sesión automático ingrese el nombre de usuario ubuntu : este es el usuario estándar de la instancia de AWS con Ubuntu.

3.1.2.3. Elegir una clave privada para la conexión SSH
Luego vamos a la subcategoría Conexión / SSH / Auth y al lado del campo Clave privada para autenticación , haga clic en el botón Examinar ... para seleccionar un archivo con un certificado de clave.

3.1.2.4. Abrir una clave importada
Indicamos la clave que importamos anteriormente en el paso 3.1.1.4, en nuestro caso es el archivo wireguard-awskey.ppk , y hacemos clic en el botón Abrir .

3.1.2.5. Guardar ajustes e iniciar la conexión
Volviendo a la página de categoría Sesión , haga clic nuevamente en el botón Guardar para guardar los cambios que hicimos anteriormente en los pasos anteriores (3.1.2.2 - 3.1.2.4). Y luego presionamos el botón Abrir para abrir la conexión SSH remota que creamos y configuramos.

3.1.2.7. Configurar la confianza entre hosts
En el siguiente paso, la primera vez que intente conectarse, recibimos una advertencia, no hemos configurado la confianza entre las dos computadoras y le pregunta si debe confiar en la computadora remota. Hacemos clic en Sí , para agregarlo a la lista de hosts de confianza.

3.1.2.8. Ingrese la contraseña para acceder a la clave
Después de eso, se abre la ventana de terminal, donde se solicita la contraseña de la clave, si la instaló anteriormente en el paso 3.1.1.3. Al ingresar la contraseña, no se produce ninguna acción en la pantalla. Si comete un error, puede usar la tecla Retroceso .

3.1.2.9. Mensaje de bienvenida sobre una conexión exitosa
Después de ingresar con éxito la contraseña, se muestra un texto de bienvenida en el terminal que nos informa que el sistema remoto está listo para ejecutar nuestros comandos.

4. Configuración del servidor Wireguard
Las instrucciones más actuales para instalar y usar Wireguard utilizando los scripts que se describen a continuación se pueden encontrar en el repositorio: https://github.com/isystem-io/wireguard-aws
4.1. Instalar Wireguard
En la terminal, ingrese los siguientes comandos (puede copiar en el portapapeles y pegar en la terminal haciendo clic derecho):
4.1.1 Clonación de repositorio
Clonamos un repositorio con scripts de instalación de Wireguard
git clone https://github.com/pprometey/wireguard_aws.git wireguard_aws
4.1.2. Ir al directorio del script
Vaya al directorio con el repositorio clonado.
cd wireguard_aws
4.1.3 Ejecutar el script de inicialización
Ejecute el script de instalación de Wireguard como administrador (usuario root)
sudo ./initial.sh
Durante la instalación, se le solicitarán ciertos datos necesarios para configurar Wireguard
4.1.3.1. Ingresar punto de conexión
Ingrese la dirección IP externa y abra el puerto del servidor Wireguard. Obtuvimos la dirección IP externa del servidor en el paso 2.2.3 y abrimos el puerto en el paso 2.1.5. Los especificamos juntos, 4.3.2.1:54321
dos puntos, por ejemplo 4.3.2.1:54321
, y luego presione Entrar
Ejemplo de salida:
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. Ingrese la dirección IP interna
Ingrese la dirección IP del servidor Wireguard en una subred VPN segura, si no sabe cuál es, simplemente presione Entrar para establecer el valor predeterminado ( 10.50.0.1
)
Ejemplo de salida:
Enter the server address in the VPN subnet (CIDR format) ([ENTER] set to default: 10.50.0.1):
4.1.3.3. Especificar un servidor DNS
Ingrese la dirección IP del servidor DNS, o simplemente presione Enter para establecer el valor predeterminado en 1.1.1.1
(Cloudflare public DNS)
Ejemplo de salida:
Enter the ip address of the server DNS (CIDR format) ([ENTER] set to default: 1.1.1.1):
4.1.3.4. Especificación de la interfaz WAN
Luego, ingrese el nombre de la interfaz de red externa que escuchará en la interfaz de red interna de la VPN. Simplemente presione Entrar para establecer el valor predeterminado para AWS ( eth0
)
Ejemplo de salida:
Enter the name of the WAN network interface ([ENTER] set to default: eth0):
4.1.3.5. Nombre del cliente
Ingrese el nombre del usuario VPN. El hecho es que el servidor VPN Wireguard no podrá iniciarse hasta que se haya agregado al menos un cliente. En este caso, ingresé el nombre Alex@mobile
Ejemplo de salida:
Enter VPN user name: Alex@mobile
Después de eso, se debe mostrar un código QR en la pantalla con la configuración del cliente recién agregado, que debe leerse utilizando el cliente móvil Wireguard en Android o iOS para configurarlo. Además, el texto del archivo de configuración se mostrará debajo del código QR en caso de configuración manual de clientes. Cómo hacerlo se describirá a continuación.

4.2. Agregar un nuevo usuario VPN
Para agregar un nuevo usuario, debe ejecutar el script add-client.sh
en el terminal
sudo ./add-client.sh
El script solicita el nombre de usuario:
Ejemplo de salida:
Enter VPN user name:
Además, el nombre se puede pasar a los usuarios como un parámetro de script (en este caso, Alex@mobile
):
sudo ./add-client.sh Alex@mobile
Como resultado de la ejecución del script, en el directorio con el nombre del cliente a lo largo de la ruta /etc/wireguard/clients/{}
, se /etc/wireguard/clients/{}
un archivo con la configuración del cliente /etc/wireguard/clients/{}
CustomerName►.conf, y se mostrará en la pantalla del terminal Código QR para configurar clientes móviles y el contenido del archivo de configuración.
4.2.1 Archivo de configuración del usuario
Puede mostrar el contenido del archivo .conf en la pantalla, para la configuración manual del cliente, utilizando el cat
sudo cat /etc/wireguard/clients/Alex@mobile/Alex@mobile.conf
resultado de ejecución:
[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 = Address = IP DNS = [Peer] PublicKey = PresharedKey = AllowedIPs = ( - 0.0.0.0/0, ::/0) Endpoint = IP
4.2.2 Código de configuración del cliente QR
Puede mostrar el código QR del código de configuración para el cliente creado previamente en la pantalla del terminal utilizando el qrencode -t ansiutf8
(en este ejemplo, se utiliza el cliente llamado Alex @ mobile):
sudo cat /etc/wireguard/clients/Alex@mobile/Alex@mobile.conf | qrencode -t ansiutf8
5. Configuración de clientes VPN
5.1. Configuración de Android Mobile Client
El cliente oficial de Wireguard para Android se puede instalar desde la tienda oficial de Google Play
Después de eso, debe importar la configuración leyendo el código QR con la configuración del cliente (consulte el párrafo 4.2.2) y asígnele un nombre:

Después de importar con éxito la configuración, puede habilitar el túnel VPN. Acerca de la conexión exitosa dirá el escondite de la clave en el panel del sistema Android

5.2. Configuración del cliente de Windows
Inicialmente, debe descargar e instalar TunSafe para Windows ; este es un cliente Wireguard para Windows.
5.2.1. Crear un archivo de configuración para importar
Haga clic derecho para crear un archivo de texto en el escritorio.

5.2.2. Copiar el contenido del archivo de configuración del servidor
Luego volvemos al terminal Putty y mostramos el contenido del archivo de configuración del usuario deseado, como se describe en el paso 4.2.1.
Luego, seleccione el texto de configuración en el terminal Putty con el botón derecho del mouse; una vez completada la selección, se copiará automáticamente en el portapapeles.

5.2.3. Copiar configuración al archivo de configuración local
Este campo vuelve al archivo de texto que creamos anteriormente en el escritorio y pega el texto de configuración desde el portapapeles.

5.2.4. Guardar un archivo de configuración local
Guardamos el archivo con la extensión .conf (en este caso, con el nombre london.conf
)

5.2.5. Importar un archivo de configuración local
A continuación, debe importar el archivo de configuración al programa TunSafe.

5.2.6. Establecer una conexión VPN
Seleccione este archivo de configuración y conéctese haciendo clic en el botón Conectar .

6. Comprobación del éxito de la conexión
Para verificar el éxito de la conexión a través del túnel VPN, debe abrir un navegador e ir al sitio https://2ip.ua/ru/

La dirección IP que se muestra debe coincidir con la que recibimos en el paso 2.2.3.
Si es así, entonces el túnel VPN está funcionando con éxito.
Desde un terminal en Linux, puede verificar su dirección IP ingresando el comando:
curl http://zx2c4.com/ip
O simplemente puedes ir al centro de pornografía si estás en Kazajstán.