Com configurar el servidor i el client WireGuard VPN a Ubuntu 20.04

Configureu una VPN autoallotjada mitjançant Wireguard

A VPN (xarxa privada virtual) permet a l'usuari connectar-se a una xarxa privada de forma remota com si l'ordinador de l'usuari estigués connectat directament a la xarxa privada. La tecnologia es va desenvolupar inicialment per tal de permetre l'accés remot a la xarxa privada interna d'una empresa, per als empleats que no es troben realment a la ubicació de la xarxa interna.

Es desplega un servidor VPN a la ubicació de la xarxa interna. Aquest servidor es troba a la xarxa pública i l'empleat pot accedir-hi mitjançant un client VPN. Es necessita autenticació per connectar-se al servidor VPN. La comunicació entre el servidor VPN i el client VPN està segura mitjançant un protocol de túnel. Tingueu en compte que aquesta comunicació pot estar xifrada o no, però normalment a la majoria de protocols VPN està xifrada.

Un altre ús de la VPN és obtenir l'anonimat en accedir a Internet o per eludir les restriccions geogràfiques imposades en accedir a alguns llocs web. En aquests casos, la xarxa a la qual es vol connectar l'usuari no és una xarxa privada, sinó que és Internet.

Al llarg dels anys s'han desenvolupat molts protocols VPN. Aquests protocols fan ús de diferents protocols de túnel i algorismes de xifratge per a la comunicació entre el servidor i el client.

Un d'aquests protocols, que està guanyant un gran ús recentment, és Wireguard. Wireguard és més lleuger, més senzill i més eficient que els coneguts protocols VPN utilitzats tradicionalment com OpenVPN, IPSec. Ja està implementat per a Windows, Mac OS i un gran nombre de distribucions de Linux. A Linux, s'implementa com a mòdul del nucli. Està disponible als repositoris oficials d'Ubuntu 20.04.

En aquest article, veurem com configurar un servidor i un client VPN Wireguard a Ubuntu 20.04.

Instal·lació

Per a aquest article, estic configurant un servidor Wireguard en un Ubuntu 20.04 Linode i Wireguard Client a la meva màquina local amb Ubuntu 20.04.

El paquet protector de fil instal·la el servidor i el client Wireguard. Executeu l'ordre següent tant a la màquina servidor com a la màquina client.

sudo apt install wireguard

Configuració del servidor

Claus de seguretat

Hem de generar un conjunt de parells de claus públiques/privades per autenticar i assegurar la connexió Wireguard. Això es pot fer mitjançant les ordres següents:

sudo su cd /etc/wireguard umask 077 wg genkey | tee clau_privada | wg pubkey > clau_publica

Tingueu en compte que estem fent totes les tasques de configuració com a superusuari. El motiu és que l'accés al directori /etc/wireguard s'impedeix per als usuaris normals i l'accés al directori no es pot obtenir només amb privilegis sudo per a un usuari normal.

A continuació, establim la màscara de creació de fitxers a 077. Això vol dir que sempre que es creï un fitxer nou en aquesta carpeta per qualsevol procés, els seus permisos s'emmascararan automàticament amb 077. Per exemple. si es crea un fitxer en aquesta carpeta amb els permisos 777, s'emmascara automàticament i els permisos es converteixen efectivament en 700. Això es fa de manera que només el propietari del fitxer tingui tots els permisos del fitxer i tots els altres no tinguin cap permís.

A la línia següent, generem el parell de claus pública/privada per al servidor. Es guarden en fitxers clau_privada i clau_pública. Per veure les claus, executeu:

cat clau_privada cat clau_pública

Copieu la clau privada, la necessitem al següent pas.

Nota: No compartiu mai la vostra clau privada públicament!

Fitxer de configuració

Creem un fitxer de configuració per al servidor Wireguard. Podeu triar qualsevol nom per al fitxer. Crearem un fitxer wg0.conf en aquest exemple.

