HOW TO – Configurare OpenVpn su Samsung Galaxy S I9000 Android 2.2 FROYO.RSJP5 con certificati e dhcp.
Fare un backup del firmware e dei dati del cellulare.
Studiare il funzionamento dello strumento ADB.
Studiare la sintassi dei più semplici comandi Linux: SU, CP, MOUNT, MKDIR, RM, CHMOD, LS, CD, DF.
Attrezzi necessari all’intervento
Piattaforma di sviluppo per android installata sul nostro PC con i driver usb per il nostro dispositivo e ADB.
Cavo usb di connessione PC telefono.
Attivare modalità Debug USB sul cellulare (dalla home selezionare Menu, Applicazioni, Sviluppo: in sviluppo spuntare le voci Debug USB e Resta attivo).
Scaricare dal market:
Z4Root di Ryanza (contiene già il pacchetto BusyBox) necessario per ottenere l’accesso root del telefono
Openvpn installer
Openvpn settings
Scaricare il driver interfaccia tunneling chiamato tun-I9000-JPK.zip scompattarlo e copiarlo su una cartella facilmente raggiungibile ad esempio (per windows) C:\scambio\
Copiare in C:\scambio\ i file di configurazione della nostra openvpn e le chiavi: miavpn.conf, ca.crt, miocert.crt, miakey.key, ta.key
Si può scaricare il pacchetto Busybox ed effettuare il root del telefono in altri modi, ma per il nostro esperimento abbiamo utilizzato Z4Root.
A questo punto abbiamo tutto il necessario.
Partiamo con l’istallazione di Z4Root al termine del processo eseguiamo l’applicazione; a questo punto ci vengono proposte due modalità di root:
root temporaneo
root definitivo
Noi abbiamo utilizzato il root temporaneo; i contro di questa scelta sono che ogni volta che riavviamo il cellulare dobbiamo nuovamente procedere con l’operazione di root se vogliamo che Openvpn funzioni, ma è sicuramente meno impattante del root definitivo; sta a voi decidere.
Per prima cosa colleghiamo il cellulare al nostro PC ed eseguiamo il comando ADB SHELL:
una volta aperta la console, digitiamo il comando SU per ottenere l’accesso come root; se tutto funziona correttamente, il cellulare ci avviserà che l’utente “uknown” ha ottenuto diritti di root;
a questo punto dobbiamo lanciare il comando seguente: mount -o rw,remount /dev/block/mtdblock3 /system
Questo comando rende la cartella /system del nostro cellulare scrivibile.
Fin qui non si dovrebbero incontrare difficoltà; se ci fossero problemi con il comando “mount” da console, possiamo ottenere lo stesso risultato aprendo una seconda finestra terminale (mac) o prompt msdos (windows) e digitando il comando ADB REMOUNT che effettuerà la modifica per noi.
Ora prepariamo le cartelle necessarie per Openvpn installer:
anciamo il comando: “/system/xbin/mkdir /system/xbin/bb” (crea la cartella bb in /system/xbin)
lanciamo il comando: “/system/xbin/mkdir /mnt/sdcard/openvpn” (crea la cartella openvpn in /mnt/sdcard/)
lanciamo il comando: “ln -s /system/bin/busybox /system/xbin/bb/ifconfig”
lanciamo il comando: “ln -s /system/bin/busybox /system/xbin/bb/route”
Una volta ottenuto l’accesso root, eseguiamo Openvpn installer con le seguenti opzioni di installazione che ci verranno chieste durante il processo:
Directory di installazione del binario: /system/xbin
directory per i comandi ifconfig e route: /system/xbin/bb (non chiudete la finestra di report dell’istallazione)
Esaminiamo i log dell’installer (reperibili premendo il tasto menu e show log) cercando di individuare eventuali errori nell’istallazione, se è tutto ok andiamo avanti.
Installiamo “openvpn settings”
Apriamo una seconda finestra terminale da cui lanciare i seguenti comandi per inviare files al nostro dispositivo:
ADB PUSH C:\scambio\tun.ko (o la nostra cartella locale/tun.ko) /mnt/sdcard/openvpn (con questo comando piazziamo il file tun.ko precedentemente scaricato nella cartella openvpn creata in precedenza)
ripetiamo il tutto per i file di configurazione e le chiavi:
ADB PUSH C:\scambio\miavpn.conf /mnt/sdcard/openvpn
ADB PUSH C:\scambio\miakey.key /mnt/sdcard/openvpn
ADB PUSH C:\scambio\miocert.crt /mnt/sdcard/openvpn
ADB PUSH C:\scambio\ca.crt /mnt/sdcard/openvpn
ADB PUSH C:\scambio\ta.key /mnt/sdcard/openvpn
riportiamo la cartella /system in sola lettura con il comando: mount -o ro,remount /dev/block/mtdblock3 /system
Lanciamo openvpn settings e configuriamo:
Il percorso dei files di configurazione e dei certificati che nel nostro caso è /mnt/sdcard/openvpn
alla voce “load tun kernel module” configuriamo: il percorso del driver tun.ko che nel nostro caso è /mnt/sdcard/openvpn
alla voce “tun module settings” configuriamo: “load tun using” con “insmod” e path to tun module “mnt/sdcard/openvpn/tun.ko”
In openvpn configurations ci troviamo il miavpn.conf già visibile: a questo punto se tutto è andato bene, in openvpn settings spuntiamo la voce ” openVPN” e poi “miavpn.conf”.
Il dispositivo cercherà ora di attivare il tunnel vpn e se tutto è configurato correttamente apparirà nella barra delle notifiche: “VPN connecting”, mentre sulla linguetta identificativa “miavpn.con” in sequenza: resolve, Auth, getconfig ed infine connected to “ipserverVPN” as “ipdispositivo” e la chiavetta nella barra
delle notifiche apparirà illuminata, ad indicare che la connessione è correttamente stabilita.
Possibili errori:
Errore 1
“openvpn cannot allocate the device TUN/TAP dynamically” – il modulo tun non è caricato o è caricato un modulo non compatible con il dispositivo.
Soluzione 1: verificare la correttezza dei settari per il caricamento del modulo tun ed in particolare che venga utilizzato il metodo insmod
Soluzione 2: scaricare un modulo compatibile
Errore 2
Qualsiasi cosa clicchiamo in openvpn settings non accade nulla o l’app si chiude – istallazione del binario openvpn non riuscita o binario corrotto. La maggior parte delle volte si è commesso un errore nella fase di istallazione.
Soluzione 1: verificare la correttezza dell’istallazione ripeterla partendo dal root del telefono e seguire passo passo tutti i comandi così come indicato sopra.
Soluzione 2: scaricare un binario funzionante
Errore 3
La vpn sembra partire arriva a “connected to “ipserverVPN” as” ma non viene indicato l’ip del dispositivo dopo la voce “as” e la vpn non sembra funzionare. La maggior parte delle volte l’errore è nel file conf e nelle voci relative al push della configurazione ip da parte del server VPN;
ciò è dovuto al fatto che il modulo tun non supporta le opzioni pull o pus.
Soluzione: verificare il file con e modificarlo nelle voci relative alla richiesta della configurazione di rete, commentando i comandi pull o pus per verificare che funzioni il resto.
Errore 4
“cannot execute command ifconfig”. Ciò è dovuto ad un’errata configurazione o errata creazione dei link simbolici ai file ifconfig e ruote; nello specifico, stiamo utilizzando i file del ns dispositivo che però non sono compatibili con openvpn e che si trovano in /system/bin.