Hi, i’m here again….. let’s talk.
Ha algum tempo eu tenho que usar uma conexão VPN com a sede da empresa onde trabalho. Adivinhem pra quê? Se você acha que é pra trabalhar em casa, você está completamente CERTOOOO!!!!.
Tudo quase bem até ai, por que até pouco tempo atrás eles me passaram um ip, usário e senha e me disseram que usavam PPTP. Mentira, me deram um client qualquer ai pra eu conectar, mas esse cliente era um .exe, como eu não queria criar caso com o cara lá de Sampa, eu só perguntei qual protocolo eles usavam para fechar a VPN, ele me disse e eu me virei lá em casa com meu Debian, e tudo funcionava.
Aí, no mes passado, me chega um email dizendo que o servidor da vpn ia ser desativado, não sei por que, e que eu teria que preencher uma solicitação para o novo acesso.
Ótimo, depois de um mês que foi dito isso, eu precisei acessar a VPN, e ainda não havia enviado o tal papel.
Pra resumir a história, eu scaneei o papel, enviei e ele me enviou um Client VPN da CISCO, novamente um .exe.
Perguntei se não tinha um pra “linux”. O rapazinho disse que não, não tinha.
Era bem capaz de eu instalar um sistema de “janelas” lá em casa pra usar isso, fui pesquisar.
Descobri que a propria Cisco disponbilizava o client para o “linux”, fui lá com meu usuário e senha e tentei baixar, necatibiriba não, não tinha previlégios suficiente, enviei o link pro rapazinho e ele baixou e me enviou o client.
Em seguida fui instalar.
A instalção é super tranquila, apesar de não ser um software livre, o instalador é super amigavel, um script bem bolado, com duas perguntas somente.
Para não extender muito, vou colocar os passos que seguir:
Baixe o client de algum lugar que você achar na internet… talvez eu coloque em algum servidor, quando sobrar menos preguiça.
Aí está o client.
flamarion@desktop:~$ ls
Desktop Documentos driver_samsung examples.desktop Imagens Modelos Músicas PDF tmp Vídeos vpnclient-linux-x86_64-4.8.02.0030-k9.tar.gz
Descompacte.
flamarion@desktop:~$ tar -zxvf vpnclient-linux-x86_64-4.8.02.0030-k9.tar.gz
vpnclient/
vpnclient/libvpnapi.so
vpnclient/vpnapi.h
vpnclient/cisco_cert_mgr
vpnclient/vpnclient
vpnclient/ipseclog
vpnclient/cvpnd
vpnclient/vpn_install
vpnclient/vpnclient_init
vpnclient/vpn_uninstall
vpnclient/driver_build.sh
vpnclient/sample.pcf
vpnclient/vpnclient.ini
vpnclient/license.txt
vpnclient/license.rtf
vpnclient/interceptor.c
vpnclient/linuxcniapi.c
vpnclient/linuxcniapi.h
vpnclient/vpn_ioctl_linux.h
vpnclient/IPSecDrvOS_linux.c
vpnclient/linux_os.h
vpnclient/frag.h
vpnclient/frag.c
vpnclient/linuxkernelapi.c
vpnclient/GenDefs.h
vpnclient/mtu.h
vpnclient/IPSecDrvOSFunctions.h
vpnclient/IPSecDrvOS_linux.h
vpnclient/Cniapi.h
vpnclient/unixcniapi.h
vpnclient/unixkernelapi.h
vpnclient/config.h
vpnclient/libdriver64.so
vpnclient/libdriver.so
vpnclient/Makefile
flamarion@desktop:~$
Instale as ferramentas de compilação e os headers do kernel.
flamarion@desktop:~$ sudo aptitude install build-essential linux-headers-$(uname -r)
Instalação:
flamarion@desktop:~$ cd vpnclient/
flamarion@desktop:~/vpnclient$ ls
cisco_cert_mgr driver_build.sh interceptor.c ipseclog license.rtf linuxkernelapi.c sample.pcf vpnclient vpn_ioctl_linux.h
Cniapi.h frag.c IPSecDrvOSFunctions.h libdriver64.so license.txt linux_os.h unixcniapi.h vpnclient.ini vpn_uninstall
config.h frag.h IPSecDrvOS_linux.c libdriver.so linuxcniapi.c Makefile unixkernelapi.h vpnclient_init
cvpnd GenDefs.h IPSecDrvOS_linux.h libvpnapi.so linuxcniapi.h mtu.h vpnapi.h vpn_install
Serão feitas algumas perguntas, tais como, onde quer que coloque o binário e se é este lugar mesmo que estão os headers do kernel, o software é até inteligente, mas se quiser mudar algo, fique a vontade, eu deixei o padrão mesmo!
flamarion@desktop:~/vpnclient$ sudo ./vpn_install
Cisco Systems VPN Client Version 4.8.02 (0030) Linux Installer
Copyright (C) 1998-2006 Cisco Systems, Inc. All Rights Reserved.
By installing this product you agree that you have read the
license.txt file (The VPN Client license) and will comply with
its terms.
Directory where binaries will be installed [/usr/local/bin] <- Pergunta
Automatically start the VPN service at boot time [yes] <- Outra pergunta
In order to build the VPN kernel module, you must have the
kernel headers for the version of the kernel you are running.
Directory containing linux kernel source code [/lib/modules/2.6.28-13-generic/build] <- Mais uma pergunta
* Binaries will be installed in “/usr/local/bin”.
* Modules will be installed in “/lib/modules/2.6.28-13-generic/CiscoVPN”.
* The VPN service will be started AUTOMATICALLY at boot time.
* Kernel source from “/lib/modules/2.6.28-13-generic/build” will be used to build the module.
Is the above correct [y] <- Ultima. É isso mesmo ? Então aperte "enter"
Making module
make -C /lib/modules/2.6.28-13-generic/build SUBDIRS=/home/flamarion/vpnclient modules
make[1]: Entrando no diretório `/usr/src/linux-headers-2.6.28-13-generic’
CC [M] /home/flamarion/vpnclient/linuxcniapi.o
CC [M] /home/flamarion/vpnclient/frag.o
CC [M] /home/flamarion/vpnclient/IPSecDrvOS_linux.o
CC [M] /home/flamarion/vpnclient/interceptor.o
CC [M] /home/flamarion/vpnclient/linuxkernelapi.o
LD [M] /home/flamarion/vpnclient/cisco_ipsec.o
Building modules, stage 2.
MODPOST 1 modules
WARNING: could not find /home/flamarion/vpnclient/.libdriver.so.cmd for /home/flamarion/vpnclient/libdriver.so
CC /home/flamarion/vpnclient/cisco_ipsec.mod.o
LD [M] /home/flamarion/vpnclient/cisco_ipsec.ko
make[1]: Saindo do diretório `/usr/src/linux-headers-2.6.28-13-generic’
Create module directory “/lib/modules/2.6.28-13-generic/CiscoVPN”.
Copying module to directory “/lib/modules/2.6.28-13-generic/CiscoVPN”.
Already have group ‘bin’
Creating start/stop script “/etc/init.d/vpnclient_init”.
/etc/init.d/vpnclient_init
Enabling start/stop script for run level 3,4 and 5.
Creating global config /etc/opt/cisco-vpnclient
Installing license.txt (VPN Client license) in “/opt/cisco-vpnclient/”:
/opt/cisco-vpnclient/license.txt
Installing bundled user profiles in “/etc/opt/cisco-vpnclient/Profiles/”:
* New Profiles : sample
Copying binaries to directory “/opt/cisco-vpnclient/bin”.
Adding symlinks to “/usr/local/bin”.
/opt/cisco-vpnclient/bin/vpnclient
/opt/cisco-vpnclient/bin/cisco_cert_mgr
/opt/cisco-vpnclient/bin/ipseclog
Copying setuid binaries to directory “/opt/cisco-vpnclient/bin”.
/opt/cisco-vpnclient/bin/cvpnd
Copying libraries to directory “/opt/cisco-vpnclient/lib”.
/opt/cisco-vpnclient/lib/libvpnapi.so
Copying header files to directory “/opt/cisco-vpnclient/include”.
/opt/cisco-vpnclient/include/vpnapi.h
Setting permissions.
/opt/cisco-vpnclient/bin/cvpnd (setuid root)
/opt/cisco-vpnclient (group bin readable)
/etc/opt/cisco-vpnclient (group bin readable)
/etc/opt/cisco-vpnclient/Profiles (group bin readable)
/etc/opt/cisco-vpnclient/Certificates (group bin readable)
* You may wish to change these permissions to restrict access to root.
* You must run “/etc/init.d/vpnclient_init start” before using the client.
* This script will be run AUTOMATICALLY every time you reboot your computer.
Tem uma coisa chata, a Cisco fez com que a instalação colocasse o módulo necessário para o client funcionar, em um diretório diferente do diretório onde normalmente ficariam os módulos.
Você pode coloca-lo lá, mas eu quis carrega-lo na mão.
flamarion@desktop:~$ sudo insmod /lib/modules/2.6.28-13-generic/CiscoVPN/cisco_ipsec.ko
flamarion@desktop:~$
Só pra garantir, veja se o módulo foi carregado de fato!
flamarion@desktop:~$ lsmod | grep cisco
cisco_ipsec 603868 0
Com o módulo carregado, ta meio caminho andado, é só criar um arquivo de perfil para sua conexão e fazer a conexão, no diretório onde eu criei meu arquivo .pcf, existe um sample.pcf que você pode seguir como base, mas as configurações abaixo no meu caso foram suficientes.
Então crie seu arquivo .pcf, ou meu vai se chamar empresa.pcf
flamarion@desktop:~$ sudo vi /etc/CiscoSystemsVPNClient/Profiles/empresa.pcf
[main]
Description=Empresa onde trabalho <- apenas um comentário, pode haver espaço
Host=200.200.200.200 <- IP ou hostmane onde vocẽ deseja conectar-se
AuthType=1 <- Valor booleano, 1 ativa autenticação, 0 desativa
GroupName=nomedogrupo <- Aqui você vai colocar o nome do grupo
Username=flamarion <- Nome de usuário
SaveUserPassword=1 <- Quer salvar sua senha ? 1 sim, 0 não
Feito o arquivo de configuração, agora é hora de conectar-se a vpn da sua empresa, ou do servidor, ou do lugar que tem a conexão esperando a ser feita.
Você vai usar para conectar-se o nome do arquivo sem o .pcf, no meu caso “empresa”.
Serão feitas algumas perguntas, que você tem que saber, ou que o administrador de sistemas/redes da sua empresa lhe passou.
Vou comenta-las, no dialogo a seguir.
flamarion@desktop:~$ vpnclient connect empresa
Cisco Systems VPN Client Version 4.8.02 (0030)
Copyright (C) 1998-2007 Cisco Systems, Inc. All Rights Reserved.
Client Type(s): Linux
Running on: Linux 2.6.28-13-generic #45-Ubuntu SMP Tue Jun 30 19:49:51 UTC 2009 i686
Config file directory: /etc/opt/cisco-vpnclient
Enter a group password: <- Aqui você informa a senha do grupo
Initializing the VPN connection.
Contacting the gateway at 200.213.248.9
User Authentication for empresa…
The server has requested the following information to complete the user authentication:
Username [flamarion]: <- Se você colocou o usuário correto, só aperte "enter"
Password []: <- Sua senha
Save Password (Y/N) [Y]: Y <- Quer salvar a senha?
Authenticating user.
Negotiating security policies.
Securing communication channel.
Your VPN connection is secure.
VPN tunnel information.
Client address: 172.21.10.18
Server address: 200.213.248.9
Encryption: 256-bit AES
Authentication: HMAC-MD5
IP Compression: None
NAT passthrough is active on port UDP 4500
Local LAN Access is disabled
Se você chegou aqui a sua conexão com a vpn foi feita com sucesso.
Existe mais un inconveniente, o client não vai para background, então você vai ter que colocalo em background na mão.
Ps.: Como é um script de conexão interativo, não tente inicia-lo com “&” para coloca-lo em background automaticamente, que não vai funcionar.
Para coloca-lo em bacground você pode colcoar o processo em stop, com ctrl+z, e em seguida coloca-lo em background, de acordo com o exemplo:
“ctrl+z”
^Z
[1]+ Stopped vpnclient connect bull
Colocando em background:
flamarion@desktop:~$ bg “%vpnclient”
[1]+ vpnclient connect bull &
Prontinho, desta maneira seu terminal estará liberado e você pode até fechalo.
Como saber se a conexão está ativa.
Se você fizer um ifconfig, deve existir uma inteface diferente das suas eth’s, ath’s ou wlan’s, que tem o no me de “cipsec0″.
flamarion@desktop:~$ ifconfig
cipsec0 Link encap:Ethernet Endereço de HW 00:0b:fc:f8:01:8f
inet end.: 172.21.10.23 Masc:255.255.0.0
endereço inet6: fe80::20b:fcff:fef8:18f/64 Escopo:Link
UP RUNNING NOARP MTU:1356 Métrica:1
pacotes RX:46587 erros:0 descartados:2 excesso:0 quadro:0
Pacotes TX:50471 erros:0 descartados:16 excesso:0 portadora:0
colisões:0 txqueuelen:1000
RX bytes:32746478 (32.7 MB) TX bytes:6595401 (6.5 MB)
E se você pedir para mostrar as rotas, verá todas as rotas definidas pelo sysadmin para seu perfil.
flamarion@desktop:~$ sudo route -n
Tabela de Roteamento IP do Kernel
Destino Roteador MáscaraGen. Opções Métrica Ref Uso Iface
200.213.248.9 10.2.4.10 255.255.255.255 UGH 0 0 0 eth0
192.90.68.0 172.21.10.18 255.255.255.0 UG 0 0 0 cipsec0
10.2.0.0 172.21.10.18 255.255.0.0 UG 0 0 0 cipsec0
10.98.0.0 172.21.10.18 255.255.0.0 UG 0 0 0 cipsec0
10.6.0.0 172.21.10.18 255.255.0.0 UG 0 0 0 cipsec0
10.7.0.0 172.21.10.18 255.255.0.0 UG 0 0 0 cipsec0
129.185.0.0 172.21.10.18 255.255.0.0 UG 0 0 0 cipsec0
10.4.0.0 172.21.10.18 255.255.0.0 UG 0 0 0 cipsec0
10.102.0.0 172.21.10.18 255.255.0.0 UG 0 0 0 cipsec0
172.18.0.0 172.21.10.18 255.255.0.0 UG 0 0 0 cipsec0
129.181.0.0 172.21.10.18 255.255.0.0 UG 0 0 0 cipsec0
169.254.0.0 0.0.0.0 255.255.0.0 U 1000 0 0 eth0
192.168.0.0 172.21.10.18 255.255.0.0 UG 0 0 0 cipsec0
172.21.0.0 0.0.0.0 255.255.0.0 U 0 0 0 cipsec0
0.0.0.0 10.2.4.10 0.0.0.0 UG 0 0 0 eth0
flamarion@desktop:~$
E assim você terá uma conexão VPN, por IPSEC, com o Client da Cisco na sua distribuição baseada em Debian / Gnu Linux.
Comentários.
Existem maneiras de automatizar a grande maioria do processo de carga do módulo e conexão através de scripts shell.
Em outro momento, eu digo como fazer para fazer com que o módulo seja carregado na inicialização do seu sistema, e fazer um script bacana para passar todos os parametros de conexão e já colocar em background o client, assim que a conexão terminar.
Espero que preste, por que fiz este post rapidão…. nem conferi muito o português, nem pontuação, só conferi que funciona a solução.