vim wg0.conf

Afegiu el següent al fitxer.

[Interfície] Adreça = 10.20.43.1/24 SaveConfig = true ListenPort = 51190 PrivateKey = PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o -j MASQUERADA; ip6tables -A FORWARD -i wg0 -j ACCEPT; ip6tables -t nat -A POSTROUTING -o eth0 -j MASQUERADE PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE; ip6tables -D FORWARD -i wg0 -j ACCEPT; ip6tables -t nat -D POSTROUTING -o -j MASQUERADE 

Enganxeu la clau privada que hem copiat anteriorment a la línia 5 del codi anterior.

Hem de configurar Wireguard en una subxarxa (virtual) diferent que l'adreça IP del servidor. Aquí, he utilitzat 10.20.43.1 per al servidor i faré servir 10.20.43.2 per al client. Aquí es pot utilitzar qualsevol subxarxa. Per obtenir l'adreça IP del servidor i la interfície, executeu:

ifconfig

Anoteu l'adreça IP del servidor. Això és necessari durant la configuració del client.

La interfície utilitzada pel servidor, tal com es veu a la imatge de dalt, és eth0. El nom de la interfície pot variar segons la xarxa de l'usuari, pot ser-ho wlan0 o wlp2s0 en cas que l'usuari estigui connectat a una xarxa WiFi mitjançant una targeta sense fil.

Substituïu el en PostUp i PostDown amb la seva interfície; en aquest exemple ho és eth0.PostUp i PostDown Les directives s'utilitzen per especificar quines ordres s'han d'executar quan el servidor s'inicia i s'atura respectivament. En el nostre exemple, fem servir el iptables comanda per establir regles IP de manera que l'adreça IP del servidor sigui compartida pels clients. Les regles baixaran un cop s'aturi el servidor.

Desa i surt del fitxer. Quan utilitzeu vim, premeu Esc, després escriviu :wq i premeu Entra per guardar i sortir.

Si utilitzeu un ufw tallafoc al servidor, hem de permetre connexions UDP al port per al servidor VPN, 51190.

ufw permet 51190/udp

Inici del Servei

Ara, un cop feta la configuració, podem iniciar el servei Wireguard VPN.

Per permetre que el servei s'iniciï en el moment de l'arrencada, executeu:

systemctl habilitat wg-quick@wg0

Tingueu en compte que aquí wg0 és el nom del fitxer de configuració.

Començar el servei, executeu:

servei d'inici wg-quick@wg0

Verificar que el servei s'ha iniciat correctament:

estat del servei wg-quick@wg0

Comproveu que la interfície que hem creat al fitxer de configuració ha començat, utilitzant l'ordre IP.

ip un show wg0

El servidor VPN Wireguard ja està configurat i en funcionament. Configurem el client ara.

Configuració del client

La configuració del client per a Wireguard és més o menys la mateixa que una configuració de servidor. Generem les claus per al client, i després creem un fitxer de configuració.

Claus de seguretat

Per generar la clau pública/privada pair per al client, executeu:

sudo su cd /etc/wireguard umask 077 wg genkey | tee client_private_key | wg pubkey > client_public_key

Les claus públiques i privades per al client ara es generen respectivament en fitxers clau_privada_client i client_public_key.

Comproveu que s'han creat, utilitzant gat comandament.

cat client_private_key cat client_public_key

Copieu la clau privada que es mostra ja que l'hem d'afegir al fitxer de configuració del client.

Fitxer de configuració

Creeu el fitxer de configuració amb el nom que vulguis. El crearem amb el nom wg0-client per aquest exemple.

vim wg0-client.conf

Afegiu la configuració següent.

[Interfície] # Adreça IP i clau privada de l'adreça del client = 10.20.43.2/24 PrivateKey = [Peer] # Clau pública, adreça IP i port del servidor PublicKey = Endpoint = :51190 AllowedIPs = 0.0.0.0/0, : :/0

