Wireguard s’integra de manera completament transparent amb la resta d’elements del sistema perquè el que fa és crear interfícies virtuals que externament funcionen com qualsevol altra interfície física.
Afegeix una nova interfície mitjançant ip-link:
shell
box-1$ sudo ip link add dev wg0 type wireguard
Pots veure que s’ha creat la interfície:
shell
box1$ ip --brief addrlo UNKNOWN 127.0.0.1/8 ::1/128 enp1s0 UP 192.168.123.21/22 metric 100 fe80::5054:ff:fe6d:dc1b/64 enp2s0 UP 10.2.104.208/16 metric 100 fe80::5054:ff:fe6f:440e/64 enp3s0 UP 10.0.0.101/24 fe80::5054:ff:fe28:e931/64 wg0 DOWN
Xarxa
Una xarxa virtual funciona amb una xarxa IP privada.
Pots utilitzar la que vulguis, l’única condició és que no l’estigui fent servir una altra interfície.
Assigna una adreça IP privada a cada interfície amb ip-address:
shell
box-1$ sudo ip addr add dev wg0 10.10.0.101/24 box-1$ ip --brief addrlo UNKNOWN 127.0.0.1/8 ::1/128 enp1s0 UP 192.168.123.21/22 metric 100 fe80::5054:ff:fe6d:dc1b/64 enp2s0 UP 10.2.104.208/16 metric 100 fe80::5054:ff:fe6f:440e/64 enp3s0 UP 10.0.0.101/24 fe80::5054:ff:fe28:e931/64 wg0 DOWN 10.10.0.101/24
Activa la interfície amb ip-link:
shell
box-1$ sudo ip link set wg0 up
Verifica amb ping que la IP privada funciona:
shell
box-1$ ping 10.10.0.101PING 10.10.0.101 (10.10.0.101)56(84)bytes of data.64 bytes from 10.10.0.101: icmp_seq=1 ttl=64 time=0.033 ms64 bytes from 10.10.0.101: icmp_seq=2 ttl=64 time=0.033 ms^C--- 10.10.0.101 ping statistics ---2 packets transmitted, 2 received, 0% packet loss, time 1036msrtt min/avg/max/mdev = 0.033/0.033/0.033/0.000 ms
Nginx
A continuació prova amb nginx que la interfície wg0 funciona sense problemes.
shell
box-1$ sudo apt install -y nginxbox-1$ echo "box-1"|sudo tee /var/www/html/index.html
Verifica que le servidor nginx funciona a la IP 10.10.0.101:
shell
box-1$ curl 10.10.0.101box-1
Xarxa
Una xarxa té sentit si hi ha més d’un node connectat.
Identitat
Wireguard fa servir criptografia asimètrica Curve25519
La clau pública permet identificar els diferents nodes de la xarxa virtual.
Amb wg pots generar claus privades:
shell
box-1$ wg genkeygKwwK1zIljwcuNlWCo0nv4GJ9seARMX8B9h9+7Ph134=
Configura la interfície wg0 una la clau privada:
shell
box-1$ umask 077box-1$ wg genkey > keybox-1$ sudo wg set wg0 private-key key
Amb wg pots veure que la interfície wg0:
Està configurada amb una clau pública que és el seu identificador.
En el fitxer YAML anterior, key és la clau privada del segon peer i public és la clau pública del primer peer. endpoint és l’adreça IP del primer peer.