Cisco VPN Client – отдалечена връзка до ресурсите във вътрешната мрежа. Част трета – официален Cisco VPN клиент за Linux

В последната част на тази поредица, ще разгледаме използването на closed source клиента за Cisco VPN за Linux. За разлика от VPNC, този клиент не се разпространява под формата на пакет за Linux, за това единственият начин да го инсталирате е, инсталация от source code.

1. Инсталация

Инсталацията на Cisco VPN клиента за Linux зависи изключително много от версията на ядрото на системата. В тази статия, ще разгледаме инсталация с ядро 2.6.35 или по-ново.

За да инсталирате клиента е необходимо първо да го свалите от сайта на Cisco. Клиента е достъпен срещу регистрация на сайта. Освен това, ще ви бъде необходим patch за клиента, без който е напълно невъзможно да направите инсталацията. Можете да намерите patch-а, прикачен на края на тази статия. Въпреки, че този patch е за версия на ядрото 2.6.35, той може да се използва и за по-нови версии.

За да инсталирате клиента, е необходимо да направите следното:

1. Разархивирайте клиента

tar -xzvf vpnclient-linux-x86_64-4.8.02.0030-k9.tar.gz

2. Разархивирайте patch-а

unzip vpnclient-linux-2.6.35.patch.zip

3. Приложете patch-a

ivailo@voyager:~/Downloads/vpn> cd vpnclient/
ivailo@voyager:~/Downloads/vpn/vpnclient> patch -p1 \
--dry-run < ../vpnclient-linux-2.6.35.patch
patching file frag.c
patching file interceptor.c
patching file IPSecDrvOS_linux.c
patching file linuxcniapi.c
ivailo@voyager:~/Downloads/vpn/vpnclient> patch -p1 < ../vpnclient-linux-2.6.35.patch
patching file frag.c
patching file interceptor.c
patching file IPSecDrvOS_linux.c
patching file linuxcniapi.c
ivailo@voyager:~/Downloads/vpn/vpnclient>

Използването на ключа –dry-run към командата patch, позволява да се направи тестово прилагане на кръпката, така че да не се промени сорса на приложението. Ако в последващите съобщения има съобщения за грешка, то няма смисъл да се продължава нататък. Трябва да се намери правилна кръпка за съответната версия на клиента.
4. Инсталирайте клиента

След прилагането на кръпката, е необходимо да се изпълни инсталационния скрипт на програмата, като системен администратор (root):

ivailo@voyager:~/Downloads/vpn/vpnclient> su
Password:
voyager:/home/ivailo/Downloads/vpn/vpnclient # ./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]

Automatically start the VPN service at boot time [yes]

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.38.5-1-desktop/build]

* Binaries will be installed in "/usr/local/bin".
* Modules will be installed in "/lib/modules/2.6.38.5-1-desktop/CiscoVPN".
* The VPN service will be started AUTOMATICALLY at boot time.
* Kernel source from "/lib/modules/2.6.38.5-1-desktop/build" will be \
used to build the module.

Is the above correct [y]y

Making module
make -C /lib/modules/2.6.38.5-1-desktop/build \
SUBDIRS=/home/ivailo/Downloads/vpn/vpnclient modules
make[1]: Entering directory `/usr/src/linux-2.6.38.5'
 CC [M]  /home/ivailo/Downloads/vpn/vpnclient/linuxcniapi.o
 CC [M]  /home/ivailo/Downloads/vpn/vpnclient/frag.o
 CC [M]  /home/ivailo/Downloads/vpn/vpnclient/IPSecDrvOS_linux.o
 CC [M]  /home/ivailo/Downloads/vpn/vpnclient/interceptor.o
 CC [M]  /home/ivailo/Downloads/vpn/vpnclient/linuxkernelapi.o
 LD [M]  /home/ivailo/Downloads/vpn/vpnclient/cisco_ipsec.o
 Building modules, stage 2.
 MODPOST 1 modules
WARNING: could not find /home/ivailo/Downloads/vpn/vpnclient/.libdriver.so.cmd for \
/home/ivailo/Downloads/vpn/vpnclient/libdriver.so
 CC      /home/ivailo/Downloads/vpn/vpnclient/cisco_ipsec.mod.o
 LD [M]  /home/ivailo/Downloads/vpn/vpnclient/cisco_ipsec.ko
make[1]: Leaving directory `/usr/src/linux-2.6.38.5'
Create module directory "/lib/modules/2.6.38.5-1-desktop/CiscoVPN".
Copying module to directory "/lib/modules/2.6.38.5-1-desktop/CiscoVPN".
Already have group 'bin'

Creating start/stop script "/etc/init.d/vpnclient_init".
 /etc/init.d/vpnclient_init
