Wireguard » Historique » Version 14
Matthieu Herrb, 20/05/2019 18:22
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 | 13 | 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 |