Connexió d’un portàtil amb 3G per accedir directament al servidor

La necessitat

La capacitat d’accedir directament a les dades del nostre servidor des de qualsevol lloc influeix directament en el temps de resposta al problema que se’ns ha pogut presentar. Així no és necessària una persona al centre que ens faci de pont per accedir a les dades.

Així la necessitat és obtenir una consola gràfica directament al servidor només arrencant un ordinador portàtil.

La idea

El portàtil arranca una connexió 3G, es crea un VPN al firewall i s’inicia una sessió al servidor.

Els requisits

  • Un ordinador portàtil amb connexió 3G integrada. S’ha optat per el HP Mini 5102.
  • Tarja de telefonia mòbil amb transmissió de dades 3G activada i sense poder fer cridades a altres números de telèfon ja que la petició de PIN ha d’estar desactivada.

La sol·lució

Sistema operatiu

Instal·lem el sistema operatius GNU/Linux. El motiu, encara que ja tinguem les llicències de Windows 7 Home Starter, és la d’adquirir un antivirus apart que incrementarà el cost econòmic. A part d’intentar reduir el temps d’inici de sessió de l’equip i tenir millor control sobre la màquina.

La distribució elegida és la Ubuntu 11.04. S’ha escollit aquesta ja que aquesta versió ja  inclou els mòduls de la tarja 3G especifica, amb versions anteriors no el varem poder configurar.

Cream un usuari user3g que serà el que farà la connexió.

Connexió 3G

Instal·lem el paquet gobi-loader. De la còpia que tinguem del SO Windows extreim la carpeta c:\Program Files\QUALCOMM\Images/HP. Dintre aquesta carpeta hi ha vàries subcarpetes amb fitxers amb els mateixos noms. Depenent de la companyia telefònica que tinguem contractada elegim uns o altres.

Per saber quin elegir http://www.thinkwiki.org/wiki/Talk:Qualcomm_Gobi_2000 . En el meu cas he elegit 0/UQCN.mbn UMTS/amss.mbn i UMTS/apps.mbn

S’han de copiar a la carpeta nova /lib/firmware/gobi

Reiniciam

Al “connection manager” cream una nova connexió mòbil elegint el proveïdor Vodafone. El nom de la connexió ha de començar amb “auto ” i activar l’opció “connectar automàticament”.

Connexió VPN al tallafocs

Per a crear la connexió VPN al tallafocs, el nostre cas un Sonicwall, instal·lam el paquets openswan i ipsec-tools.

Modificam els fitxers de configuració /etc/ipsec.secrets i /etc/ipsec.conf així com diu el document
http://www.sonicwall.com/app/projects/file_downloader/document_lib.php?t=TN&id=230&dl=1

El nostre ordinador portàtil anirà canviant d’IP cada vegada que el connectem a la xarxa mòbil per això feim:

Cream el fitxer /etc/ipsec.conf.orig i a on posam la IP de l’ordinador escrivim IPLOCAL
Cream un script VPN.sh amb permisos d’execució a tothom que cada vegada crei el fitxer /etc/ipsec.conf amb la IP local correcte.

#!/bin/bash

FILE=/etc/ipsec.conf
FILE_ORIG=$FILE.orig

IP=`ifconfig | grep "inet addr:" | grep -v "127.0.0." | sed 's/:/ /' | awk '{print $3}'`

if [ -f $FILE_ORIG ];
then
   echo "OK: File $FILE_ORIG exists."
#   echo "IP=$IP"

   rm $FILE
   sed "s/LOCALIP/$IP/g" $FILE_ORIG > $FILE
   service ipsec restart
   sleep 1
   ipsec auto --add connexio
   ipsec auto --up connexio

else
   echo "ERROR: File $FILE does not exist."
   exit
fi

En la creació de la VPN ens demana cada vegada l’usuari i el password i el que volem és evitar-ho. Per tant instal·lam el paquet expect i expect-dev i executem des de /home:

autoexpect /home/VPN.sh

