Projet

Général

Profil

Wireguard » Historique » Version 38

xavier, 09/12/2019 23:57
wireguard accepté dans linux/net-next

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 38 xavier
Le 8 décembre 2019, Wireguard [a enfin fait son entrée dans la branche 'net-next' du noyau Linux](https://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next.git/commit/?id=e7096c131e5161fa3b8e52a650d7719d2857adfd) et pourrait donc faire partie intégrante de la version 5.6 prévue début 2020.
12
13
D'ici là le site officiel de Wireguard est clair -- c'est pas sec, même si ça marche bien :
14 27 xavier
15
> 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.
16
17
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.
18
19 36 xavier
{{include(infrastructure:Wireguard-Stretch-Bogue-934763)}}
20
21 29 xavier
## Chez Aquilenet
22
23
Wireguard n'est pas un remplacement complet d'une solution comme OpenVPN.
24
25
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.
26
27 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).
28 27 xavier
29 1 sacha
## Installation
30
31
https://www.wireguard.com/install/
32 23 xavier
33 37 xavier
Pour l'instant (2019-08-15), via DKMS dans le noyau Linux et en userspace écrit en GO (en cours de migration en Rust) sur les autres plateformes (*BSD, OpenWRT, Android, Windows).
34 35 xavier
35
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.
36 24 xavier
37 1 sacha
## Configuration
38
39 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]].**
40
41 1 sacha
### Serveur
42
43
~~~
44
umask 077
45
wg genkey > /etc/wireguard/private
46
wg genkey | tee /etc/wireguard/private | wg pubkey > /etc/wireguard/publickey
47
wg set wg0 private-key /etc/wireguard/private
48
ip link set wg0 up
49
50
cat << EOF > /etc/wireguard/wireguard.conf
51
[Interface]
52
ListenPort = 50000 
53
PrivateKey = `cat /etc/wireguard/private`
54
55
[Peer]
56
PublicKey = Va0X1zOpRc9471Aa3DEUUy7UkAv5aq5SojtIPqOSqwg=
57
AllowedIPs = 10.33.33.0/24
58
Endpoint = 185.233.100.19:50000
59
EOF
60
61
~~~
62
63
### Client
64
65
~~~
66
umask 077
67
wg genkey | tee /etc/wireguard/private | wg pubkey > /etc/wireguard/publickey
68
wg set wg0 private-key /etc/wireguard/private
69 17 stephanie.vieville
ip link add dev wg0 type wireguard
70 1 sacha
ip link set wg0 up
71 17 stephanie.vieville
72 1 sacha
~~~
73 2 sacha
74 12 louis.leveque
### Config serveur (Hypnos)
75
76
~~~
77
#!/bin/bash
78
79
set -x -e
80
81
# Creating the wireguard interface
82
ip link add dev wg0 type wireguard
83
84
# Setting the IP on the wireguard interface
85
ip address add dev wg0 185.233.101.127/24
86
87
# Configuring the wireguard server
88
wg set wg0 listen-port 50000 private-key /etc/wireguard/private
89
90
# Starting up the wireguard interface
91
ip link set up dev wg0
92
93
# Add Client
94
wg set wg0 peer W/iRbRNZhftkcmkfS/pUNcyDJ1YHB0cBEDigzed6+B0= allowed-ips 185.233.101.126/32
95
96
# Create the static route for the client
97
ip route add 185.233.101.126/32 dev wg0 proto static
98
~~~
99
100
### Config client
101
102
~~~
103
#!/bin/bash
104
105
set -e -x
106
107
# Creating the wireguard interface
108
ip link add dev wg0 type wireguard
109
110
# Setting the IP on the wireguard interface
111
ip address add dev wg0 185.233.101.126/24
112
113
# Configuring wireguard
114
wg set wg0 private-key ./private
115
116
# Starting up the wireguard interface
117
ip link set up dev wg0
118
119
# Connect to the server
120
wg set wg0 peer 'XRhI4WqBipwY21pxPZ9Q7EWkypnQCKKtJjqu2tUUTVo=' allowed-ips 0.0.0.0/0 endpoint 185.233.100.9:50000
121
~~~
122
123 4 sacha
### 1er test: @Sacha's Home (Fibre Bouygues) --> @Hypnos (VM Aquilenet)
124 3 sacha
125 2 sacha
~~~
126
127
root@hypnos:/etc/wireguard# iperf3 -s
128
-----------------------------------------------------------
129
Server listening on 5201
130
-----------------------------------------------------------
131
Accepted connection from 10.33.33.2, port 60038
132
[  5] local 10.33.33.1 port 5201 connected to 10.33.33.2 port 60040
133
[ ID] Interval           Transfer     Bandwidth
134
[  5]   0.00-1.00   sec  15.1 MBytes   127 Mbits/sec                  
135
[  5]   1.00-2.00   sec  19.9 MBytes   167 Mbits/sec                  
136
[  5]   2.00-3.00   sec  20.1 MBytes   169 Mbits/sec                  
137
[  5]   3.00-4.00   sec  20.1 MBytes   169 Mbits/sec                  
138
[  5]   4.00-5.00   sec  19.7 MBytes   166 Mbits/sec                  
139
[  5]   5.00-6.00   sec  20.0 MBytes   168 Mbits/sec                  
140
[  5]   6.00-7.00   sec  20.2 MBytes   169 Mbits/sec                  
141
[  5]   7.00-8.00   sec  20.2 MBytes   170 Mbits/sec                  
142
[  5]   8.00-9.00   sec  20.1 MBytes   169 Mbits/sec                  
143
[  5]   9.00-10.00  sec  20.2 MBytes   169 Mbits/sec                  
144
[  5]  10.00-10.03  sec   566 KBytes   165 Mbits/sec                  
145
- - - - - - - - - - - - - - - - - - - - - - - - -
146
[ ID] Interval           Transfer     Bandwidth
147
[  5]   0.00-10.03  sec  0.00 Bytes  0.00 bits/sec                  sender
148
[  5]   0.00-10.03  sec   196 MBytes   164 Mbits/sec                  receiver
149
-----------------------------------------------------------
150
Server listening on 5201
151
-----------------------------------------------------------
152
~~~
153
154
155
~~~
156
root@hypnos:/etc/wireguard# wg
157
interface: wg0
158
  public key: Va0X1zOpRc9471Aa3DEUUy7UkAv5aq5SojtIPqOSqwg=
