Projet

Général

Profil

Wireguard » Historique » Version 15

Matthieu Herrb, 20/05/2019 18:23

1 10 Matthieu Herrb
{{>toc}}
2 10 Matthieu Herrb
3 1 Matthieu Herrb
h1. Wireguard
4 1 Matthieu Herrb
5 13 Matthieu Herrb
h2. Configuration pour adhérent·e·s
6 13 Matthieu Herrb
7 13 Matthieu Herrb
Il y a plusieurs modes d'installation possible, selon ton usage du VPN.
8 13 Matthieu Herrb
Le premier mode est une installation sur un PC Linux (portable ou fixe) et seul ce PC utilisera le VPN.
9 13 Matthieu Herrb
10 13 Matthieu Herrb
h3. Installation Linux
11 13 Matthieu Herrb
 
12 14 Matthieu Herrb
* Debian TODO
13 14 Matthieu Herrb
* Ubuntu TODO
14 14 Matthieu Herrb
* Arch TODO
15 13 Matthieu Herrb
16 13 Matthieu Herrb
h3. Génération des clés
17 13 Matthieu Herrb
18 13 Matthieu Herrb
<pre>
19 13 Matthieu Herrb
$ wg genkey | tee privatekey | wg pubkey > publickey
20 13 Matthieu Herrb
$ chmod 400 privatekey
21 13 Matthieu Herrb
</pre>
22 13 Matthieu Herrb
23 13 Matthieu Herrb
Le fichier @privatekey@ contient alors la clé privée, et le fichier @publickey@, surprise, la clé publique. 
24 13 Matthieu Herrb
25 13 Matthieu Herrb
Une fois cette étape terminée, envoie un mail à @question at tetaneutral point net@ avec les informations suivantes: 
26 13 Matthieu Herrb
27 13 Matthieu Herrb
<pre>
28 13 Matthieu Herrb
Sujet: demande de VPN
29 13 Matthieu Herrb
30 13 Matthieu Herrb
Nom/pseudo : ton nom ou ton pseudo
31 13 Matthieu Herrb
No d'adérent·e: si tu le connais
32 13 Matthieu Herrb
Clé publique: le contenu du fichier @publickey@ généré ci-dessus.
33 15 Matthieu Herrb
</pre>
34 13 Matthieu Herrb
35 13 Matthieu Herrb
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. 
36 13 Matthieu Herrb
37 13 Matthieu Herrb
Une fois que tu as ces informations, tu peux passer à l'étape suivante 
38 13 Matthieu Herrb
  