Ens demanarà l’usuari i password per a crear la connexió al tallafocs que quedarà dins el fitxer /home/script.exp i li donam permisos d’execució al /etc/sudoers de la forma

user3g ALL=(ALL:ALL) NOPASSWD: /home/script.exp

Visualització de l’escriptori

La comanda per l’accés rpd al servidor és

rdesktop -u "" 192.168.0.50 -f -a 16 -k es

Ho posam tot junt

Cream un script amb permisos d’execució a tothom que faci:

  1. Esperam que la tarja 3G estigui disponible.
  2. Cream la connexió 3G si no es fa automàticament amb la comanda nmcli
  3. Cream la connexió VPN al tallafocs.
  4. Executam la comanda de connexió RDP
#!/bin/bash

date

WHO=`whoami`
if [ "$WHO" == "administrador" ];
then
	echo ""
	exit 0
fi

COUNT=1
UP=`nmcli dev | grep ttyUSB1 | wc -l`
while [ $UP -eq 0 ]
do
	sleep 1
	let "COUNT+=1"
	if [ $COUNT -eq 25 ];
	then
		exit 1
	fi
	UP=`nmcli dev | grep ttyUSB1 | wc -l`
	echo "Wait UP"
done

STATUS=`nmcli dev | grep ttyUSB1 | awk '{print $3}'`
echo ESTAT=$STATUS

COUNT=1
while [ $COUNT -lt 5 ]
do
	case $STATUS in
		"connected" )
			break
			;;
		"connecting" )
			echo "Wait"
			sleep 5
			;;
		"" )
			echo "Disabled."
			exit 1
			;;
		* )
			echo "Try to connect"
			nmcli nm wwan on
			nmcli con up id "auto Vodafone"
	esac
	echo ""
	STATUS=`nmcli dev | grep ttyUSB1 | awk '{print $3}'`
	echo $COUNT ESTAT=$STATUS
	let "COUNT+=1"
done

if [ "$STATUS" == "connected" ];
then
	echo "VPN"
	sudo /home/script.exp

	echo "rdesktop"
	ping -c 1 192.168.0.50
	if [ $? -eq 0 ];
	then
		rdesktop -u "" 192.168.0.50 -f -a 16 -k es
	else
		echo "Can't connect to server"
		exit 3
	fi
else
	exit 2
fi

exit 0

Donam permisos d’execució a aquest script a l’usuari:

user3g ALL=(ALL:ALL) NOPASSWD: /home/start.sh

Altres personatlitzacions

L’usuari user3g farà l’inici de sessió automàticament sense demanar la seva contrasenya. Modificam el fitxer /etc/gdm/custom.conf

[daemon]
AutomaticLoginEnable=false
AutomaticLogin=user3g
TimedLoginEnable=true
TimedLogin=user3g
TimedLoginDelay=1
DefaultSession=xsession

En cas de que l’ordinador només tingui aquesta finalitat, mourem tots els fitxers de /usr/share/xsession a una subcarpeta nova excepte xsession.desktop, així només es podrà executar l’script creat. El contingut d’aquest fitxer serà:

[Desktop Entry]
 Encoding=UTF-8
 Name=User Defined Session
 Comment=Custom ~/.xsession script
 Exec=default
 X-Ubuntu-Gettext-Domain=gdm

Cream el fitxer /home/user3g/.xsession amb el següent codi.

#/bin/bash

gnome-terminal -x /home/start.sh

sudo /sbin/halt

I donam permisos al aquest usuari per poder executar l’aturada com a root modificant el fitxer /etc/sudoers

user3g ALL=(ALL:ALL) NOPASSWD: /sbin/halt

La conclusió

Tenim un ordinador portàtil que als 80 segons després del seu inici tenim connexió al servidor sense haver d’escriure cap contrasenya ni executar programes manualment.

Salu2 a ∀

Aquesta entrada ha esta publicada en GNU/linux, Sistema, Xarxa. Afegeix a les adreces d'interès l'enllaç permanent.

Deixa un comentari