Wireguard » Historique » Version 18
Version 17 (Matthieu Herrb, 20/05/2019 18:24) → Version 18/23 (Matthieu Herrb, 21/05/2019 11:31)
{{>toc}}
h1. Wireguard
h2. Configuration pour adhérent·e·s
Il y a plusieurs modes d'installation possible, selon ton usage du VPN.
Le premier mode est une installation sur un PC Linux (portable ou fixe) et seul ce PC utilisera le VPN.
h3. Installation Linux
* Debian TODO
* Ubuntu TODO
* Arch TODO
h3. Génération des clés
<pre>
$ wg genkey | tee privatekey | wg pubkey > publickey
$ chmod 400 privatekey
</pre>
Le fichier @privatekey@ contient alors la clé privée, et le fichier @publickey@, surprise, la clé publique.
Une fois cette étape terminée, envoie un mail à @question at tetaneutral point net@ avec les informations suivantes:
<pre>
Sujet: demande de VPN
Nom/pseudo : ton nom ou ton pseudo
No d'adérent·e: si tu le connais
Clé publique: le contenu du fichier publickey généré ci-dessus.
</pre>
Normalement, on va préparer la configuration de ton VPN coté serveur et te répondre (ça peut prendre quelques jours) en te communicant les adresses IP (v4 et v6) affectées à ton VPN.
Une fois que tu as ces informations, tu peux passer à l'étape suivante
h3. Fichier de configuration
Créée (avec les droits de root) @/etc/wireguard/wg0.conf@ contenant :
<pre>
[Interface]
Address = <adresses données par tetaneutral.net>
DNS = 91.224.148.10,91.224.149.254
PrivateKey = <clé privée>
[Peer]
Publickey = <clé publique>
AllowedIPs = 0.0.0.0/0,::/0
EndPoint = 89.234.156.116:51820
PersistentKeepalive = 25
</pre>
Assure-toi que ce fichier n'est accessible en lecture que par root:
<pre>
$ sudo chmod 600 /etc/wireguard/wg0.conf
</pre>
h3. Démarrage du VPN
* Manuel :
<pre>
wg-quick up wg0
</pre>
h2. Configuration serveur sur h10
Cette section ne concerne que les bénévoles qui veulent aider, ou les curieu·ses·x qui veulent voir comment c'est fait de l'autre coté.
h3. Routage
Sur h7: router les IP via h10:
Exemple:
<pre>
ip r add 185.119.170.3/32 via 91.224.148.143 dev eth3.3131
ip -6 r add 2a03:7220:8087:300::/56 via fe80::80:8f dev eth3.3131
</pre>
C'est fait automatiquement en indiquant @wireguard@ dans @ip_ttnn.txt@ comme route pour une IPv4
h3.Config globale sur h10
<pre>
# modprobe wireguard
# umask 077
# wg genkey > /etc/wireguard/private
# wg pubkey < /etc/wireguard/private > /etc/wireguard/public
# ip link add dev wg0 type wireguard
# ip a add dev wg0 10.99.0.1/32
# ip -6 a add dev wg0 fe80::31/128
# wg set wg0 private-key ./private listen-port 51820
# ip link set wg0 up
</pre>
h3. Pour chaque client, sur h10:
Exemple:
<pre>
# wg set wg0 peer <clé publique du client> allowed-ips 185.119.170.3/32,2a03:7220:8087:300::/56
# ip r add 185.119.170.3/32 dev wg0
# ip -6 r add 2a03:7220:8087:300::/56 dev wg0
</pre>
h2. Old tests VPN tetaneutral sur h9
h3. Configuration
Sur h7: router les IP via h9:
<pre>
ip r add 185.119.170.3/32 via 91.224.148.143 dev eth3.3131
ip -6 r add 2a03:7220:8087:300::/56 via fe80::80:8f dev eth3.3131
</pre>
Sur h9 config globale:
<pre>
# modprobe wireguard
# umask 077
# wg genkey > /etc/wireguard/private
# wg pubkey < /etc/wireguard/private > /etc/wireguard/public
# ip link add dev wg0 type wireguard
# ip a add dev wg0 10.99.0.1/32
# ip -6 a add dev wg0 fe80::31/128
# wg set wg0 private-key ./private listen-port 55769
# ip link set wg0 up
</pre>
Pour chaque client, sur h9:
<pre>
# wg set wg0 peer <clé publique du client> allowed-ips 185.119.170.3/32,2a03:7220:8087:300::/56
# ip r add 185.119.170.3/32 dev wg0
# ip -6 r add 2a03:7220:8087:300::/56 dev wg0
</pre>
h4. Config client openwrt
Dans @/etc/config/network@
<pre>
config interface 'vpn0'
option proto 'wireguard'
option private_key '<clé privée>'
list addresses '185.119.170.3/32'
list addresses '2a03:7220:8087:300::1/56'
config wireguard_vpn0
option public_key 'DsIeOCRs/5uYdi8rLiBzRNmN4zUzKCQRqY3Sbl8NS0A=' # La clé publique de h9
option route_allowed_ips '1'
option endpoint_host '91.224.148.143'
option endpoint_port '55769'
option persistent_keepalive '25'
list allowed_ips '0.0.0.0/0'
list allowed_ips '::/0'
</pre>
h4. Config client debian
Dans @/etc/rc.local@ pas de route par défaut configurée
<pre>
# wireguard
# route vers h9
/bin/ip route add 91.224.148.143/32 via 192.168.31.200 dev eth0
/sbin/modprobe wireguard
/bin/ip link add dev wg0 type wireguard
/bin/ip a add dev wg0 185.119.170.2
/bin/ip -6 a add dev wg0 2a03:7220:8087:200::1/56
/usr/bin/wg set wg0 private-key /etc/wireguard/private
/usr/bin/wg set wg0 peer DsIeOCRs/5uYdi8rLiBzRNmN4zUzKCQRqY3Sbl8NS0A= \
endpoint 91.224.148.143:55769 \
allowed-ips 0.0.0.0/0,::/0 \
persistent-keepalive 25
/bin/ip link set wg0 up
/bin/ip route add 10.99.0.1 dev wg0
/bin/ip route add default via 10.99.0.1 dev wg0
/bin/ip -6 route add default via fe80::31 dev wg0
</pre>
h3. Status
<pre>
root@h9:~# wg show
interface: wg0
public key: DsIeOCRs/5uYdi8rLiBzRNmN4zUzKCQRqY3Sbl8NS0A=
private key: (hidden)
listening port: 55769
peer: y4ydCem0bUQpryyiTxS2eMPtoHLD5iOGqth1f9xkfww=
endpoint: 176.158.4.203:57103
allowed ips: 185.119.170.3/32, 2a03:7220:8087:300::/56
latest handshake: 1 minute, 27 seconds ago
transfer: 1.08 MiB received, 1.92 MiB sent
peer: hUT6WhmUw6yRpwLX3R9Rh/8x1lZDk9JeX56We7zVvWc=
endpoint: 176.158.4.203:57658
allowed ips: 185.119.170.2/32, 2a03:7220:8087:200::/56
latest handshake: 1 minute, 38 seconds ago
transfer: 107.09 KiB received, 208.19 KiB sent
</pre>
h3. Déploiement
Remarque: clé privée des clients à garder privée...
Deux modes possibles :
# sur un PC de l'adhérent·e
* iel installe wireguard
* iel génère la clé privé et envoie à ttnn la clé publique
* ttnn envoie la config à l'adhérent·e
* Avantages :
* performance
* utilisable en mobilité
* Inconvénients :
* difficulté assistance installation initiale / dépannage
# Sur un routeur fourni par l'association
* routeur un peu costaud (ZBT ou Archer C7)
* on génère un firmware avec la config en dur
* on fournit le routeur à l'adhérent·e (comme pour un accès radio)
* Avantages :
* simplicité pour l'adhérent·e
* assistance
* Inconvénients :
* performances (à confirmer)
* moins mobile
h1. Wireguard
h2. Configuration pour adhérent·e·s
Il y a plusieurs modes d'installation possible, selon ton usage du VPN.
Le premier mode est une installation sur un PC Linux (portable ou fixe) et seul ce PC utilisera le VPN.
h3. Installation Linux
* Debian TODO
* Ubuntu TODO
* Arch TODO
h3. Génération des clés
<pre>
$ wg genkey | tee privatekey | wg pubkey > publickey
$ chmod 400 privatekey
</pre>
Le fichier @privatekey@ contient alors la clé privée, et le fichier @publickey@, surprise, la clé publique.
Une fois cette étape terminée, envoie un mail à @question at tetaneutral point net@ avec les informations suivantes:
<pre>
Sujet: demande de VPN
Nom/pseudo : ton nom ou ton pseudo
No d'adérent·e: si tu le connais
Clé publique: le contenu du fichier publickey généré ci-dessus.
</pre>
Normalement, on va préparer la configuration de ton VPN coté serveur et te répondre (ça peut prendre quelques jours) en te communicant les adresses IP (v4 et v6) affectées à ton VPN.
Une fois que tu as ces informations, tu peux passer à l'étape suivante
h3. Fichier de configuration
Créée (avec les droits de root) @/etc/wireguard/wg0.conf@ contenant :
<pre>
[Interface]
Address = <adresses données par tetaneutral.net>
DNS = 91.224.148.10,91.224.149.254
PrivateKey = <clé privée>
[Peer]
Publickey = <clé publique>
AllowedIPs = 0.0.0.0/0,::/0
EndPoint = 89.234.156.116:51820
PersistentKeepalive = 25
</pre>
Assure-toi que ce fichier n'est accessible en lecture que par root:
<pre>
$ sudo chmod 600 /etc/wireguard/wg0.conf
</pre>
h3. Démarrage du VPN
* Manuel :
<pre>
wg-quick up wg0
</pre>
h2. Configuration serveur sur h10
Cette section ne concerne que les bénévoles qui veulent aider, ou les curieu·ses·x qui veulent voir comment c'est fait de l'autre coté.
h3. Routage
Sur h7: router les IP via h10:
Exemple:
<pre>
ip r add 185.119.170.3/32 via 91.224.148.143 dev eth3.3131
ip -6 r add 2a03:7220:8087:300::/56 via fe80::80:8f dev eth3.3131
</pre>
C'est fait automatiquement en indiquant @wireguard@ dans @ip_ttnn.txt@ comme route pour une IPv4
h3.Config globale sur h10
<pre>
# modprobe wireguard
# umask 077
# wg genkey > /etc/wireguard/private
# wg pubkey < /etc/wireguard/private > /etc/wireguard/public
# ip link add dev wg0 type wireguard
# ip a add dev wg0 10.99.0.1/32
# ip -6 a add dev wg0 fe80::31/128
# wg set wg0 private-key ./private listen-port 51820
# ip link set wg0 up
</pre>
h3. Pour chaque client, sur h10:
Exemple:
<pre>
# wg set wg0 peer <clé publique du client> allowed-ips 185.119.170.3/32,2a03:7220:8087:300::/56
# ip r add 185.119.170.3/32 dev wg0
# ip -6 r add 2a03:7220:8087:300::/56 dev wg0
</pre>
h2. Old tests VPN tetaneutral sur h9
h3. Configuration
Sur h7: router les IP via h9:
<pre>
ip r add 185.119.170.3/32 via 91.224.148.143 dev eth3.3131
ip -6 r add 2a03:7220:8087:300::/56 via fe80::80:8f dev eth3.3131
</pre>
Sur h9 config globale:
<pre>
# modprobe wireguard
# umask 077
# wg genkey > /etc/wireguard/private
# wg pubkey < /etc/wireguard/private > /etc/wireguard/public
# ip link add dev wg0 type wireguard
# ip a add dev wg0 10.99.0.1/32
# ip -6 a add dev wg0 fe80::31/128
# wg set wg0 private-key ./private listen-port 55769
# ip link set wg0 up
</pre>
Pour chaque client, sur h9:
<pre>
# wg set wg0 peer <clé publique du client> allowed-ips 185.119.170.3/32,2a03:7220:8087:300::/56
# ip r add 185.119.170.3/32 dev wg0
# ip -6 r add 2a03:7220:8087:300::/56 dev wg0
</pre>
h4. Config client openwrt
Dans @/etc/config/network@
<pre>
config interface 'vpn0'
option proto 'wireguard'
option private_key '<clé privée>'
list addresses '185.119.170.3/32'
list addresses '2a03:7220:8087:300::1/56'
config wireguard_vpn0
option public_key 'DsIeOCRs/5uYdi8rLiBzRNmN4zUzKCQRqY3Sbl8NS0A=' # La clé publique de h9
option route_allowed_ips '1'
option endpoint_host '91.224.148.143'
option endpoint_port '55769'
option persistent_keepalive '25'
list allowed_ips '0.0.0.0/0'
list allowed_ips '::/0'
</pre>
h4. Config client debian
Dans @/etc/rc.local@ pas de route par défaut configurée
<pre>
# wireguard
# route vers h9
/bin/ip route add 91.224.148.143/32 via 192.168.31.200 dev eth0
/sbin/modprobe wireguard
/bin/ip link add dev wg0 type wireguard
/bin/ip a add dev wg0 185.119.170.2
/bin/ip -6 a add dev wg0 2a03:7220:8087:200::1/56
/usr/bin/wg set wg0 private-key /etc/wireguard/private
/usr/bin/wg set wg0 peer DsIeOCRs/5uYdi8rLiBzRNmN4zUzKCQRqY3Sbl8NS0A= \
endpoint 91.224.148.143:55769 \
allowed-ips 0.0.0.0/0,::/0 \
persistent-keepalive 25
/bin/ip link set wg0 up
/bin/ip route add 10.99.0.1 dev wg0
/bin/ip route add default via 10.99.0.1 dev wg0
/bin/ip -6 route add default via fe80::31 dev wg0
</pre>
h3. Status
<pre>
root@h9:~# wg show
interface: wg0
public key: DsIeOCRs/5uYdi8rLiBzRNmN4zUzKCQRqY3Sbl8NS0A=
private key: (hidden)
listening port: 55769
peer: y4ydCem0bUQpryyiTxS2eMPtoHLD5iOGqth1f9xkfww=
endpoint: 176.158.4.203:57103
allowed ips: 185.119.170.3/32, 2a03:7220:8087:300::/56
latest handshake: 1 minute, 27 seconds ago
transfer: 1.08 MiB received, 1.92 MiB sent
peer: hUT6WhmUw6yRpwLX3R9Rh/8x1lZDk9JeX56We7zVvWc=
endpoint: 176.158.4.203:57658
allowed ips: 185.119.170.2/32, 2a03:7220:8087:200::/56
latest handshake: 1 minute, 38 seconds ago
transfer: 107.09 KiB received, 208.19 KiB sent
</pre>
h3. Déploiement
Remarque: clé privée des clients à garder privée...
Deux modes possibles :
# sur un PC de l'adhérent·e
* iel installe wireguard
* iel génère la clé privé et envoie à ttnn la clé publique
* ttnn envoie la config à l'adhérent·e
* Avantages :
* performance
* utilisable en mobilité
* Inconvénients :
* difficulté assistance installation initiale / dépannage
# Sur un routeur fourni par l'association
* routeur un peu costaud (ZBT ou Archer C7)
* on génère un firmware avec la config en dur
* on fournit le routeur à l'adhérent·e (comme pour un accès radio)
* Avantages :
* simplicité pour l'adhérent·e
* assistance
* Inconvénients :
* performances (à confirmer)
* moins mobile