39 13 Matthieu Herrb
h3. Fichier de configuration 
40 13 Matthieu Herrb
41 13 Matthieu Herrb
Créée (avec les droits de root) @/etc/wireguard/wg0.conf@ contenant
42 13 Matthieu Herrb
43 13 Matthieu Herrb
<pre>
44 13 Matthieu Herrb
[Interface]
45 13 Matthieu Herrb
Address = <adresses données par tetaneutral.net>
46 13 Matthieu Herrb
DNS = 91.224.148.10,91.224.149.254
47 13 Matthieu Herrb
PrivateKey = <clé privée>
48 13 Matthieu Herrb
49 13 Matthieu Herrb
[Peer]
50 13 Matthieu Herrb
Publickey = <clé publique>
51 13 Matthieu Herrb
AllowedIPs = 0.0.0.0/0,::/0
52 13 Matthieu Herrb
EndPoint = 89.234.156.116:51820
53 13 Matthieu Herrb
PersistentKeepalive = 25
54 13 Matthieu Herrb
</pre>
55 13 Matthieu Herrb
56 13 Matthieu Herrb
Assure-toi que ce fichier n'est accessible en lecture que par root:
57 13 Matthieu Herrb
<pre>
58 13 Matthieu Herrb
$ sudo chmod 600 /etc/wireguard/wg0.conf
59 13 Matthieu Herrb
</pre>
60 13 Matthieu Herrb
61 13 Matthieu Herrb
h3. Démarrage du VPN
62 13 Matthieu Herrb
63 13 Matthieu Herrb
* Manuel : 
64 13 Matthieu Herrb
<pre>
65 13 Matthieu Herrb
wg-quick up wg0
66 13 Matthieu Herrb
</pre>
67 13 Matthieu Herrb
68 13 Matthieu Herrb
h2. Configuration serveur sur h10
69 13 Matthieu Herrb
70 13 Matthieu Herrb
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é.
71 13 Matthieu Herrb
72 13 Matthieu Herrb
h3. Routage
73 13 Matthieu Herrb
74 13 Matthieu Herrb
Sur h7: router les IP via h10:
75 13 Matthieu Herrb
76 13 Matthieu Herrb
Exemple:
77 13 Matthieu Herrb
<pre>
78 13 Matthieu Herrb
ip r add 185.119.170.3/32 via 91.224.148.143 dev eth3.3131
79 13 Matthieu Herrb
ip -6 r add 2a03:7220:8087:300::/56 via fe80::80:8f dev eth3.3131
80 13 Matthieu Herrb
</pre>
81 13 Matthieu Herrb
82 13 Matthieu Herrb
C'est fait automatiquement en indiquant @wireguard@ dans @ip_ttnn.txt@ comme route pour une IPv4
83 13 Matthieu Herrb
84 13 Matthieu Herrb
h3.Config globale sur h10
85 13 Matthieu Herrb
86 13 Matthieu Herrb
<pre>
87 13 Matthieu Herrb
# modprobe wireguard
88 13 Matthieu Herrb
# umask 077
89 13 Matthieu Herrb
# wg genkey > /etc/wireguard/private
90 13 Matthieu Herrb
# wg pubkey < /etc/wireguard/private > /etc/wireguard/public
91 13 Matthieu Herrb
# ip link add dev wg0 type wireguard
92 13 Matthieu Herrb
# ip a add dev wg0 10.99.0.1/32
93 13 Matthieu Herrb
# ip -6 a add dev wg0 fe80::31/128
94 13 Matthieu Herrb
# wg set wg0 private-key ./private listen-port 51820
95 13 Matthieu Herrb
# ip link set wg0 up
96 13 Matthieu Herrb
</pre>
97 13 Matthieu Herrb
98 13 Matthieu Herrb
99 13 Matthieu Herrb
h3. Pour chaque client, sur h10:
100 13 Matthieu Herrb
101 13 Matthieu Herrb
Exemple:
102 13 Matthieu Herrb
<pre>
103 13 Matthieu Herrb
# wg set wg0 peer <clé publique du client> allowed-ips 185.119.170.3/32,2a03:7220:8087:300::/56
104 13 Matthieu Herrb
# ip r add 185.119.170.3/32 dev wg0
105 13 Matthieu Herrb
# ip -6 r add 2a03:7220:8087:300::/56 dev wg0
106 13 Matthieu Herrb
</pre>
107 13 Matthieu Herrb
108 13 Matthieu Herrb
109 13 Matthieu Herrb
110 13 Matthieu Herrb
h2. Old tests VPN tetaneutral sur h9
111 1 Matthieu Herrb
112 9 Matthieu Herrb
h3. Configuration
113 10 Matthieu Herrb
114 11 Matthieu Herrb
Sur h7: router les IP via h9:
115 1 Matthieu Herrb
<pre>
116 11 Matthieu Herrb
ip r add 185.119.170.3/32 via 91.224.148.143 dev eth3.3131
117 11 Matthieu Herrb
ip -6 r add 2a03:7220:8087:300::/56 via fe80::80:8f dev eth3.3131
118 11 Matthieu Herrb
</pre>
119 11 Matthieu Herrb
120 11 Matthieu Herrb
Sur h9 config globale:
121 11 Matthieu Herrb
122 11 Matthieu Herrb
<pre>
123 1 Matthieu Herrb
# modprobe wireguard
124 1 Matthieu Herrb
# umask 077
125 1 Matthieu Herrb
# wg genkey > /etc/wireguard/private
126 1 Matthieu Herrb
# wg pubkey < /etc/wireguard/private > /etc/wireguard/public
127 1 Matthieu Herrb
# ip link add dev wg0 type wireguard
128 1 Matthieu Herrb
# ip a add dev wg0 10.99.0.1/32
129 1 Matthieu Herrb
# ip -6 a add dev wg0 fe80::31/128
130 6 Matthieu Herrb
# wg set wg0 private-key ./private listen-port 55769
131 1 Matthieu Herrb
# ip link set wg0 up
132 1 Matthieu Herrb
</pre>
133 1 Matthieu Herrb
134 11 Matthieu Herrb
135 1 Matthieu Herrb
Pour chaque client, sur h9:
136 1 Matthieu Herrb
137 1 Matthieu Herrb
<pre>
138 1 Matthieu Herrb
# wg set wg0 peer <clé publique du client> allowed-ips 185.119.170.3/32,2a03:7220:8087:300::/56
139 1 Matthieu Herrb
# ip r add 185.119.170.3/32 dev wg0
140 2 Matthieu Herrb
# ip -6 r add 2a03:7220:8087:300::/56 dev wg0
141 1 Matthieu Herrb
</pre>
142 1 Matthieu Herrb
143 11 Matthieu Herrb
h4. Config client openwrt
144 11 Matthieu Herrb
145 11 Matthieu Herrb
Dans @/etc/config/network@
146 11 Matthieu Herrb
147 1 Matthieu Herrb
<pre>
148 1 Matthieu Herrb
config interface 'vpn0'
149 1 Matthieu Herrb
        option proto 'wireguard'
