VPN Client OpenWrt » Historique » Version 4
« Précédent -
Version 4/16
(diff) -
Suivant » -
Version actuelle
Julien Vaubourg, 29/08/2020 16:54
VPN Client OpenWrt¶
Introduction¶
Le routeur doit être assez puissant pour supporter les opérations de chiffrement de Wireguard (eg. TP-Link Archer C7).
Il doit avoir été préalablement flashé en OpenWrt.
Doc testée avec OpenWrt 19.07.3.
Exemple de configuration¶
On suppose que votre service Wireguard a été configuré comme suit côté Tetaneutral :
- Réseau IPv6:
2001:db8:dead:be00::/56
- Adresse IPv4:
203.0.113.42/32
- Clé privée Wireguard:
XF4wYSh/Ox9CoPl/YvFECu1DH6FQy7fLNUnur4sv9nM=
Variables et commandes à copier-coller¶
Se connecter en SSH au routeur pour obtenir un terminal sur OpenWrt.
Variables à personnaliser puis copier-coller dans le terminal du OpenWrt :
WG_ADH_NET6="2001:db8:dead:be00::" WG_ADH_ADDR4="203.0.113.42" WG_ADH_PRIV_KEY="XF4wYSh/Ox9CoPl/YvFECu1DH6FQy7fLNUnur4sv9nM="
Variables et commandes à copier-coller ensuite telles quelles dans le terminal du OpenWrt (sauf expert·e) :
# Change timezone uci set system.@system[0].zonename='Europe/Brussels' uci set system.@system[0].timezone='CET-1CEST,M3.5.0,M10.5.0/3' uci set system.ntp.enable_server="1" uci commit system /etc/init.d/sysntpd restart # Install wireguard opkg update opkg install wireguard luci-proto-wireguard # Global TTNN parameters WG_SRV_ADDR="h10.tetaneutral.net" WG_SRV_PORT="51820" WG_SRV_PUB_KEY="DsIeOCRs/5uYdi8rLiBzRNmN4zUzKCQRqY3Sbl8NS0A=" WG_ADH_ADDR6_WAN="${WG_ADH_NET6/0::/1::1}/64" WG_ADH_ADDR6_LAN="${WG_ADH_NET6/0::/2::1}/64" WG_ADH_ADDR4_WAN="${WG_ADH_ADDR4}/32" WG_LOCAL_IF="wg0" # Configure firewall uci rename firewall.@zone[0]="lan" uci rename firewall.@zone[1]="wan" uci rename firewall.@forwarding[0]="lan_wan" uci del_list firewall.wan.network="${WG_LOCAL_IF}" uci add_list firewall.wan.network="${WG_LOCAL_IF}" uci commit firewall /etc/init.d/firewall restart # Configure network uci -q delete network.${WG_LOCAL_IF} uci set network.${WG_LOCAL_IF}="interface" uci set network.${WG_LOCAL_IF}.proto="wireguard" uci set network.${WG_LOCAL_IF}.private_key="${WG_ADH_PRIV_KEY}" uci del network.lan.ip6assign uci add_list network.lan.ip6addr="${WG_ADH_ADDR6_LAN}" uci add_list network.${WG_LOCAL_IF}.addresses="${WG_ADH_ADDR6_WAN}" uci add_list network.${WG_LOCAL_IF}.addresses="${WG_ADH_ADDR4_WAN}" # Add TTNN VPN peer uci -q delete network.wgserver uci set network.wgserver="wireguard_${WG_LOCAL_IF}" uci set network.wgserver.public_key="${WG_SRV_PUB_KEY}" uci set network.wgserver.endpoint_host="${WG_SRV_ADDR}" uci set network.wgserver.endpoint_port="${WG_SRV_PORT}" uci set network.wgserver.route_allowed_ips="1" uci set network.wgserver.persistent_keepalive="25" uci add_list network.wgserver.allowed_ips="::/0" uci add_list network.wgserver.allowed_ips="0.0.0.0/0" # Preserve default route uci set network.wan6.metric="100" uci set network.wan.metric="100" uci commit network /etc/init.d/network restart
Tests¶
Se connecter en DHCP avec un Linux sur l'un des ports LAN du routeur.
Sur l'interface filaire du PC on devrait obtenir quelque chose qui ressemble à :
# ip address inet6 2001:db8:dead:be02:3e47:edd:f3cb:2e04/64 scope global dynamic mngtmpaddr inet 192.168.1.201/24 brd 192.168.1.255 scope global dynamic enp0s25 # ip -6 route default via fe80::4afe:7cde:fa1e:310b dev enp0s25 proto ra metric 1024 expires 1724sec hoplimit 64 pref medium # ip -4 route default via 192.168.1.1 dev enp0s25
Les IP retournées par curl devraient ressembler à :
# curl ip6.yunohost.org 2001:db8:dead:be02:3e47:edd:f3cb:2e04 # curl ip.yunohost.org 203.0.113.42
Notes sur IPv6¶
Avec cette configuration, le range IPv6 /56 fournit par Tetaneutral est réduit à un /64.
Il y a deux explications à ça :
- Tetaneutral ne fournit pas de range d'interco IPv6, il est donc nécessaire d'utiliser une partie du /56 pour relier le routeur à l'infra de l'asso (port WAN).
- Sur le port LAN il est préférable d'avoir un /64 pour satisfaire les pré-requis de l'autoconfiguration stateless (attribution des IP en fonction des adresses MAC).
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 :
* 2001:db8:dead:be00::/56 -- range complet * 2001:db8:dead:be01::/64 -- sous-réseau utilisé pour l'interco du WAN (pourrait être réduit) * 2001:db8:dead:be02::/64 -- sous-réseau utilisé pour les clients du LAN * 2001:db8:dead:be03::/64 -- sous-réseau libre [...] -- il y en a 254 de libres * 2001:db8:dead:beff::/64 -- sous-réseau libre
Débits¶
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...
Tests de débit avec un TP-Link Archer C7 :
- [Sans VPN] Down: 60 Mbps / Up: 40 Mbps
- [Avec VPN] Down: 25 Mbps / Up: 16 Mbps