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 |