jmar.fr - Mot-clé - firewalld2024-03-21T10:25:25+01:00Jérémy MARMOLurn:md5:57a1d238704b01290e4c8939fd6c954dDotclearWireguard déploiement et routageurn:md5:b29cec66873c256e5d97d156e8a307ea2021-08-24T11:48:00+01:002021-08-24T14:56:00+01:00Jérémy MarmolSystèmefirewalldvpnwiregard <h2>Installation</h2>
<p>L'installation est très simple. Il y a beaucoup de sources disponibles sur internet. Perso j'ai suivi la doc de <a href="https://www.jmar.fr/post/2021/08/24/Archlinux">https://wiki.archlinux.org/title/WireGuard</a> 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.</p>
<h3>Configuration serveur</h3>
<pre>
<code class="language-ini">[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
</code></pre>
<p> </p>
<h3>Configuration côté client</h3>
<p> </p>
<pre>
<code class="language-ini">[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
</code></pre>
<p> </p>
<h2>Routage des clients</h2>
<p>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.</p>
<pre>
<code class="language-ini">AllowedIPs = 0.0.0.0/0, ::/0 </code></pre>
<p>Si vous oubliez cette partie, vous aurez des messages de type <strong>ping: sendmsg: Required key not available</strong> lorsque vous tenterez un ping vers une IP en dehors de votre réseau.</p>
<p>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.</p>
<p>Ce script permet aussi de démarrer et arrêter simplement les tunnels.</p>
<h2>Gestion du firewalling côté serveur</h2>
<p>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.</p>
<pre>
<code class="language-bash">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</code></pre>
<p>Mon serveur est maintenant accessible depuis le client via le tunnel</p>
<pre>
<code class="language-bash">root@ARCH 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</code></pre>
<p>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.</p>
<pre>
<code>firewall-cmd --zone=public --add-masquerade --permanent
firewall-cmd --reload</code></pre>
<p>Pour IPv6, il faut faire une "rich rule"</p>
<pre>
<code class="language-bash">firewall-cmd add-rich-rule='rule family=ipv6 masquerade' --permanent
firewall-cmd --reload</code></pre>
<p>et tadaaaaa notre client a maintenant accès à internet à travers wireguard en IPv4 et IPv6</p>https://www.jmar.fr/post/2021/08/24/Wireguard-d%C3%A9ploiement-et-routage#comment-formhttps://www.jmar.fr/feed/atom/comments/20