Projet

Général

Profil

Wireguard » Historique » Version 42

xavier, 21/02/2020 02:12

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 40 xavier
Enfin, **Wireguard n'est pas un remplacement complet d'une solution comme OpenVPN** : c'est une solution conçue en « pair à pair » et de « niveau 3 » ( notamment, pas de DHCP possible au sien du tunnel ) ;  le protocole n'offre pas ( encore ? ) d'alternative pour l'adressage des hôtes.
22
23
24 29 xavier
## Chez Aquilenet
25
26 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).
27 27 xavier
28 1 sacha
## Installation
29
30
https://www.wireguard.com/install/
31 23 xavier
32 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).
33 35 xavier
34
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.
35 24 xavier
36 1 sacha
## Configuration
37
38 42 xavier
**Voir plutôt [[infrastructure:Pom_buster_install_2019-07]] pour une configuration détaillée.**
39 41 xavier
40
**Tout ce qui suit est *a priori* obsolète, voire à déplacer vers les pages de [[infrastructure:hypnos]], [[infrastructure:thanatos]], [[infrastructure:meca]] ou [[infrastructure:pom]].**
41 34 xavier
42 1 sacha
### Serveur
43
44
~~~
45
umask 077
46
wg genkey > /etc/wireguard/private
47
wg genkey | tee /etc/wireguard/private | wg pubkey > /etc/wireguard/publickey
48
wg set wg0 private-key /etc/wireguard/private
49
ip link set wg0 up
50
51
cat << EOF > /etc/wireguard/wireguard.conf
52
[Interface]
53
ListenPort = 50000 
54
PrivateKey = `cat /etc/wireguard/private`
55
56
[Peer]
57
PublicKey = Va0X1zOpRc9471Aa3DEUUy7UkAv5aq5SojtIPqOSqwg=
58
AllowedIPs = 10.33.33.0/24
59
Endpoint = 185.233.100.19:50000
60
EOF
61
62
~~~
63
64
### Client
65
66
~~~
67
umask 077
68
wg genkey | tee /etc/wireguard/private | wg pubkey > /etc/wireguard/publickey
69
wg set wg0 private-key /etc/wireguard/private
70 17 stephanie.vieville
ip link add dev wg0 type wireguard
71 1 sacha
ip link set wg0 up
72 17 stephanie.vieville
73 1 sacha
~~~
74 2 sacha
75 12 louis.leveque
### Config serveur (Hypnos)
76
77
~~~
78
#!/bin/bash
79
80
set -x -e
81
82
# Creating the wireguard interface
83
ip link add dev wg0 type wireguard
84
85
# Setting the IP on the wireguard interface
86
ip address add dev wg0 185.233.101.127/24
87
88
# Configuring the wireguard server
89
wg set wg0 listen-port 50000 private-key /etc/wireguard/private
90
91
# Starting up the wireguard interface
92
ip link set up dev wg0
93
94
# Add Client
95
wg set wg0 peer W/iRbRNZhftkcmkfS/pUNcyDJ1YHB0cBEDigzed6+B0= allowed-ips 185.233.101.126/32
96
97
# Create the static route for the client
98
ip route add 185.233.101.126/32 dev wg0 proto static
99
~~~
100
101
### Config client
102
103
~~~
104
#!/bin/bash
105
106
set -e -x
107
108
# Creating the wireguard interface
109
ip link add dev wg0 type wireguard
110
111
# Setting the IP on the wireguard interface
112
ip address add dev wg0 185.233.101.126/24
113
114
# Configuring wireguard
115
wg set wg0 private-key ./private
116
117
# Starting up the wireguard interface
118
ip link set up dev wg0
119
120
# Connect to the server
121
wg set wg0 peer 'XRhI4WqBipwY21pxPZ9Q7EWkypnQCKKtJjqu2tUUTVo=' allowed-ips 0.0.0.0/0 endpoint 185.233.100.9:50000
122
~~~
123
124 4 sacha
### 1er test: @Sacha's Home (Fibre Bouygues) --> @Hypnos (VM Aquilenet)
125 3 sacha
126 2 sacha
~~~
127
128
root@hypnos:/etc/wireguard# iperf3 -s
129
-----------------------------------------------------------
130
Server listening on 5201
131
-----------------------------------------------------------
132
Accepted connection from 10.33.33.2, port 60038
133
[  5] local 10.33.33.1 port 5201 connected to 10.33.33.2 port 60040
134
[ ID] Interval           Transfer     Bandwidth
135
[  5]   0.00-1.00   sec  15.1 MBytes   127 Mbits/sec                  
136
[  5]   1.00-2.00   sec  19.9 MBytes   167 Mbits/sec                  
137
[  5]   2.00-3.00   sec  20.1 MBytes   169 Mbits/sec                  
138
[  5]   3.00-4.00   sec  20.1 MBytes   169 Mbits/sec                  
139
[  5]   4.00-5.00   sec  19.7 MBytes   166 Mbits/sec                  
140
[  5]   5.00-6.00   sec  20.0 MBytes   168 Mbits/sec                  
141
[  5]   6.00-7.00   sec  20.2 MBytes   169 Mbits/sec                  
142
[  5]   7.00-8.00   sec  20.2 MBytes   170 Mbits/sec                  
143
[  5]   8.00-9.00   sec  20.1 MBytes   169 Mbits/sec                  
144
[  5]   9.00-10.00  sec  20.2 MBytes   169 Mbits/sec                  
145
[  5]  10.00-10.03  sec   566 KBytes   165 Mbits/sec                  
146
- - - - - - - - - - - - - - - - - - - - - - - - -
147
[ ID] Interval           Transfer     Bandwidth
148
[  5]   0.00-10.03  sec  0.00 Bytes  0.00 bits/sec                  sender
149
[  5]   0.00-10.03  sec   196 MBytes   164 Mbits/sec                  receiver
150
-----------------------------------------------------------
151
Server listening on 5201
152
-----------------------------------------------------------
153
~~~
154
155
156
~~~
157
root@hypnos:/etc/wireguard# wg
158
interface: wg0
159
  public key: Va0X1zOpRc9471Aa3DEUUy7UkAv5aq5SojtIPqOSqwg=
