# [Debian] Serveur Wireguard

## Introduction

**Wireguard** est un service VPN récent, sécurisé et performant.

Il peut fonctionner dans plusieurs configurations différentes mais utilise exclusivement le protocole **UDP**.

[![image.png](https://wiki.neopipe.fr/uploads/images/gallery/2024-02/scaled-1680-/5FVimage.png)](https://wiki.neopipe.fr/uploads/images/gallery/2024-02/5FVimage.png)

## Source

- [Tutoriel IT-Connect - Wireguard](https://www.it-connect.fr/mise-en-place-de-wireguard-vpn-sur-debian-11/)

## Installation du serveur

#### Réseau privé

Wireguard peut fonctionner en mode réseau simple, c'est à dire qu'il va vous permettre d'établir un réseau avec les hôtes que vous connecterez en mode **P2P**. Il n'y aura pas de serveur VPN à proprement parler ni une nouvelle passerelle par défaut pour les hôtes.

- Tout d'abord, installez le paquet **wireguard** :

```bash
apt install -y wireguard
```

Ensuite, éditez la configuration de votre premier noeud à travers le fichier **/etc/wireguard/wg0.conf** :

```
[Interface]
PrivateKey = <PRV_KEY>
Address = <SRV_IP>/<CIDR_IP>
ListenPort = 51820
```

- Dans un deuxième terminal, lancez la génération de :

1. La clé **privée** du serveur :  
    ```
    wg genkey | sudo tee /etc/wireguard/wg-private.key
    ```
2. La clé **publique** du serveur :  
    ```
    cat /etc/wireguard/wg-private.key | wg pubkey | sudo tee /etc/wireguard/wg-public.key
    ```

<p class="callout info">Vous pouvez réitérer les deux commandes ci-dessus pour générer une paire clé privée/publique pour chaque hôte du réseau VPN.</p>

Ensuite, pour chaque hôte, ajoutez cela dans la configuration du serveur :

```
[Peer]
PublicKey = <NODE_PUB_KEY>
AllowedIPs = <NET_ID>/<CIDR_MASK>
Endpoint = <PUBLIC_SERVER_IP>:51820
```

Une fois que vous avez configurer le serveur et les hôtes, vous pouvez démarrer le serveur wireguard :

```bash
wg-quick up wg0
```

Vous devinerez que pour l'éteindre il s'agit de cette commande :

```bash
wg-quick down wg0
```

Pour activer le service à chaque démarrage, exécutez la commande suivante :

```
systemctl enable wg-quick@wg0.service
```

## Installation des hôtes

Tout d'abord, installez le paquet **wireguard** :

```bash
apt install -y wireguard
```

Ensuite, créez le fichier de configuration du client **/etc/wireguard/wg0.conf** :

```
[Interface]
PrivateKey = <NODE_PRV_KEY>
Address = <NODE_VPN_IP>/<CIDR_IP>

[Peer]
PublicKey = <SRV_PUB_KEY>
AllowedIPs = <NET_ID>/<CIDR_MASK>
Endpoint = <PUBLIC_SRV_IP>:51820
```

Et démarrez wireguard :

```bash
wg-quick up wg0
```

## Générateur de configuration

Si vous êtes habituez à la configuration de Wireguard, vous verrez que vous pouvez gagner du temps grâce à ce générateur de fichier de config :

- [https://www.wireguardconfig.com/](https://www.wireguardconfig.com/)

## Script d'installation automatique

- [https://github.com/angristan/wireguard-install](https://github.com/angristan/wireguard-install)

Pour lancer le script :

```bash
curl -O https://raw.githubusercontent.com/angristan/wireguard-install/master/wireguard-install.sh && chmod +x wireguard-install.sh && ./wireguard-install.sh
```