Installation de Wireguard sur Proxmox

Bonjour,

Je souhaiterai un petit coups de main pour la mise en place d’un VPN sous Wireguard.

Information sur la Machine:

  • IPV4: 192.168.1.5/24
  • Interface: ens18
  • Port : 51820

Installation :

  • echo « deb http://deb.debian.org/debian buster-backports main » > /etc/apt/sources.list.d/buster-backports.list
  • apt update
  • apt install -y wireguard
    apt install -y wireguard-tools wireguard-dkms linux-headers-$(uname -r)

Autoriser le forwarding:

  • sed -i ‹ s/#net.ipv4.ip_forward=1/net.ipv4.ip_forward=1/g › /etc/sysctl.conf
  • sysctl -w net.ipv4.ip_forward=1

Désactivation du Service pour la maintenance

systemctl disable wg-quick@wg0
systemctl stop wg-quick@wg0

Purge des anciennes clés

rm /etc/wireguard/wg0.conf
rm /etc/wireguard/privatekey
rm /etc/wireguard/publickey

Ajout des clés

  • echo « *********** » > /etc/wireguard/privatekey
  • echo « *********** » > /etc/wireguard/publickey (Le caractère est celui-ci " et pas «  » )

Configuration Serveur (nano /etc/wireguard/wg0.conf)

[Interface]
Address = 192.168.20.1/24
ListenPort = 51820
PrivateKey =
PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -t nat -A POSTROUTING -o ens18 -j MASQUERADE
PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -t nat -D POSTROUTING -o ens18 -j MASQUERADE

[Peer]
PublicKey = **********
AllowedIPs = 192.168.20.2/32

[Peer]
PublicKey = **********
AllowedIPs = 192.168.20.3/32

[Peer]
PublicKey = **********
AllowedIPs = 192.168.20.4/32

[Peer]
PublicKey = **********
AllowedIPs = 192.168.20.5/32

[Peer]
PublicKey = **********
AllowedIPs = 192.168.20.6/32

Fin de la maintenance du service

systemctl enable wg-quick@wg0 ;
systemctl start wg-quick@wg0 ;

Client:

sudo apt install openresolv

Site utiles:

https://www.wireguardconfig.com/

Je n’ai pas vue de point d’interrogation, quel est donc la question/problème ?

Le port 51820 est ouvert en UDP vers la machine 192.168.1.7

root@sldebian01:/etc# wg

interface: wg0
public key: peer: *************
private key: (hidden)
listening port: 51820
peer: *************
allowed ips: 192.168.20.2/32
peer: *************
allowed ips: 192.168.20.3/32
peer: *************
allowed ips: 192.168.20.4/32
peer:***************
allowed ips: 192.168.20.5/32
peer: *************

iptables -L

Chain INPUT (policy ACCEPT)
target prot opt source destination

Chain FORWARD (policy ACCEPT)
target prot opt source destination
ACCEPT all – anywhere anywhere

Chain OUTPUT (policy ACCEPT)
target prot opt source destination

Petite question bête, tu installes Wireguard sur l’hôte, une vraie machine virtuelle ou un conteneur ?

Bonjour,

Le service Wireguard et Adguardhome sont installés sur une Machine Virtuelle et j’ai réussi.

La configuration du client est important pour se connecter.

Infos:

Réseau: 192.168.1.0/24

Poste W10:

  • Poste: Windows 10 PRO
  • Adresse IP : 192.168.1.21
  • Port: 3389

Serveur: sldebian01

  1. Interface ens18 : 192.168.1.5
  2. Interface wg0: 192.168.30.1

Mon Poste:

Adresse: 192.168.30.2
DNS: 192.168.30.1 (Sldebian01)

Mon Poste > wg0 > Sldebian01 > ens18 > W10


Wireguard - Nettoyage d’ancienne version

apt autoremove --purge -y wireguard
rm -r /etc/wireguard

Wireguard - Ajout du dépôt Backports + Installation (Release: Buster)

sudo nano /etc/apt/sources.list.d/buster-backports.list
deb http://deb.debian.org/debian buster-backports main
apt update
apt install -y wireguard

Autoriser le Forwarding

nano /etc/sysctl.conf
#net.ipv4.ip_forward=1 en > net.ipv4.ip_forward=1
A chaud: /sbin/sysctl -w net.ipv4.ip_forward=1

Arrêt du service

systemctl disable wg-quick@wg0
systemctl stop wg-quick@wg0
systemctl status wg-quick@wg0

#################################################################################################

Aller sur le site wireguardconfig pour générer une configuration.

Noter bien la clé « Random Seed », c’est l’algorithme qui génère les clés Privée / Clients.
« Post-Up rule » et « Post-Down rule » contient le nom de l’interface à appliquer au niveau du pare-feu (eth0 par défaut)

La clé du serveur PRIVATE:
nano /etc/wireguard/privatekey

La clé du serveur PUBLIC :
nano /etc/wireguard/publickey

Configuration du serveur

nano /etc/wireguard/wg0.conf
Coller la configuration serveur

Rendre le fichier accessible qu’en ROOT

sudo chmod 600 /etc/wireguard/ -R

Activation du service

systemctl enable wg-quick@wg0
reboot
systemctl status wg-quick@wg0

Information:

L’adresse 10.0.0.1 sera l’adresse du serveur et donc l’adresse DNS pour votre client.
Les adresses X.X.X.2-4 sont les clients

Le /32 permet d’avoir que 2 IP disponibles . (Client et Serveur)


Client:
Le client se connectera au VPN ayant l’adresse teste.ddns.net:51820.
Le client utilisera le serveur DNS 10.0.0.1.

[Interface]
Address = 10.0.0.2/24
ListenPort = 51820
PrivateKey = ************
DNS = 10.0.0.1

[Peer]
PublicKey = ************
AllowedIPs = 0.0.0.0/0, ::/0
Endpoint = teste.ddns.net:51820

! A ce stade le client arrive juste à ce connecter sur le serveur VPN mais le SURF est KO. (DNS pas fonctionnel)

#################################################################################################

Installation du DNS ADGuardHome

cd /root/
wget https://static.adguard.com/adguardhome/release/AdGuardHome_linux_amd64.tar.gz -O - | tar -xz
./AdGuardHome/AdGuardHome -s install
./AdGuardHome/AdGuardHome -s status

Terminé l’installation du DNS via le navigateur
Lors de l’installation on peux bloquer l’accès au panel Web du DNS à un réseau pour éviter qu’il soit accessible pour le VPN.
Le port 3000 est pour l’installation et le 80 est pour gérer le panel une fois installé.

http//<IP_SERVEUR>:3000

! Une fois cette étape terminé, le client a une résolution DNS et donc le surf fonctionne.

#################################################################################################

Installer le paquet Iptabes-persistent

apt install -y iptables-persistent


Mon interface s’appel ens18 , donc à ajuster pour un autre nom d’interface.

|Description|Port|Protocol|XX|
|—|---|—|
En cours| |||

Iptables.sh

Reset le pare-feu

/sbin/iptables -t filter -F
/sbin/iptables -t filter -X

Bloquer tous le trafic

/sbin/iptables -t filter -P INPUT DROP
/sbin/iptables -t filter -P FORWARD DROP
/sbin/iptables -t filter -P OUTPUT DROP

Ne pas interrompre les connexions établies

/sbin/iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
/sbin/iptables -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT

Autorise les connexions entre loopback

/sbin/iptables -t filter -A INPUT -i lo -j ACCEPT
/sbin/iptables -t filter -A OUTPUT -o lo -j ACCEPT

Autoriser ICMP

/sbin/iptables -A INPUT -i ens18 -p icmp -j ACCEPT
iptables -A OUTPUT -o ens18 -p icmp -j ACCEPT

SSH

/sbin/iptables -t filter -A INPUT -p tcp --dport 22 -j ACCEPT
/sbin/iptables -t filter -A OUTPUT -p tcp --dport 22 -j ACCEPT

DNS

/sbin/iptables -t filter -A OUTPUT -p tcp --dport 53 -j ACCEPT
/sbin/iptables -t filter -A OUTPUT -p udp --dport 53 -j ACCEPT
/sbin/iptables -t filter -A INPUT -p tcp --dport 53 -j ACCEPT
/sbin/iptables -t filter -A INPUT -p udp --dport 53 -j ACCEPT

HTTP

/sbin/iptables -t filter -A OUTPUT -p tcp --dport 80 -j ACCEPT
/sbin/iptables -t filter -A INPUT -p tcp --dport 80 -j ACCEPT

HTTPS

/sbin/iptables -t filter -A OUTPUT -p tcp --dport 443 -j ACCEPT
/sbin/iptables -t filter -A INPUT -p tcp --dport 443 -j ACCEPT

AdGuardHome

/sbin/iptables -t filter -A INPUT -p tcp --dport 3000 -j ACCEPT

Wireguard

/sbin/iptables -t filter -A INPUT -p udp --dport 51820 -j ACCEPT

On accepte les paquets en provenance du VPN

/sbin/iptables -A FORWARD -i wg0 -j ACCEPT

On autorise également les paquets à destination du VPN

/sbin/iptables -A FORWARD -o wg0 -j ACCEPT

On effectue la traduction d’adresse entre l’IP publique du serveur et les clients

/sbin/iptables -t nat -A POSTROUTING -s 10.0.0.0/24 -o ens18 -j MASQUERADE

Mode Persistance:

/sbin/iptables-save >/etc/iptables/rules.v4

Activation du Service

systemctl enable netfilter-persistent
systemctl restart netfilter-persistent