160
  private key: (hidden)
161
  listening port: 50000
162
163
peer: VEfmgnq/aXPX3qBB7Q2fgxAawQdfUYZDRKEQSPC8tnA=
164
  endpoint: 5.51.0.155:3418
165
  allowed ips: 10.33.33.0/24
166
  latest handshake: 4 minutes, 30 seconds ago
167
  transfer: 208.75 MiB received, 6.68 MiB sent
168
~~~
169 5 sacha
170
## InstallDebian sur Apu2
171
172
https://blog.pgeiser.com/posts/2017/04/installing-debian-stretch-on-a-machine-without-a-graphic-card/
173 6 sacha
174 18 xavier
~~~
175 22 sacha
apt-get install aptitude \
176 18 xavier
     dhcpd resolvconf \
177
     curl dnsutils htop iperf3 tcpdump tmux whois \
178 1 sacha
     debian-security-support debsums needrestart
179 18 xavier
~~~
180 8 sacha
181
~~~
182
#!/bin/bash
183
gw=`ip  route | awk '/default/ { print $3 }'`
184 9 sacha
sysctl -w net.ipv4.ip_forward=1
185 8 sacha
ip link add dev wg0 type wireguard
186
ip address add dev wg0 10.33.33.2/24
187
ip link set up dev wg0
188
ip route add 185.233.100.19/32 via $gw dev enp1s0
189
ip route del default
190
ip route add default dev wg0
191
wg setconf wg0 /etc/wireguard/wg0.conf
192
~~~
193 10 sacha
194
https://git.zx2c4.com/WireGuard/about/src/tools/man/wg-quick.8
195
https://git.zx2c4.com/WireGuard/about/src/tools/wg.8
196 16 sacha
197
https://vincent.bernat.ch/fr/blog/2018-vpn-wireguard-route