Projet

Général

Profil

Wireguard » Historique » Version 34

xavier, 15/08/2019 21:23
fixme

1 21 xavier
{{>toc}}
2
3 1 sacha
# Wireguard
4
5 14 sacha
Le VPN Kiss, utilisant les dernières règles de l'art, construit pour être audité & performant ! au revoir IPSec & OpenVPN !
6 20 xavier
7 25 xavier
Aquilenet utilise Wireguard avec succès depuis mi-2019, pour interconnecter une partie de ses [[îlots]] à son [[infrastructure:|cœur de réseau]].
8
9 26 xavier
## *Work In Progress*
10
11 27 xavier
Le site officiel de Wireguard est clair, c'est pas sec, même si ça marche bien :
12
13
> WireGuard is not yet complete. You should not rely on this code. It has not undergone proper degrees of security auditing and the protocol is still subject to change. We're working toward a stable 1.0 release, but that time has not yet come. There are experimental snapshots tagged with "0.0.YYYYMMDD", but these should not be considered real releases and they may contain security vulnerabilities (which would not be eligible for CVEs, since this is pre-release snapshot software). If you are packaging WireGuard, you must keep up to date with the snapshots.
14
15
Le principal auteur de Wireguard recommande aux utilisateurs de ne **pas** employer le client [TunSafe](http://tunsafe.com/), dont le [code source](https://github.com/TunSafe/TunSafe) est à cette date (août 2019) à l'arrêt depuis au moins 7 mois.
16
17 29 xavier
## Chez Aquilenet
18
19
Wireguard n'est pas un remplacement complet d'une solution comme OpenVPN.
20
21
Notamment, c'est une solution conçue en « pair à pair » et de « niveau 3 », donc pas de DHCP possible ;  le protocole n'offre pas (encore ?) d'alternative pour l'adressage des hôtes.
22
23 33 xavier
Nous avons configuré chaque pair « en dur » dans les fichiers de configuration des tunnels, avec des adresses IP publiques.  Cet adressage est déjà à revoir : au delà du pair que nous utilisons actuellement comme nœud de mise en relation ([[infrastructure:hypnos]]), les autres n'ont pas vocation à être joignables publiquement (hors des tunnels, ils ne sont joignables que sur des IP hors de notre contrôle).
24 27 xavier
25 1 sacha
## Installation
26
27
https://www.wireguard.com/install/
28 23 xavier
29
Dans le Kernel Linux : via DKMS pour l'instant (2019-08-15) et en userspace écrit en GO (en cours de migration en Rust) sur les autres plateformes (*BSD, OpenWRT, Android, Windows).
30
31
Pour Debian stable, au départ « Stretch » 9.8 et dorénavant « Buster » 10.0, des paquets `wireguard{,-dkms,-modules}` sont installables depuis le dépôt `unstable` (uniquement).  Les mises à jour y sont fréquentes, par exemple les versions disponibles au 2019-03-07 étaient les 0.0.20190227-1, celles disponibles au 2019-07-19 étaient les 0.0.20190702-1.
32 1 sacha
33 24 xavier
ATTENTION : sous Debian Stretch, [une bogue](https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=934763) introduite dans la dernière mise à jour du paquet des entêtes du noyau (2019-09-14), casse la compilation du module Wireguard.  Il reste possible de compiler le module avec la version précédente, puis de l'utiliser avec la dernière version du noyau.
34
35 1 sacha
## Configuration
36
37 34 xavier
**FIXME : tout ce qui suit est à vérifier/réviser/modifier ou déplacer vers les pages de [[infrastructure:hypnos]], [[infrastructure:thanatos]], [[infrastructure:meca]] ou [[infrastructure:pom]].**
38
39 1 sacha
### Serveur
40
41
~~~
42
umask 077
43
wg genkey > /etc/wireguard/private
44
wg genkey | tee /etc/wireguard/private | wg pubkey > /etc/wireguard/publickey
45
wg set wg0 private-key /etc/wireguard/private
46
ip link set wg0 up
47
48
cat << EOF > /etc/wireguard/wireguard.conf
49
[Interface]
50
ListenPort = 50000 
51
PrivateKey = `cat /etc/wireguard/private`
52
53
[Peer]
54
PublicKey = Va0X1zOpRc9471Aa3DEUUy7UkAv5aq5SojtIPqOSqwg=
55
AllowedIPs = 10.33.33.0/24
56
Endpoint = 185.233.100.19:50000
57
EOF
58
59
~~~
60
61
### Client
62
63
~~~
64
umask 077
65
wg genkey | tee /etc/wireguard/private | wg pubkey > /etc/wireguard/publickey
66
wg set wg0 private-key /etc/wireguard/private
67 17 stephanie.vieville
ip link add dev wg0 type wireguard
68 1 sacha
ip link set wg0 up
69 17 stephanie.vieville
70 1 sacha
~~~
71 2 sacha
72 12 louis.leveque
### Config serveur (Hypnos)
73
74
~~~
75
#!/bin/bash
76
77
set -x -e
78
79
# Creating the wireguard interface
80
ip link add dev wg0 type wireguard
81
82
# Setting the IP on the wireguard interface
83
ip address add dev wg0 185.233.101.127/24
84
85
# Configuring the wireguard server
86
wg set wg0 listen-port 50000 private-key /etc/wireguard/private
87
88
# Starting up the wireguard interface
89
ip link set up dev wg0
90
91
# Add Client
92
wg set wg0 peer W/iRbRNZhftkcmkfS/pUNcyDJ1YHB0cBEDigzed6+B0= allowed-ips 185.233.101.126/32
93
94
# Create the static route for the client
95
ip route add 185.233.101.126/32 dev wg0 proto static
96
~~~
97
98
### Config client
99
100
~~~
101
#!/bin/bash
102
103
set -e -x
104
105
# Creating the wireguard interface
106
ip link add dev wg0 type wireguard
107
108
# Setting the IP on the wireguard interface
109
ip address add dev wg0 185.233.101.126/24
110
111
# Configuring wireguard
112
wg set wg0 private-key ./private
113
114
# Starting up the wireguard interface
115
ip link set up dev wg0
116
117
# Connect to the server
118
wg set wg0 peer 'XRhI4WqBipwY21pxPZ9Q7EWkypnQCKKtJjqu2tUUTVo=' allowed-ips 0.0.0.0/0 endpoint 185.233.100.9:50000
119
~~~
120
121 4 sacha
### 1er test: @Sacha's Home (Fibre Bouygues) --> @Hypnos (VM Aquilenet)
122 3 sacha
123 2 sacha
~~~
124
125
root@hypnos:/etc/wireguard# iperf3 -s
126
-----------------------------------------------------------
127
Server listening on 5201
128
-----------------------------------------------------------
129
Accepted connection from 10.33.33.2, port 60038
130
[  5] local 10.33.33.1 port 5201 connected to 10.33.33.2 port 60040
131
[ ID] Interval           Transfer     Bandwidth
132
[  5]   0.00-1.00   sec  15.1 MBytes   127 Mbits/sec                  
133
[  5]   1.00-2.00   sec  19.9 MBytes   167 Mbits/sec                  
134
[  5]   2.00-3.00   sec  20.1 MBytes   169 Mbits/sec                  
135
[  5]   3.00-4.00   sec  20.1 MBytes   169 Mbits/sec                  
136
[  5]   4.00-5.00   sec  19.7 MBytes   166 Mbits/sec                  
137
[  5]   5.00-6.00   sec  20.0 MBytes   168 Mbits/sec                  
138
[  5]   6.00-7.00   sec  20.2 MBytes   169 Mbits/sec                  
139
[  5]   7.00-8.00   sec  20.2 MBytes   170 Mbits/sec                  
140
[  5]   8.00-9.00   sec  20.1 MBytes   169 Mbits/sec                  
141
[  5]   9.00-10.00  sec  20.2 MBytes   169 Mbits/sec                  
142
[  5]  10.00-10.03  sec   566 KBytes   165 Mbits/sec                  
143
- - - - - - - - - - - - - - - - - - - - - - - - -
144
[ ID] Interval           Transfer     Bandwidth
145
[  5]   0.00-10.03  sec  0.00 Bytes  0.00 bits/sec                  sender
146
[  5]   0.00-10.03  sec   196 MBytes   164 Mbits/sec                  receiver
147
-----------------------------------------------------------
148
Server listening on 5201
149
-----------------------------------------------------------
150
~~~
151
152
153
~~~
154
root@hypnos:/etc/wireguard# wg
155
interface: wg0
156
  public key: Va0X1zOpRc9471Aa3DEUUy7UkAv5aq5SojtIPqOSqwg=
157
  private key: (hidden)
158
  listening port: 50000
159
160
peer: VEfmgnq/aXPX3qBB7Q2fgxAawQdfUYZDRKEQSPC8tnA=
161
  endpoint: 5.51.0.155:3418
162
  allowed ips: 10.33.33.0/24
163
  latest handshake: 4 minutes, 30 seconds ago
164
  transfer: 208.75 MiB received, 6.68 MiB sent
165
~~~
166 5 sacha
167
## InstallDebian sur Apu2
168
169
https://blog.pgeiser.com/posts/2017/04/installing-debian-stretch-on-a-machine-without-a-graphic-card/
170 6 sacha
171 18 xavier
~~~
172 22 sacha
apt-get install aptitude \
173 18 xavier
     dhcpd resolvconf \
174
     curl dnsutils htop iperf3 tcpdump tmux whois \
175 1 sacha
     debian-security-support debsums needrestart
176 18 xavier
~~~
177 8 sacha
178
~~~
179
#!/bin/bash
180
gw=`ip  route | awk '/default/ { print $3 }'`
181 9 sacha
sysctl -w net.ipv4.ip_forward=1
182 8 sacha
ip link add dev wg0 type wireguard
183
ip address add dev wg0 10.33.33.2/24
184
ip link set up dev wg0
185
ip route add 185.233.100.19/32 via $gw dev enp1s0
186
ip route del default
187
ip route add default dev wg0
188
wg setconf wg0 /etc/wireguard/wg0.conf
189
~~~
190 10 sacha
191
https://git.zx2c4.com/WireGuard/about/src/tools/man/wg-quick.8
192
https://git.zx2c4.com/WireGuard/about/src/tools/wg.8
193 16 sacha
194
https://vincent.bernat.ch/fr/blog/2018-vpn-wireguard-route