VPN Client OpenWrt » Historique » Version 6
Julien Vaubourg, 29/08/2020 20:55
1 | 1 | Julien Vaubourg | h1. VPN Client OpenWrt |
---|---|---|---|
2 | 1 | Julien Vaubourg | |
3 | 4 | Julien Vaubourg | h2. Introduction |
4 | 4 | Julien Vaubourg | |
5 | 1 | Julien Vaubourg | Le routeur doit être assez puissant pour supporter les opérations de chiffrement de Wireguard (eg. TP-Link Archer C7). |
6 | 1 | Julien Vaubourg | |
7 | 1 | Julien Vaubourg | Il doit avoir été préalablement flashé en OpenWrt. |
8 | 1 | Julien Vaubourg | |
9 | 2 | Julien Vaubourg | Doc testée avec OpenWrt 19.07.3. |
10 | 2 | Julien Vaubourg | |
11 | 1 | Julien Vaubourg | h2. Exemple de configuration |
12 | 1 | Julien Vaubourg | |
13 | 2 | Julien Vaubourg | On suppose que votre service Wireguard a été configuré comme suit côté Tetaneutral : |
14 | 1 | Julien Vaubourg | |
15 | 1 | Julien Vaubourg | * Réseau IPv6: <pre>2001:db8:dead:be00::/56</pre> |
16 | 1 | Julien Vaubourg | * Adresse IPv4: <pre>203.0.113.42/32</pre> |
17 | 1 | Julien Vaubourg | * Clé privée Wireguard: <pre>XF4wYSh/Ox9CoPl/YvFECu1DH6FQy7fLNUnur4sv9nM=</pre> |
18 | 1 | Julien Vaubourg | |
19 | 1 | Julien Vaubourg | h2. Variables et commandes à copier-coller |
20 | 1 | Julien Vaubourg | |
21 | 1 | Julien Vaubourg | Se connecter en SSH au routeur pour obtenir un terminal sur OpenWrt. |
22 | 1 | Julien Vaubourg | |
23 | 1 | Julien Vaubourg | Variables *à personnaliser* puis copier-coller dans le terminal du OpenWrt : |
24 | 1 | Julien Vaubourg | |
25 | 1 | Julien Vaubourg | <pre> |
26 | 1 | Julien Vaubourg | WG_ADH_NET6="2001:db8:dead:be00::" |
27 | 1 | Julien Vaubourg | WG_ADH_ADDR4="203.0.113.42" |
28 | 1 | Julien Vaubourg | WG_ADH_PRIV_KEY="XF4wYSh/Ox9CoPl/YvFECu1DH6FQy7fLNUnur4sv9nM=" |
29 | 1 | Julien Vaubourg | </pre> |
30 | 1 | Julien Vaubourg | |
31 | 1 | Julien Vaubourg | Variables et commandes à copier-coller ensuite *telles quelles* dans le terminal du OpenWrt (sauf expert·e) : |
32 | 1 | Julien Vaubourg | |
33 | 1 | Julien Vaubourg | <pre> |
34 | 2 | Julien Vaubourg | # Change timezone |
35 | 5 | Julien Vaubourg | uci set system.@system[0].zonename="Europe/Brussels" |
36 | 5 | Julien Vaubourg | uci set system.@system[0].timezone="CET-1CEST,M3.5.0,M10.5.0/3" |
37 | 2 | Julien Vaubourg | uci set system.ntp.enable_server="1" |
38 | 2 | Julien Vaubourg | uci commit system |
39 | 2 | Julien Vaubourg | /etc/init.d/sysntpd restart |
40 | 2 | Julien Vaubourg | |
41 | 1 | Julien Vaubourg | # Install wireguard |
42 | 1 | Julien Vaubourg | opkg update |
43 | 1 | Julien Vaubourg | opkg install wireguard luci-proto-wireguard |
44 | 1 | Julien Vaubourg | |
45 | 1 | Julien Vaubourg | # Global TTNN parameters |
46 | 1 | Julien Vaubourg | WG_SRV_ADDR="h10.tetaneutral.net" |
47 | 1 | Julien Vaubourg | WG_SRV_PORT="51820" |
48 | 1 | Julien Vaubourg | WG_SRV_PUB_KEY="DsIeOCRs/5uYdi8rLiBzRNmN4zUzKCQRqY3Sbl8NS0A=" |
49 | 6 | Julien Vaubourg | WG_ADH_ADDR6_LAN="${WG_ADH_NET6}1/64" |
50 | 1 | Julien Vaubourg | WG_ADH_ADDR4_WAN="${WG_ADH_ADDR4}/32" |
51 | 1 | Julien Vaubourg | WG_LOCAL_IF="wg0" |
52 | 1 | Julien Vaubourg | |
53 | 1 | Julien Vaubourg | # Configure firewall |
54 | 1 | Julien Vaubourg | uci rename firewall.@zone[0]="lan" |
55 | 1 | Julien Vaubourg | uci rename firewall.@zone[1]="wan" |
56 | 1 | Julien Vaubourg | uci rename firewall.@forwarding[0]="lan_wan" |
57 | 1 | Julien Vaubourg | uci del_list firewall.wan.network="${WG_LOCAL_IF}" |
58 | 1 | Julien Vaubourg | uci add_list firewall.wan.network="${WG_LOCAL_IF}" |
59 | 1 | Julien Vaubourg | uci commit firewall |
60 | 1 | Julien Vaubourg | /etc/init.d/firewall restart |
61 | 1 | Julien Vaubourg | |
62 | 1 | Julien Vaubourg | # Configure network |
63 | 1 | Julien Vaubourg | uci -q delete network.${WG_LOCAL_IF} |
64 | 1 | Julien Vaubourg | uci set network.${WG_LOCAL_IF}="interface" |
65 | 1 | Julien Vaubourg | uci set network.${WG_LOCAL_IF}.proto="wireguard" |
66 | 1 | Julien Vaubourg | uci set network.${WG_LOCAL_IF}.private_key="${WG_ADH_PRIV_KEY}" |
67 | 1 | Julien Vaubourg | uci del network.lan.ip6assign |
68 | 1 | Julien Vaubourg | uci add_list network.lan.ip6addr="${WG_ADH_ADDR6_LAN}" |
69 | 1 | Julien Vaubourg | uci add_list network.${WG_LOCAL_IF}.addresses="${WG_ADH_ADDR4_WAN}" |
70 | 1 | Julien Vaubourg | |
71 | 1 | Julien Vaubourg | # Add TTNN VPN peer |
72 | 1 | Julien Vaubourg | uci -q delete network.wgserver |
73 | 1 | Julien Vaubourg | uci set network.wgserver="wireguard_${WG_LOCAL_IF}" |
74 | 1 | Julien Vaubourg | uci set network.wgserver.public_key="${WG_SRV_PUB_KEY}" |
75 | 1 | Julien Vaubourg | uci set network.wgserver.endpoint_host="${WG_SRV_ADDR}" |
76 | 1 | Julien Vaubourg | uci set network.wgserver.endpoint_port="${WG_SRV_PORT}" |
77 | 1 | Julien Vaubourg | uci set network.wgserver.route_allowed_ips="1" |
78 | 1 | Julien Vaubourg | uci set network.wgserver.persistent_keepalive="25" |
79 | 1 | Julien Vaubourg | uci add_list network.wgserver.allowed_ips="::/0" |
80 | 1 | Julien Vaubourg | uci add_list network.wgserver.allowed_ips="0.0.0.0/0" |
81 | 1 | Julien Vaubourg | |
82 | 1 | Julien Vaubourg | # Preserve default route |
83 | 1 | Julien Vaubourg | uci set network.wan6.metric="100" |
84 | 1 | Julien Vaubourg | uci set network.wan.metric="100" |
85 | 1 | Julien Vaubourg | uci commit network |
86 | 1 | Julien Vaubourg | /etc/init.d/network restart |
87 | 1 | Julien Vaubourg | </pre> |
88 | 1 | Julien Vaubourg | |
89 | 1 | Julien Vaubourg | h2. Tests |
90 | 1 | Julien Vaubourg | |
91 | 1 | Julien Vaubourg | Se connecter en DHCP avec un Linux sur l'un des ports LAN du routeur. |
92 | 1 | Julien Vaubourg | |
93 | 1 | Julien Vaubourg | Sur l'interface filaire du PC on devrait obtenir quelque chose qui ressemble à : |
94 | 1 | Julien Vaubourg | |
95 | 1 | Julien Vaubourg | <pre> |
96 | 1 | Julien Vaubourg | # ip address |
97 | 1 | Julien Vaubourg | inet6 2001:db8:dead:be02:3e47:edd:f3cb:2e04/64 scope global dynamic mngtmpaddr |
98 | 1 | Julien Vaubourg | inet 192.168.1.201/24 brd 192.168.1.255 scope global dynamic enp0s25 |
99 | 1 | Julien Vaubourg | |
100 | 1 | Julien Vaubourg | # ip -6 route |
101 | 1 | Julien Vaubourg | default via fe80::4afe:7cde:fa1e:310b dev enp0s25 proto ra metric 1024 expires 1724sec hoplimit 64 pref medium |
102 | 1 | Julien Vaubourg | |
103 | 1 | Julien Vaubourg | # ip -4 route |
104 | 1 | Julien Vaubourg | default via 192.168.1.1 dev enp0s25 |
105 | 1 | Julien Vaubourg | </pre> |
106 | 1 | Julien Vaubourg | |
107 | 1 | Julien Vaubourg | Les IP retournées par curl devraient ressembler à : |
108 | 1 | Julien Vaubourg | |
109 | 1 | Julien Vaubourg | <pre> |
110 | 1 | Julien Vaubourg | # curl ip6.yunohost.org |
111 | 1 | Julien Vaubourg | 2001:db8:dead:be02:3e47:edd:f3cb:2e04 |
112 | 1 | Julien Vaubourg | |
113 | 1 | Julien Vaubourg | # curl ip.yunohost.org |
114 | 1 | Julien Vaubourg | 203.0.113.42 |
115 | 1 | Julien Vaubourg | </pre> |
116 | 1 | Julien Vaubourg | |
117 | 1 | Julien Vaubourg | h2. Notes sur IPv6 |
118 | 1 | Julien Vaubourg | |
119 | 6 | Julien Vaubourg | Avec cette configuration, le range IPv6 /56 fournit par Tetaneutral est réduit à un /64 pour satisfaire les pré-requis de l'autoconfiguration stateless (attribution des IP en fonction des adresses MAC). |
120 | 1 | Julien Vaubourg | |
121 | 6 | Julien Vaubourg | Si vous souhaitez utiliser le range IPv6 pour faire des sous-réseaux, libre à vous d'ajouter des routes en utilisant ses sous-réseaux, par exemple avec les /64 restants : |
122 | 1 | Julien Vaubourg | |
123 | 1 | Julien Vaubourg | <pre> |
124 | 1 | Julien Vaubourg | * 2001:db8:dead:be00::/56 -- range complet |
125 | 6 | Julien Vaubourg | * 2001:db8:dead:be00::/64 -- sous-réseau utilisé pour l'interco du WAN (pourrait être lui-même réduit) |
126 | 6 | Julien Vaubourg | * 2001:db8:dead:be01::/64 -- sous-réseau libre |
127 | 6 | Julien Vaubourg | [...] |
128 | 1 | Julien Vaubourg | * 2001:db8:dead:beff::/64 -- sous-réseau libre |
129 | 3 | Julien Vaubourg | </pre> |
130 | 2 | Julien Vaubourg | |
131 | 2 | Julien Vaubourg | h2. Débits |
132 | 1 | Julien Vaubourg | |
133 | 4 | Julien Vaubourg | Les tests de débit (genre avec _speedtest.net_) sont toujours un peu aléatoires, mais il n'est pas étonnant que le VPN écrase un peu les débits. Cependant, le CPU ne semble pas particulièrement sollicité durant le test... |
134 | 2 | Julien Vaubourg | |
135 | 4 | Julien Vaubourg | Tests de débit avec un TP-Link Archer C7 : |
136 | 2 | Julien Vaubourg | |
137 | 2 | Julien Vaubourg | * [Sans VPN] Down: 60 Mbps / Up: 40 Mbps |
138 | 2 | Julien Vaubourg | * [Avec VPN] Down: 25 Mbps / Up: 16 Mbps |