Projet

Général

Profil

Wireguard » Historique » Version 15

« Précédent - Version 15/23 (diff) - Suivant » - Version actuelle
Matthieu Herrb, 20/05/2019 18:23


Wireguard

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.

Installation Linux

  • Debian TODO
  • Ubuntu TODO
  • Arch TODO

Génération des clés

$ wg genkey | tee privatekey | wg pubkey > publickey
$ chmod 400 privatekey

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:

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.

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

Fichier de configuration

Créée (avec les droits de root) /etc/wireguard/wg0.conf contenant

[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

Assure-toi que ce fichier n'est accessible en lecture que par root:

$ sudo chmod 600 /etc/wireguard/wg0.conf

Démarrage du VPN

  • Manuel :
    wg-quick up wg0
    

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é.

Routage

Sur h7: router les IP via h10:

Exemple:

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

C'est fait automatiquement en indiquant wireguard dans ip_ttnn.txt comme route pour une IPv4

h3.Config globale sur h10

# 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

Pour chaque client, sur h10:

Exemple:

# 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

Old tests VPN tetaneutral sur h9

Configuration

Sur h7: router les IP via h9:

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

Sur h9 config globale:

# 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

Pour chaque client, sur h9:

# 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

Config client openwrt

Dans /etc/config/network

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'

Config client debian

Dans /etc/rc.local pas de route par défaut configurée

# 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

Status

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

Déploiement

Remarque: clé privée des clients à garder privée...

Deux modes possibles :

  1. 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
  2. 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