Introduïu l'adreça de subxarxa del client. Com s'ha descrit anteriorment, fem servir 10.20.43.2 per al client en aquest exemple.

Afegiu la clau privada del client generat al pas anterior a la línia 4 del codi de configuració anterior.

A "Peer", afegim informació sobre el servidor Wireguard VPN ens volem connectar.

Introduïu la clau pública del servidor. Introduïu el l'adreça IP del servidor, que hem assenyalat anteriorment, i el port en el format donat contra Punt final. Aquest és el port que hem especificat al fitxer de configuració del servidor i en què s'ha iniciat el servei VPN del servidor.

Les IP permeses s'han d'introduir tal com es donen (0.0.0.0/0) de manera que qualsevol sol·licitud en una IP pública dinàmica utilitzada pel client sempre s'enviarà al servidor VPN.

Desa i surt del fitxer. Quan utilitzeu vim, premeu Esc, després escriviu :wq i premeu Entra per guardar i sortir.

Habilita el servei al client per córrer amb cada arrencada i iniciar-la.

systemctl activa el servei wg-quick@wg-client wg-quick@wg-client start

Verificar si el servei ha començat.

servei wg-quick@wg-estat del client

Afegint Peer al servidor

Ara tenim el servidor VPN i el client en funcionament. Tanmateix, no s'estableix un túnel segur entre ambdós tret que establim una connexió peer to peer entre el servidor i el client.

Torna al servidor. Primer, aturar el servei VPN.

servei wg-quick@wg0 stop

A continuació, obriu el fitxer de configuració a afegir la configuració per a l'igual (client).

vim /etc/wireguard/wg0.conf

Adjuntar les línies següents al fitxer.

[Peer] PublicKey = AllowedIPs = 10.20.43.2/32

Ara, torneu a iniciar el servei VPN.

servei d'inici wg-quick@wg0

Això és! Aquesta és tota la configuració necessària per a la configuració del client i del servidor Wireguard VPN. Ara provem la nostra VPN.

Prova la VPN

Primer, fem un ping senzill del client al servidor per assegurar-nos que la comunicació del túnel VPN funciona. Executeu el següent al client:

ping 10.20.43.1

Pròxim, obre un navegador web i obre qualsevol lloc web per comprovar si podeu connectar-vos a Internet des de la màquina client. També podeu comprovar la vostra connectivitat a Internet des de la línia d'ordres utilitzant wget.

wget 

Ara, hem comprovat la connectivitat del túnel i la connectivitat a Internet. Si tots dos funcionen, ara hem d'assegurar-nos que tot el trànsit d'Internet que arriba al client passa pel servidor.

Per a això, només hem de comprovar l'adreça IP del client tal com la veu Internet. Una manera de fer-ho és anar a whatsmyip.org. O bé, des de la línia d'ordres, podem consultar un altre servei similar anomenat informació IP, mitjançant Curl.

Executeu el següent a la màquina client

curl //ipinfo.io/ip

Sí. És l'adreça IP pública del Linode on està allotjat el servidor VPN. Així és com s'aconsegueix l'anonimat mitjançant VPN, ja que a tot Internet ara es veu la IP del servidor VPN i no de l'ordinador.

Conclusió

La facilitat de configuració és un dels avantatges més importants de Wireguard respecte al programari VPN tradicional com OpenVPN, que necessita un nivell més alt de coneixements de xarxes i encaminament per configurar-lo. Tanmateix, hi ha una manca de documentació oficial detallada per a Wireguard, que podria causar problemes si la vostra configuració de Wireguard genera errors o no funciona com s'esperava.

No obstant això, Wireguard és una opció excel·lent si voleu una VPN autoallotjada per a una comunicació segura a Internet. Per obtenir més informació sobre Wireguard i els protocols i tecnologies que utilitza, podeu consultar el lloc oficial.