159
  private key: (hidden)
160
  listening port: 50000
161
162
peer: VEfmgnq/aXPX3qBB7Q2fgxAawQdfUYZDRKEQSPC8tnA=
163
  endpoint: 5.51.0.155:3418
164
  allowed ips: 10.33.33.0/24
165
  latest handshake: 4 minutes, 30 seconds ago
166
  transfer: 208.75 MiB received, 6.68 MiB sent
167
~~~
168 5 sacha
169
## InstallDebian sur Apu2
170
171
https://blog.pgeiser.com/posts/2017/04/installing-debian-stretch-on-a-machine-without-a-graphic-card/
172 6 sacha
173 18 xavier
~~~
174 22 sacha
apt-get install aptitude \
175 18 xavier
     dhcpd resolvconf \
176
     curl dnsutils htop iperf3 tcpdump tmux whois \
177 1 sacha
     debian-security-support debsums needrestart
178 18 xavier
~~~
179 8 sacha
180
~~~
181
#!/bin/bash
182
gw=`ip  route | awk '/default/ { print $3 }'`
183 9 sacha
sysctl -w net.ipv4.ip_forward=1
184 8 sacha
ip link add dev wg0 type wireguard
185
ip address add dev wg0 10.33.33.2/24
186
ip link set up dev wg0
187
ip route add 185.233.100.19/32 via $gw dev enp1s0
188
ip route del default
189
ip route add default dev wg0
190
wg setconf wg0 /etc/wireguard/wg0.conf
191
~~~
192 10 sacha
193
https://git.zx2c4.com/WireGuard/about/src/tools/man/wg-quick.8
194
https://git.zx2c4.com/WireGuard/about/src/tools/wg.8
195 16 sacha
196
https://vincent.bernat.ch/fr/blog/2018-vpn-wireguard-route