VPN Wireguard sur Samsung Galaxy S8 Android 8 Oreo (rooté)

Android 26 févr. 2018

Update 27/02, j’ai trouvé un autre kernel et une autre ROM compatible. Je pense cependant que ce kernel est compatible avec 90% des ROM basées sur Oreo (dév/stables)

 

J’utilise le VPN Wireguard depuis quelques mois maintenant à la place ou en alternance avec mes OpenVPN. Wireguard est le VPN “à la mode” même si pas encore totalement finalisé (pas de client Windows par exemple). Pourquoi à la mode ? Pas pour faire beau mais parce qu’il est plus léger qu’OpenVPN, plus simple à mettre en place (enfin pas plus compliqué du moins), plus rapide (constaté notamment avec ma super ligne ADSL 2.4Mbps… où le moindre octet de vitesse compte !) et plus sécurisé. J’entre pas dans la technique, mais vous pouvez lire cette page concernant son protocole, sa vérification (via le process Tamarin) et des comparaisons de vitesse vs OpenVPN.

Si ce VPN n’est pas encore à adopter en environnement professionnel il est en tous cas en l’état tout à fait viable pour “ses affaires personnelles” :)

 

 

 

Côté serveur

Le serveur Wireguard se met sur un serveur dédié ou virtuel (VPS). Attention, du fait que c’est un module du noyau (kernel) de votre machine, tous les kernels ne sont pas compatibles. Si sur dédié vous n’aurez sans doute aucun problème il n’en sera pas de même sur VPS : aucun VPS basé sur OpenVZ (ProxMox < 3.x par exemple) ne sera compatible. 

Pour l’installer je vous recommande d’utiliser Streisand. Pour le côté fun, ou pas (mais c’est intéressant), vous pouvez aussi l’installer une fois à la main.

L’installer à la main (Linux, OSX and co). Utiliser Streisand (Linux, OSX and co) / Docker

Une fois votre serveur installé vous obtenez ou ou des fichiers de configuration, comme pour OpenVPN

# "proud-fashion" - Streisand WireGuard Client Profile
[Interface]
Address = 10.192.122.2/32
# The use of DNS below effectively expands to:
#   PostUp = echo nameserver 10.192.122.1 | resolvconf -a tun.%i -m 0 -x
#   PostDown = resolvconf -d tun.%i
# If the use of resolvconf is not desirable, simply remove the DNS line
# and use a variant of the PostUp/PostDown lines above.
# The IP address of the DNS server that is available via the encrypted
# WireGuard interface is 10.192.122.1.
DNS = 10.192.122.1
PrivateKey = CF/OPI0sqE+LekvMOpA315klh4no0mY2h6+UfDwulGk=

[Peer]
PublicKey = RAMLZS12aRlVoYj+3xLfAKF+D2QGoI1Md1o7iPEnxjs=
AllowedIPs = 0.0.0.0/0
Endpoint = IP_de_votre_serveur/VPS:port_wireguard

 

 

Côté client

Rien de compliqué, il suffit d’installer Wireguard selon votre distribution (module kernel). Bien évidemment ça veut dire pas de Windows. Vous pouvez toujours tricher pour Windows en y installant une VM Linux sur laquelle vous faites tourner votre client Wireguard et vous forcez ensuite Windows à utiliser la VM pour tout le trafic Internet. Ou alors… vous faites tourner une VM avec le client Wireguard et un client Bittorrent ou autre… Où vous investissez dans un Raspi qui sert de relais entre votre PC et votre box FAI. Bref, c’est pas simple j’en conviens mais y’a des solutions.

Il ne reste qu’à charger le fameux fichier client qui se nomme par défaut wg0-client.conf

Et comme Wireguard est un module du kernel vous êtes assuré qu’il tourne du moment que votre machine cliente est allumée. Enfin du moins si vous avez activé le service ^^  Par exemple

sudo systemctl enable wg-quick@wg0

 

 

Sur Galaxy S8

Bref, j’en viens à mon Galaxy S8. Android est basé sur Linux, donc un kernel, donc je devais pouvoir utiliser Wireguard. Sauf que… … …tous les kernels ne sont pas compatibles et si (quasi) tout utilisateur de Linux sait modifier son kernel, sur Android c’est une autre aventure :) J’ai donc cherché un kernel adapté, il en existe 1 !   DEUX \o/

Ensuite il fallait aussi trouver la ROM compatible. Je fais partie de ceux qui modifient leur ROM pour diverses raisons, la 1ère étant pour avoir plus de liberté/fonctionnalités et moins de conneries : root, 0 application Samsung, 0 application Google (où juste le Store), ajout d’Xposed etc.

Pour ceux qui ne savent pas trop comment changer une ROM j’avais donné des explications dans cet article.

  1. Via TWRP flasher la ROM de Soldier9312 (Oreo stable – détails ici)
  2. Toujours dans TWRP flasher le kernel TGP
    1. j’ai rooté avec Magisk (c’est la v16, la dernière)
    2. ajout spectrum puis enforcing (meilleure sécurité) et évidemment de wireguard
    3. pas de wipe à la fin avant le reboot
  3. Rebooter et apprécier !

 

Update 27/02, j’ai trouvé un autre kernel et une autre ROM compatible. Je pense cependant que ce kernel est compatible avec 90% des ROM basées sur Oreo (dév/stables)

  1. Via TWRP flasher la ROM d’ambasadii (Oreo stable – v3.3 en ce moment) & rebooter, installer (ou pas) votre smartphone
  2. Toujours dans TWRP flasher le kernel Notorious (ne contient pas de root)
    1. rebooter
    2. lancer Magisk, installé via la ROM, qui dira qu’il n’est pas installé (aka le smartphone n’est pas rooté). Télécharger le .zip & rebooter
    3. via TWRP flasher Magisk (v16 ce soir) + wipe cache/Dalvik
  3. Rebooter, installer Wireguard et apprécier !

S8 rooté, sans application Samsung, juste un Store Google, Magisk, Xposed fonctionne et Wireguard tourne au poil :)

 

Mots clés