insserv: warning: script 'S14smfpd' missing LSB tags and overrides
insserv: warning: script 'vpnclient_init' missing LSB tags and overrides
insserv: warning: script 'vpnclient_init' missing LSB tags and overrides
insserv: Default-Start undefined, assuming default start runlevel(s) for \
script `vpnclient_init'
insserv: warning: script 'smfpd' missing LSB tags and overrides
vpnclient_init            0:off  1:off  2:off  3:off  4:off  5:off  6:off
Enabling start/stop script for run level 3,4 and 5.
insserv: warning: script 'S14smfpd' missing LSB tags and overrides
insserv: warning: script 'vpnclient_init' missing LSB tags and overrides
insserv: warning: script 'vpnclient_init' missing LSB tags and overrides
insserv: Default-Start undefined, assuming default start runlevel(s) for \
script `vpnclient_init'
insserv: warning: script 'smfpd' missing LSB tags and overrides
insserv: Service syslog is missed in the runlevels 4 to use service vboxdrv
vpnclient_init            0:off  1:off  2:off  3:on   4:off  5:on   6:off
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.
voyager:/home/ivailo/Downloads/vpn/vpnclient #

В горните листинги използвам знака “\” за да обознача, че реда продължава. Можете да използвате целите редове с команди директно по този начин, това е стандартен начин за разделяне на команда на редове под bash. След приключване на последната команда, VPN клиентът е инсталиран. За да го стартирате обаче, е необходимо да стартирате и системния процес, управляващ VPN връзките и инсталиран от клиента. За целта изпълнете командата:

voyager:/home/ivailo/Downloads/vpn/vpnclient # /etc/init.d/vpnclient_init start
Starting /opt/cisco-vpnclient/bin/vpnclient: Done
voyager:/home/ivailo/Downloads/vpn/vpnclient #

или рестартирайте системата.

ВНИМАНИЕ: Ако използвате Debian или Ubuntu, след рестарт на системата е възможно процеса да не е стартиран, тъй като стандартно, процеса е настроен да стартира в runlevel 3 и 5, а при Debian и Ubuntu, графичната среда се стартира в runlevel 2. За да промените това е необходимо да използвате програмата update-rc.d (повече по въпроса, как да използвате тази програма можете да намерите на този адрес – http://www.debuntu.org/how-to-manage-services-with-update-rc.d) или да добавите връзка в /etc/rc2.d:

su
cd /etc/rc2.d
ln -s /etc/init.d/vpnclient_init S01vpnclient_init
ln -s /etc/init.d/vpnclient_init K01vpnclient_init

Темата за управлението на процеси при Linux базирани системи ще бъде разгледана в по-късна публикация.

2. Използване

Официалният Cisco VPN клиент за Linux използва единствено съществуващи pcf файлове. За целта е необходимо да копирате pcf в директория /etc/opt/cisco-vpnclient/Profiles/:

cp sample.pcf /etc/opt/cisco-vpnclient/Profiles/

2.1. Свързване

Свързването се извършва посредством командата vpnclient connect, последвана от името на профила, без да добавяте разширението pcf. Изпълнението на всички разновидности на командата vpnclient се извършва като потребител root.

vpnclient connect sample

При поискване, въведете своето потребителско име и парола.

2.2. Прекъсване на връзката

За да прекъснете връзката е необходимо, да изпълните следната команда:

vpnclient disconnect

Тъй като клиента може да поддържа само една връзка, не е необходимо да указвате, коя връзка да бъде прекъсната.

За останалите ключове, приложими към комадната, изпълнете

vpnclient --help

3. Предимства и недостатъци

Основното предимство на този клиент е, че той поддържа връзка през TCP тунел. Ако връзката е от този тип, VPNC няма да свърши работа.

В моя опит с тази програма, намерих два основни недостатъка. На първо място, Cisco не правят нови версии на клиента достатъчно често. Това обяснява и необходимостта от използване на кръпка по време на инсталацията. Това води след себе си факта, че ако клиента има някакъв проблем, то той не е бил отстранен в последните няколко години.

Такъв проблем е втория недостатък. Ако използвате този клиент на машина с безжична мрежа и искате да използвате клиента за прехвърляне на X11 връзка от отдалечената мрежа до локалната машина (X11 Forwarding), то не можете да използвате безжичната мрежа. Ако се опитате да използвате X11 Forwarding през Cisco VPN за Linux и безжична мрежа, графичния сървър на Вашата система (машината, от която се свързвате чрез Cisco VPN клиента) или ще се рестартира или ще спре да работи напълно. За да избегнете този проблем, използвайте X11 Forwarding през Cisco VPN клиента, само при връзка през кабел. Този проблем не засяга VPNC.

vpnclient-linux-2.6.35.patch

2 коментара to “Cisco VPN Client – отдалечена връзка до ресурсите във вътрешната мрежа. Част трета – официален Cisco VPN клиент за Linux”

  1. I just read the exact same article from another site, I hope you didn’t steal it.

  2. First of all I want to assure you, that these articles (regarding Cisco VPN) was not copied from anywhere. I wrote them myself.
    Second, and this is to everybody, trying to attract more visitors to their sites, by posting links on ours – such links and comments will not be tolerated! The link, that you provided was to a site, that did not contain anything as you suggest. Such links will be directly deleted as well as the comments! Please, write only about the content of the article, you are commenting!