Wireguard déploiement et routage

Installation

L'installation est très simple. Il y a beaucoup de sources disponibles sur internet. Perso j'ai suivi la doc de https://wiki.archlinux.org/title/WireGuard qui est très complète. L'installation et la connexion se révèle très simple et ne pose pas de problème particulier.

Configuration serveur

[Interface]
ListenPort = 51871
PrivateKey = (hidden)
Address = 192.168.10.1/24, fdc9:281f:04d7:9ee9::1/64

[Peer]
PublicKey = oENZzrPBIl1fBguDPNAzTEzBZtXh/3i1DoEXTBOg7jI=
AllowedIPs = 192.168.10.2/32,fdc9:281f:04d7:9ee9::2/128
Endpoint = [2a01:cb05:83c2:5300:6665:4c49:6699:c6ea]:51871

 

Configuration côté client

 

[Interface]
Address = 192.168.10.2/24, fdc9:281f:04d7:9ee9::2/64
ListenPort = 51871
PrivateKey = (hidden)

[Peer]
PublicKey = xOUJZ3xPKlZlXxpj7zOxK+7+5vT+Ey8iK38OnN/L8T0=
AllowedIPs = 0.0.0.0/0, ::/0
Endpoint = [2001:41d0:1:8c07::1]:51871

 

Routage des clients

Pour router l'ensemble du trafic des clients à travers le vpn, il y a quelques configurations à faire. Tout d'abord dans wireguard, il faut configurer les adresses autorisées côté client.

AllowedIPs = 0.0.0.0/0, ::/0 

Si vous oubliez cette partie, vous aurez des messages de type ping: sendmsg: Required key not available lorsque vous tenterez un ping vers une IP en dehors de votre réseau.

Pour cette partie, il est fortement recommandé d'utiliser le script wg-quick qui est inclus dans le paquet wireguard-tools. Ce script va prendre la configuration de votre interface dans /etc/wireguard/<interface>.conf pour créer l'interface réseau, lui associer les adresses IP que vous avez configurées et réaliser la partie la plus complexe qui est la création des règles de routage.

Ce script permet aussi de démarrer et arrêter simplement les tunnels.

Gestion du firewalling côté serveur

Côté serveur j'utilise firewalld pour gérer mes règles de firewall en fonction de différentes zones. J'ai tout d'abord créé une zone dédiée à wireguard que j'ai attaché à mon interface wg0. L'ensemble des fluxs de cette interface sont autorisés.

firewall-cmd --new-zone=wireguard --permanent 
firewall-cmd --reload 
firewall-cmd --zone=wireguard --set-target ACCEPT --permanent 
firewall-cmd --zone=wireguard --change-interface=wg0 
firewall-cmd --reload

Mon serveur est maintenant accessible depuis le client via le tunnel

[email protected] wireguard# ping 192.168.10.1 
PING 192.168.10.1 (192.168.10.1) 56(84) octets de données. 
64 octets de 192.168.10.1 : icmp_seq=1 ttl=64 temps=18.1 ms 
64 octets de 192.168.10.1 : icmp_seq=2 ttl=64 temps=17.7 ms 
64 octets de 192.168.10.1 : icmp_seq=3 ttl=64 temps=17.3 ms 
^C - statistiques ping 192.168.10.1 - 3 paquets transmis, 3 reçus, 0% packet loss, time 2003ms rtt min/avg/max/mdev = 17.258/17.676/18.085/0.337 ms

Par contre, je ne peux toujours pas accéder à internet à travers mon tunnel. Pour ce faire, il faut que j'active le masquerading (le SNAT automatique d'IPtables) à travers firewalld. Pour IPv4 pas de problème c'est supporté nativement dans firewalld et en plus il active automatiquement le forwarding d'ip.

firewall-cmd --zone=public --add-masquerade --permanent 
firewall-cmd --reload

Pour IPv6, il faut faire une "rich rule"

firewall-cmd add-rich-rule='rule family=ipv6 masquerade' --permanent
firewall-cmd --reload

et tadaaaaa notre client a maintenant accès à internet à travers wireguard en IPv4 et IPv6

PostgreSQL: Trouver des doublons dans une table

Dans PostgreSQL, il existe les window functions qui permettent de faire des calculs sur un ensemble d'éléments liés aux éléments courants. Dans le cas présent, nous allons demander à PostgreSQL de regrouper les éléments en fonction de la valeur de deux champs.Jeu de test :CREATE TABLE double (id  […]

Lire la suite

Mise en place de firewalld

IntroductionFirewallD est une surcouche à Iptables installée par défaut sur RedHat 7 et CentOS 7. Contrairement aux anciens modèles de parefeux (system-config-firewall/lokkit), chaque changement nécessitait un redémarrage complet du parefeu.FirewallD récupère les informations sur les règle parefeu  […]

Lire la suite

Pypi Mirroring

Installation d'un mirroir Pypi Local$ROOTDIR = Répertoire de stockage du projet.Création d'un virtualenv pour héberger le projetvirtualenv pypimirror Installation de pypimirrorsource pypimirror/bin/activate pip install pypimirror Depuis la version 1.0.15, il est demandé d'installer BeautifulSoup en  […]

Lire la suite

Utilisation de Fabric sous Windows

PrérequisUne version fonctionnelle de python. L'installation de Fabric nécessite pycrypto qui est assez compliqué à compiler.J'ai donc préféré chercher des binaires précompilés sur le net pycrypto-2.3.1.win7x64-py2.7x64.7z.Décompresser l'archive à la racine du virtualenv utilisé pour  […]

Lire la suite

Python sous windows

InstallationPour commencer télécharger l'installeur python2.7 sur le site officiel [http://python.org/ftp/python/2.7.4/python-2.7.4.msi](http://python.org/ftp/python/2.7.4/python-2.7.4.msi)Mise en place de setuptool et pipAfin de faciliter l'installation des paquets python, il faut installer  […]

Lire la suite

MySQL Procédures Stockées

J'ai eu besoin, dans le cadre d'un projet, de supprimer des lignes sur certaines tables contenant un ID spécifique. Cette manipulation devant se faire régulièrement, une procédure stockée a été créée.  DELIMITER $$  DROP PROCEDURE IF EXISTS DeleteOrphan$$  CREATE PROCEDURE DeleteOrphan(IN hwid INT)  […]

Lire la suite

PostgresSQL - Suppression de tables en fonction du Owner

Suite à une fausse manipulation, j'ai importé l'ensemble de mes bases de données dans la base template1. Conséquence, toutes les nouvelles bases de données créées le seraient avec le schéma de toutes les autres bases. C'est moche ! Le nombre de table étant importantes, j'ai donc créé une procédure  […]

Lire la suite

Serveur Bind en master / slave

Installer bind via l'outil de gestion de paquet du système (apt / yum / emerge)     apt-get/yum install named     emerge -av bind   Configuration du Master  Génération de la clé de transfert entre NS1 et NS2     /usr/sbin/dnssec-keygen -a HMAC-MD5 -b 512 -r /dev/urandom -n HOST ns2 Fichier  […]

Lire la suite

Installation D'une Gentoo Sur Dedibox SC

Me voila heureux possesseur d'une Dédibox SC. Mais la liste des OS disponibles dans la console d'installation ne me conviens pas du tout. J'ai donc décidé d'installer mon OS préféré, une gentoo.Etape 1 : Booter en mode rescueCette étape permets d'avoir accès au système car de base le serveur est  […]

Lire la suite

Haut de page