Comment réparer la connexion VPN L2TP/IpSec PSK sur Android ICS 4.0.x

Block Email Spam
SHARE WITH YOUR NETWORK!

Table of Contents

Comment réparer la connexion VPN L2TP/IpSec PSK sur Android ICS 4.0.x

J’ai un problème depuis un certain temps maintenant : mes appareils Android Ice Cream Sandwich (ICS) n’ont pas pu se connecter à mon VPN L2TP/IPSec PSK. Cela s’est produit sur mon Asus Transformer Prime (TF201) fonctionnant avec ICS 4.0.3 et mon nouveau Samsung Galaxy S3 fonctionnant avec ICS 4.0.4

Pour faire mon travail, je dois me connecter à mon VPN afin d’avoir une connexion sécurisée au réseau local, aux serveurs internes et à mon ordinateur de bureau. Ce problème était donc majeur. Hier soir, j’ai finalement pris quelques minutes pour diagnostiquer le problème.

Mon serveur VPN fonctionne sous Ubuntu 10.04 LTS et est configuré à l’aide d’OpenSwan (l2tpd et pluto ipsec). J’ai vérifié le fichier /var/log/pluto.log en essayant de connecter mon appareil Android au VPN, et j’ai remarqué ces erreurs :

"L2TP-PSK-NAT"[16] 11.22.33.44#15: byte 7 of ISAKMP NAT-OA Payload must be zero, but is not
"L2TP-PSK-NAT"[16] 11.22.33.44#15: malformed payload in packet
| payload malformed after IV
| 7c 98 58 d1 bd 64 bd 43 6f c3 5d 7c 19 e3 23 ef
"L2TP-PSK-NAT"[16] 11.22.33.44#15: sending notification PAYLOAD_MALFORMED to 11.22.33.44:4500

Après une recherche rapide sur Google sur « ics l2tp ipsec vpn malformed payload in packet », j’ai trouvé le rapport de bogue suivant sur Google Code : Problème 23124 : Can’t connect to VPN (nexus s – ice cream sandwich).
 

Le commentaire 203 de Strawman est particulièrement intéressant car la personne a identifié le bogue et fournit une solution. Fondamentalement, Google ne suit pas la RFC dans les règles et OpenSwan ne tolère pas cette erreur. L’utilisateur a corrigé la construction du paquet ISAKMP NAT-OA (octet 7) dans /system/bin/racoon et a téléchargé son correctif.

Cela implique de copier le binaire « racoon » sur votre système Android, vous aurez donc besoin de root pour le faire :

  1. Téléchargez le nouveau binaire « raton laveur » du commentaire 203 dans le lien Google Code ci-dessus
  2. Copiez le binaire « racoon » sur la carte SD interne de votre appareil Android (je suppose qu’il s’agit de /mnt/sdcard/ dans ces instructions)
  3. Ouvrir une session Terminal ou ADB Shell
  4. Obtenez un accès de superutilisateur (root) :
    su
  5. Montez le système de fichiers /system en tant que RW, vous avez besoin de root pour cela :
    mount -o remount,rw /system
  6. Faites une sauvegarde du binaire « raton laveur » existant :
    cd /system/bin
    cp racoon racoon.original
  7. Copiez le nouveau « raton laveur » dans /system/bin :
    cp /mnt/sdcard/racoon .
  8. Définissez les autorisations appropriées sur le nouveau « raton laveur » :
    chmod 755 racoon
    chgrp shell racoon
  9. Remonter le système de fichiers /system en tant que RO :
    mount -o remount,ro /system

Voilà, vous avez terminé. Maintenant, essayez à nouveau de vous connecter à votre VPN L2TP/IPSec PSK avec votre appareil Android, et en quelques secondes, vous devriez enfin pouvoir vous connecter avec succès.

Si quelque chose tourne mal, que le correctif ne fonctionne pas, ou si une future mise à niveau OTA échoue, n’oubliez pas de supprimer le « nouveau » raton laveur et de renommer l’original à son nom propre.

P.S. : Tout le mérite revient à l’homme de paille sur le commentaire 203. Le nouveau binaire « raton laveur » peut être téléchargé à partir de la page Google Code liée ci-dessus.

 

Explore our Advanced Email Security Solutions

Protect your clients and simplify your operations with reliable, scalable email security solutions. Get in touch today to learn how we can support your success.

SHARE WITH YOUR NETWORK!

Ready to See the Difference?
Discover our advanced security products today.

Faire défiler vers le haut