150 5 Matthieu Herrb
        option private_key '<clé privée>'
151 1 Matthieu Herrb
        list addresses '185.119.170.3/32'
152 5 Matthieu Herrb
        list addresses '2a03:7220:8087:300::1/56'
153 1 Matthieu Herrb
154 1 Matthieu Herrb
config wireguard_vpn0
155 1 Matthieu Herrb
        option public_key 'DsIeOCRs/5uYdi8rLiBzRNmN4zUzKCQRqY3Sbl8NS0A=' # La clé publique de h9
156 1 Matthieu Herrb
        option route_allowed_ips '1'
157 1 Matthieu Herrb
        option endpoint_host '91.224.148.143'
158 1 Matthieu Herrb
        option endpoint_port '55769'
159 4 Matthieu Herrb
        option persistent_keepalive '25'
160 2 Matthieu Herrb
        list allowed_ips '0.0.0.0/0'
161 3 Matthieu Herrb
        list allowed_ips '::/0'
162 1 Matthieu Herrb
</pre>
163 1 Matthieu Herrb
164 12 Matthieu Herrb
h4. Config client debian 
165 11 Matthieu Herrb
166 11 Matthieu Herrb
Dans @/etc/rc.local@ pas de route par défaut configurée
167 11 Matthieu Herrb
168 1 Matthieu Herrb
<pre>
169 11 Matthieu Herrb
# wireguard
170 11 Matthieu Herrb
# route vers h9 
171 11 Matthieu Herrb
/bin/ip route add 91.224.148.143/32 via 192.168.31.200 dev eth0
172 11 Matthieu Herrb
173 11 Matthieu Herrb
/sbin/modprobe wireguard
174 11 Matthieu Herrb
/bin/ip link add dev wg0 type wireguard
175 11 Matthieu Herrb
/bin/ip a add dev wg0 185.119.170.2
176 11 Matthieu Herrb
/bin/ip -6 a add dev wg0 2a03:7220:8087:200::1/56
177 11 Matthieu Herrb
/usr/bin/wg set wg0 private-key /etc/wireguard/private 
178 11 Matthieu Herrb
/usr/bin/wg set wg0 peer DsIeOCRs/5uYdi8rLiBzRNmN4zUzKCQRqY3Sbl8NS0A= \
179 11 Matthieu Herrb
        endpoint  91.224.148.143:55769 \
180 11 Matthieu Herrb
        allowed-ips 0.0.0.0/0,::/0 \
181 11 Matthieu Herrb
        persistent-keepalive 25
