<div style="width: 45%; margin-left: auto;">

</div>
<a rel="license" href="http://creativecommons.org/licenses/by-sa/4.0/"><img alt="Llicència de Creative Commons" style="border-width:0" src="https://i.creativecommons.org/l/by-sa/4.0/88x31.png" /></a><br />Aquesta obra està subjecta a una llicència de <a rel="license" href="http://creativecommons.org/licenses/by-sa/4.0/">Reconeixement-CompartirIgual 4.0 Internacional de Creative Commons</a>
# Pràctica intro a Wireguard
Com ja hem comentat a classe, Wireguard és un dels programaris de VPN més populars en l'actualitat juntament amb OpenVPN.
## Infraestructura

Per a realitzar correctament aquesta pràctica necessitareu 2 màquines virtuals a Isard (Box1 i Box2) amb la següent parametrització:
- __SO__: Ubuntu server 24.04 LTS
- __Hardware__:
- 2 vCPUS
- 4 GB de memòria RAM
- Xarxes: Default + Personal1
## Treball a classe
:eyes: :fire: El primer cop que s'arrenquin les màquines heu de configurar el nom de cada màquina de manera que amb les captures de pantalla de les consoles es pugui saber a quina màquina som i el nom de l'alumne que realitza l'activitat. Per això haureu d'executar la següent instrucció:
```bash=
hostnamectl set-hostname 'nom-host'
```
on el nom-host tindrà el format:
* o boxX-nom-cognom
****no poseu guions baixos
Per exemple: ```hostnamectl set-hostname 'box1-xavi-quesada'```
Continuareu configurant amb [Netplan](https://hackmd.io/@JdaXaviQ/H1vZQT0-bx) la interfície de xarxa de Personal1. Us proposo els següents fitxers de configuració:
```yaml=
# Configuració Box1
network:
ethernets:
enp1s0:
dhcp4: true
enp2s0:
addresses:
- 10.0.0.3/24
version: 2
```
```yaml=
# Configuració Box2
network:
ethernets:
enp1s0:
dhcp4: true
enp2s0:
addresses:
- 10.0.0.4/24
version: 2
```
1. (1 punt) Comproveu que podeu realitzar ping entre ambdues màquines. Adjunteu captura de pantalla.
2. (1 punt) Adjunteu captures de tots els passos.
- Instaleu el paquet wireguard a la màquina Box1.
- Aixequeu una nova interfície temporal de tipus Wireguard:
```bash=
sudo ip link add dev wg0 type wireguard
```
- Modifiqueu el fitxer de netplan d'aquesta màquina per a donar una adreça a la nova interfície. Noteu que les VPN funcionen amb espais d'adreces privades, la única condició és que sigui un espai d'adreces independent de la resta d'interfícies. A continuació teniu un exemple de configuració:
```yaml=
# Configuració Box1
network:
ethernets:
enp1s0:
dhcp4: true
enp2s0:
addresses:
- 10.0.0.3/24
wg0:
addresses:
- 10.0.1.101/24
version: 2
```
- Adjunteu captura provant que la interfície està activada realitzant un ping a aquesta interfície.
3. (1 punt) Adjunteu captura de cada pas.
- Instal·leu el paquet apache2.
- Reemplaceu el fitxer /var/www/html/index.html pel següent contingut:
```html=
<!DOCTYPE html>
<html>
<head>
<title>Pàgina d'ASIX2</title>
</head>
<body>
<h1>
Pàgina d'ASIX2
</h1>
</body>
</html>
```
4. (1 punt) Creació de claus.
Wireguard utlitza l'algorisme [Curve25519](https://ca.wikipedia.org/wiki/Curve25519) de criptografia asimètrica.
- Utilitzeu la comanda wg per a crear una nova clau privada.
```bash=
wg genkey > key
sudo wg set wg0 private-key key
sudo wg show
```
- No necessitem crear una clau pública perquè amb wireguard la podem crear a partir de la clau privada:
```bash=
wg pubkey < key
```
5. (3 punt) Connexió entre Peers.
Una interfície wireguard fa servir UDP.
Una interfície wireguard només respon a un paquet UDP si el remitent és un node de confiança.
Un node és de confiança si has registrat la seva clau pública com a un peer.
- Instal·la wireguard i configura wg0 a la màquina box2 amb l'adreça 10.0.1.102/24.
- Comprova que desde la mateixa box2 pots fer ping a la interfície wg0
- La id d'un node és la seva clau pública. Executa la comanda ```sudo wg show wg0``` a la box2 per a consultar la seva id i el port on està escoltant.
- Amb la clau pública de box2 podem anar a box1 i afegir-ne un nou peer de confiança:
```bash=
sudo wg set wg0 peer la_pubkey_de_box2 allowed-ips 10.10.0.102/32 endpoint 10.0.0.4:el_port_de_box2
```
- Executeu la comanda ```sudo wg show wg0``` per a comprovar que estem acceptant el peer box2.
- Repetiu els passos anteriors però afengint en aquesta ocasió el peer box1 a la màquina box2.
- Comproveu que hi ha connexió per la interfície de VPN

6. (3 punts) Integració de la configuració amb Netplan.
- Afegiu la següent configuració al fitxer Netplan d'ambdues màquines per a que es configuri automìcament el sistema:
```yaml=
network:
ethernets:
enp1s0:
dhcp4: true
enp2s0:
addresses:
- 10.0.0.3/24
tunnels:
wg0:
mode: wireguard
port: 51820
key: UMjI9WbobURkCDh2RT8SRM5osFI7siiR/sPOuuTIDns=
addresses:
- 172.16.0.1/24
peers:
- allowed-ips: [172.16.0.0/24]
endpoint: 10.86.126.56:51820
keys:
public: AIm+QeCoC23zInKASmhu6z/3iaT0R2IKraB7WwYB5ms=
```
On port és el port UDP d'escolta, key és la clau privada de la màquina que estem configurant i keys:->public és la clau pública del peer que volem aceptar.
- Lliureu captures de pantalla demostrant el funcionament i la configuració netplan.