Per als qui no conegueu WireGuard VPN és una alternativa molt interessant a OpenVPN o IPsec. A partir de la versió 5.6 del nucli ja s'hi integren els mòduls de WireGuard. Si fas servir un nucli anterior també pots fer servir WireGuard activant el mòdul corresponent. En les proves que hem fet hem obtingut molt més bon rendiment amb WireGuard que amb OpenVPN o IPsec.
Informació
A Clouding no cal instal·lar-lo manualment si no ho vols, tens la Imatge preinstal·lada de WireGuard disponible i preparada per configurar-lo amb una interfície web. Tens més informació a Com utilitzar la imatge preinstal·lada de WireGuard.
Instal·lació de WireGuard
Per instal·lar WireGuard haurem d'executar:
# apt install wireguardHauríem d'obtenir un resultat com aquest:
Loading new wireguard-1.0.20200413 DKMS files...
Building for 4.15.0-20-generic
Building initial module for 4.15.0-20-generic
Done.
wireguard:
Running module version sanity check.
- Original module
- No original module exists within this kernel
- Installation
- Installing to /lib/modules/4.15.0-20-generic/updates/dkms/
depmod....
DKMS: install completed.
Setting up wireguard (1.0.20200319-0ppa1~18.04) ...
Processing triggers for libc-bin (2.27-3ubuntu1) ...Com podem veure en el resultat, WireGuard s'ha instal·lat correctament i ha instal·lat el mòdul corresponent per al nucli. Ara activarem el mòdul executant:
# modprobe wireguardPodem comprovar que estigui ben activat amb:
# lsmod | grep wireguardRetornarà un resultat com aquest:
wireguard 217088 0
ip6_udp_tunnel 16384 1 wireguard
udp_tunnel 16384 1 wireguardConfiguració de WireGuard
Ara ja podem configurar WireGuard al nostre servidor. Per fer-ho, el primer que farem serà generar la nostra clau pública i privada amb:
# wg genkey | tee /etc/wireguard/privatekey | wg pubkey | tee /etc/wireguard/publickeyAra que ja tenim les claus creades podem configurar una interfície de xarxa per a WireGuard. Per fer-ho, crearem un fitxer de configuració:
# vi /etc/wireguard/wg0.confHi afegirem el contingut següent:
[Interface]
Address = 10.0.8.1/24
SaveConfig = true
ListenPort = 51820
PrivateKey = SERVER_PRIVATE_KEY
PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE
PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -t nat -D POSTROUTING -o eth1 -j MASQUERADECanviarem SERVER_PRIVATE_KEY per la nostra clau privada. En el nostre exemple fem servir el rang privat 10.0.8.0/24, però se'n pot fer servir qualsevol altre. Recorda que has d'obrir el port 51820 UDP al tallafoc del tauler de client.
Ara protegirem els fitxers que hem generat; la resta d'usuaris no hi ha de tenir accés:
# chmod 600 /etc/wireguard/{privatekey,wg0.conf}Ara que ja tenim WireGuard configurat podem activar la nostra interfície de xarxa executant:
# wg-quick up wg0Ens retornarà un resultat com aquest:
[#] ip link add wg0 type wireguard
[#] wg setconf wg0 /dev/fd/63
[#] ip -4 address add 10.0.8.0/24 dev wg0
[#] ip link set mtu 1420 up dev wg0
[#] iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE
Perquè funcioni el NAT executarem:
# /sbin/sysctl -w net.ipv4.ip_forward=1Ara ja tenim WireGuard configurat i funcionant, només ens queda assegurar-nos que continuï funcionant quan reiniciem el nostre servidor. Per fer-ho, al fitxer /etc/rc.local hi afegirem:
/sbin/sysctl -w net.ipv4.ip_forward=1A més, activarem la creació de la nostra interfície de xarxa amb:
# systemctl enable wg-quick@wg0Client de WireGuard per a Windows
El primer que farem és descarregar el client per a Windows del web de WireGuard. Un cop instal·lat, configurarem el nostre túnel. Per fer-ho, farem clic a “Add Tunnel” -> “Add empty tunnel…”:
Se'ns obrirà una finestra amb la clau pública del nostre Windows i la clau privada (no esborris la clau privada):
Abans d'emplenar la configuració us farem alguns aclariments sobre AllowedIPs. Aquesta variable serveix per encaminar el trànsit per la VPN i podem triar entre diverses opcions:
- Encaminar només trànsit privat: AllowedIPs = 10.0.8.0/24, 10.20.10.0/24
- Encaminar trànsit privat i qualsevol IP pública de Clouding: AllowedIPs = 10.0.8.0/24, 10.20.10.0/24, 27.0.172.0/22,46.183.112.0/21,80.240.126.0/23,85.208.20.0/21,93.189.88.0/19,103.23.60.0/23,161.22.40.0/21,185.166.212.0/21,185.253.152.0/22,185.254.204.0/22,213.192.233.0/24,217.71.200.0/21
- Encaminar tot el trànsit: AllowedIPs = 0.0.0.0/0
Ara configurarem la nostra VPN tenint en compte aquestes variables:
- Interface > Private Key: deixarem el valor que ens ha aparegut en començar a crear el túnel.
- Interface > Addreess: indicarem la IP que volem que ens assigni la VPN.
- Peer > PublicKey: indicarem la clau pública del nostre servidor, la que hem generat a "Configuració de WireGuard".
- Peer > AllowedIPs: indicarem el trànsit que volem encaminar per la VPN.
- Peer > EndPoint: indicarem la IP pública del nostre servidor WireGuard i el port configurat a "Configuració de WireGuard".
El fitxer de configuració quedaria així:
[Interface]
PrivateKey = KJf30VdqaaPR0jjUqk9pEm++Hg+sXyStPH8Ou2ggeHQ=
Address = 10.0.8.10/24
[Peer]
PublicKey = 78MlX8LqV/SNpfvOrrD3nhJmBo0cGtHD94PimCGXSCE=
AllowedIPs = 10.0.8.0/24, 10.20.10.0/24
Endpoint = 185.254.204.xxx:51820Desarem els canvis i ara donarem d'alta el client al nostre servidor indicant la clau pública del nostre Windows:
# wg set wg0 peer vgJeO8S9ZDF4PkrwQPfahfpXS+qatvV4V37Q+g4AWH0= allowed-ips 10.0.8.10Ara ja podrem activar la nostra VPN amb el botó activate:
Client de WireGuard per a Linux o MacOS
Per configurar la nostra VPN a Linux o MacOS els passos són força similars. També podem descarregar el client de MacOS des de l'APP Store. Si volem configurar la VPN des de la línia d'ordres, els passos són molt similars als de la configuració del servidor.
El primer que farem serà generar la nostra clau pública i privada per al nostre PC amb:
# wg genkey | tee /etc/wireguard/privatekey | wg pubkey | tee /etc/wireguard/publickeyAra que ja tenim les claus creades podem configurar una interfície de xarxa per a WireGuard. Per fer-ho, crearem un fitxer de configuració:
# vi /etc/wireguard/wg0.confHi afegirem el contingut següent:
[Interface]
PrivateKey = KJf30VdqaaPR0jjUqk9pEm++Hg+sXyStPH8Ou2ggeHQ=
Address = 10.0.8.10/24
[Peer]
PublicKey = 78MlX8LqV/SNpfvOrrD3nhJmBo0cGtHD94PimCGXSCE=
AllowedIPs = 10.0.8.0/24, 10.20.10.0/24
Endpoint = 185.254.204.xxx:51820El fitxer de configuració és com el de Windows, podem triar quina IP volem fer servir i quins rangs volem encaminar. A Peer hem d'indicar la clau pública del nostre servidor WireGuard i a Interface la clau privada del nostre PC.
Desarem els canvis i ara donarem d'alta el client al nostre servidor indicant la clau pública del nostre PC:
# wg set wg0 peer vgJeO8S9ZDF4PkrwQPfahfpXS+qatvV4V37Q+g4AWH0= allowed-ips 10.0.8.10Ara ja podem activar o desactivar la nostra VPN amb:
# wg-quick up wg0
# wg-quick down wg0Prova de velocitat
Ha arribat el moment de les proves de velocitat. Hem fet aquesta prova amb una fibra de 300 Mbps amb pfSense + OpenVPN i un servidor amb Ubuntu + WireGuard. Els resultats parlen per si sols:
WireGuard:
OpenVPN:
Com podem veure en aquestes proves d'iperf, WireGuard ha estat molt més ràpid que OpenVPN.
Esperem haver-te ajudat amb aquest article. Si tens dubtes sobre aquesta o qualsevol altra qüestió relacionada amb els teus servidors a Clouding, escriu-nos a soporte@clouding.io. Som aquí per ajudar-te! 😉