182 11 Matthieu Herrb
/bin/ip link set wg0 up
183 11 Matthieu Herrb
184 11 Matthieu Herrb
/bin/ip route add 10.99.0.1 dev wg0
185 11 Matthieu Herrb
/bin/ip route add default via 10.99.0.1 dev wg0
186 11 Matthieu Herrb
/bin/ip -6 route add default via fe80::31 dev wg0
187 9 Matthieu Herrb
</pre>
188 9 Matthieu Herrb
189 9 Matthieu Herrb
h3. Status
190 9 Matthieu Herrb
191 9 Matthieu Herrb
<pre>
192 9 Matthieu Herrb
root@h9:~# wg show
193 9 Matthieu Herrb
interface: wg0
194 9 Matthieu Herrb
  public key: DsIeOCRs/5uYdi8rLiBzRNmN4zUzKCQRqY3Sbl8NS0A=
195 9 Matthieu Herrb
  private key: (hidden)
196 9 Matthieu Herrb
  listening port: 55769
197 9 Matthieu Herrb
198 9 Matthieu Herrb
peer: y4ydCem0bUQpryyiTxS2eMPtoHLD5iOGqth1f9xkfww=
199 9 Matthieu Herrb
  endpoint: 176.158.4.203:57103
200 9 Matthieu Herrb
  allowed ips: 185.119.170.3/32, 2a03:7220:8087:300::/56
201 9 Matthieu Herrb
  latest handshake: 1 minute, 27 seconds ago
202 9 Matthieu Herrb
  transfer: 1.08 MiB received, 1.92 MiB sent
203 9 Matthieu Herrb
204 9 Matthieu Herrb
peer: hUT6WhmUw6yRpwLX3R9Rh/8x1lZDk9JeX56We7zVvWc=
205 9 Matthieu Herrb
  endpoint: 176.158.4.203:57658
206 9 Matthieu Herrb
  allowed ips: 185.119.170.2/32, 2a03:7220:8087:200::/56
207 3 Matthieu Herrb
  latest handshake: 1 minute, 38 seconds ago
208 7 Matthieu Herrb
  transfer: 107.09 KiB received, 208.19 KiB sent
209 7 Matthieu Herrb
</pre>
210 7 Matthieu Herrb
211 8 Matthieu Herrb
h3. Déploiement
212 8 Matthieu Herrb
213 8 Matthieu Herrb
Remarque: clé privée des clients à garder privée...
214 8 Matthieu Herrb
215 8 Matthieu Herrb
Deux modes possibles :
216 8 Matthieu Herrb
217 8 Matthieu Herrb
# sur un PC de l'adhérent·e
218 8 Matthieu Herrb
219 8 Matthieu Herrb
 * iel installe wireguard
220 8 Matthieu Herrb
 * iel génère la clé privé et envoie à ttnn la clé publique
221 8 Matthieu Herrb
 * ttnn envoie la config à l'adhérent·e
222 8 Matthieu Herrb
 * Avantages :
223 8 Matthieu Herrb
224 8 Matthieu Herrb
  * performance
225 8 Matthieu Herrb
  * utilisable en mobilité
226 8 Matthieu Herrb
 * Inconvénients :
227 8 Matthieu Herrb
228 8 Matthieu Herrb
  * difficulté assistance installation initiale / dépannage
229 8 Matthieu Herrb
# Sur un routeur fourni par l'association
230 8 Matthieu Herrb
231 8 Matthieu Herrb
 * routeur un peu costaud (ZBT ou Archer C7)
232 8 Matthieu Herrb
 * on génère un firmware avec la config en dur
233 8 Matthieu Herrb
 * on fournit le routeur à l'adhérent·e (comme pour un accès radio)
234 8 Matthieu Herrb
 * Avantages :
235 8 Matthieu Herrb
236 8 Matthieu Herrb
  * simplicité pour l'adhérent·e
237 8 Matthieu Herrb
  * assistance
238 8 Matthieu Herrb
 * Inconvénients :
239 8 Matthieu Herrb
240 8 Matthieu Herrb
  * performances (à confirmer)
241 1 Matthieu Herrb
  * moins mobile