Tag: linux

  • Использование Cisco VPN Client на Linux

    Стоит у меня несколько Cisco и прокинуты по ним туннели GRE между организациями, объединенные в свою сегментную сеть. Когда работал на форточках, проблем с подключением к сети не было. VPN клиент для Cisco под форточки работает прекрасно, но в связи с полным отказом от Windows возник вопрос запуска сие чуда на Debian. Как оказалось, стандартные средства организации vpn, входящие в состав репозитария системы, не обеспечивают решения данной задачи. Вот такую задачу мы и будем сегодня решать.

    Поиски решения данной задачи в Гугле не привели к конкретному решению, поэтому все пришлось ставить путем проб и ошибок. Загруженные клиенты не хотели собираться в Debian. Спросите, почему нельзя получить клиента у поставщика, ответ: клиент может быть загружен только после регистрации и получения определенного статуса, вот так. Не у каждого есть возможность получить соответствующие права для загрузки. Поэтому принято решение получить все необходимое ПО из свободных источников. Предыстория понятна, пора начать все реализовывать. Все действия будем производить в консоли.

    user$ su
    root# cd /usr/src
    root# wget http://projects.tuxx-home.at/ciscovpn/clients/linux/4.8.02/vpnclient-linux-x86_64-4.8.02.0030-k9.tar.gz
    --2009-06-09 04:06:33--  http://projects.tuxx-home.at/ciscovpn/clients/linux/4.8.02/vpnclient-linux-x86_64-4.8.02.0030-k9.tar.gz
    Распознаётся projects.tuxx-home.at... 88.198.57.56
    Устанавливается соединение с projects.tuxx-home.at|88.198.57.56|:80... соединение установлено.
    Запрос HTTP послан, ожидается ответ... 200 OK
    Длина: 2050813 (2,0M) [application/x-gzip]
    Сохраняется в каталог: `vpnclient-linux-x86_64-4.8.02.0030-k9.tar.gz\'.
    36% [=============>                         ] 746 577     21,9K/s  ОВП 56s

    Клиент загружен (эта копия того, который предлагает Cisco у себя на сайте), теперь распакуем и запустим установку. Стоит заметить, что перед запуском установки стоит проверить, есть у вас исходные коды ядра системы. Если нет, то их необходимо установить. Проверить это можно следующим способом.

    root# ls /usr/src
    vpnclient-linux-x86_64-4.8.02.0030-k9.tar.gz

    Как видите, здесь лежит только загруженный нами ранее vpn клиент Cisco. Необходимо установить исходники ядра, но перед установкой рекомендую обновить пакеты, дабы не наставить дырявого и устаревшего ПО.

    root# aptitude update
    root# aptitude upgrade

    Систему обновили, теперь посмотрим, что у нас есть по ядрам в пакетах.

    root#aptitude search linux-image
    v   linux-image                                        -                                                             
    v   linux-image-2.6                                    -                                                             
    p   linux-image-2.6-486                                - Linux 2.6 image on x86                                      
    i   linux-image-2.6-686                                - Linux 2.6 image on PPro/Celeron/PII/PIII/P4                 
    p   linux-image-2.6-amd64                              - Linux 2.6 image on AMD64                                    
    p   linux-image-2.6-k7                                 - Linux 2.6 image on AMD K7 - transition package              
    p   linux-image-2.6.26-1-486                           - Linux 2.6.26 image on x86                                   
    i A linux-image-2.6.26-1-686                           - Linux 2.6.26 image on PPro/Celeron/PII/PIII/P4              
    p   linux-image-2.6.26-1-686-bigmem                    - Linux 2.6.26 image on PPro/Celeron/PII/PIII/P4              
    p   linux-image-2.6.26-1-amd64                         - Linux 2.6.26 image on AMD64                                 
    p   linux-image-2.6.26-1-openvz-686                    - Linux 2.6.26 image on PPro/Celeron/PII/PIII/P4, OpenVZ suppor
    p   linux-image-2.6.26-1-vserver-686                   - Linux 2.6.26 image on PPro/Celeron/PII/PIII/P4, Linux-VServer
    p   linux-image-2.6.26-1-vserver-686-bigmem            - Linux 2.6.26 image on PPro/Celeron/PII/PIII/P4, Linux-VServer
    p   linux-image-2.6.26-1-xen-686                       - Linux 2.6.26 image on i686, oldstyle Xen support            
    p   linux-image-2.6.26-2-486                           - Linux 2.6.26 image on x86                                   
    p   linux-image-2.6.26-2-686                           - Linux 2.6.26 image on PPro/Celeron/PII/PIII/P4
    p   linux-image-2.6.26-2-686-bigmem                    - Linux 2.6.26 image on PPro/Celeron/PII/PIII/P4              
    p   linux-image-2.6.26-2-amd64                         - Linux 2.6.26 image on AMD64                                 
    p   linux-image-2.6.26-2-openvz-686                    - Linux 2.6.26 image on PPro/Celeron/PII/PIII/P4, OpenVZ suppor
    p   linux-image-2.6.26-2-vserver-686                   - Linux 2.6.26 image on PPro/Celeron/PII/PIII/P4, Linux-VServer
    p   linux-image-2.6.26-2-vserver-686-bigmem            - Linux 2.6.26 image on PPro/Celeron/PII/PIII/P4, Linux-VServer
    p   linux-image-2.6.26-2-xen-686                       - Linux 2.6.26 image on i686, oldstyle Xen support            
    p   linux-image-686                                    - Linux image on PPro/Celeron/PII/PIII/P4

    Имеется новое ядро. Вот его и поставим. Напомню, что мы работаем со стабильной веткой Debian, если вы ставите эксперименты на боевой машине (сервере), подумайте хорошо –  сделайте копию. Ставим новое ядро и исходники к нему. Необходимые дополнительные библиотеки aptitude подхватит и установит сам. На всякий случай проверьте установлена ли утилита сборки проектов make. У меня ее почему-то не оказалось.

    root# aptitude install linux-image-2.6.26-2-686 linux-headers-2.6.26-2-686 make

    Проверяем содержимое …

    root# ls -l /usr/src
    итого 2020
    drwxr-xr-x  4 root root    4096 Июн  9 06:30 linux-headers-2.6.26-2-686
    drwxr-xr-x 18 root root    4096 Июн  9 06:30 linux-headers-2.6.26-2-common
    drwxr-xr-x  3 root root    4096 Июн  9 06:30 linux-kbuild-2.6.26
    -rw-r--r--  1 root src  2050813 Май 20 19:16 vpnclient-linux-x86_64-4.8.02.0030-k9.tar.gz

    Новое ядро установлено, исходные коды ядра тоже на месте, осталось только сделать рестарт системы и можно приступать к настройке и установке vpn клиента для Cisco.

    root# reboot

    Рестарт системы сделан. У нас имеется архив с клиентом, надо его распаковать и запустить сборку. Приступаем.

    user$ su
    root# cd usr/src
    root# tar xzvf vpnclient-linux-x86_64-4.8.02.0030-k9.tar.gz
    root# cd vpnclient

    Далее идут вопросы установщика и сборщика, отвечаем утвердительно.

    root# ./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.26-2-686/build]
    * Binaries will be installed in \"/usr/local/bin\".
    * Modules will be installed in \"/lib/modules/2.6.26-2-686/CiscoVPN\".
    * The VPN service will be started AUTOMATICALLY at boot time.
    * Kernel source from \"/lib/modules/2.6.26-2-686/build\" will be used to build the module.
    Is the above correct [y]
    Making module
    make -C /lib/modules/2.6.26-2-686/build SUBDIRS=/usr/src/vpnclient modules
    make[1]: Entering directory `/usr/src/linux-headers-2.6.26-2-686\'
      CC [M]  /usr/src/vpnclient/linuxcniapi.o
      CC [M]  /usr/src/vpnclient/frag.o
      CC [M]  /usr/src/vpnclient/IPSecDrvOS_linux.o
      CC [M]  /usr/src/vpnclient/interceptor.o
      CC [M]  /usr/src/vpnclient/linuxkernelapi.o
      LD [M]  /usr/src/vpnclient/cisco_ipsec.o
      Building modules, stage 2.
      MODPOST 1 modules
      CC      /usr/src/vpnclient/cisco_ipsec.mod.o
      LD [M]  /usr/src/vpnclient/cisco_ipsec.ko
    make[1]: Leaving directory `/usr/src/linux-headers-2.6.26-2-686\'
    Create module directory \"/lib/modules/2.6.26-2-686/CiscoVPN\".
    Copying module to directory \"/lib/modules/2.6.26-2-686/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.

    Клиент собрался и установлена поддержка в ядро необходимых протоколов для работы VPN клиента Cisco. Далее необходимо создать конфигурацию и инициализировать клиента. Инициализация требуется один раз, если вы после этого перезапустите систему, то клиент инициализируется сам и при последующих запусках тоже. Если этого не происходит (как в моем случае), то можно произвести инициализацию вручную. Пока не стал разбираться, почему автомат не работает.

    root# /etc/init.d/vpnclient_init start

    Теперь готовим файл конфигурации:

    root# cd /etc/CiscoSystemsVPNClient/Profiles
    root# cp sample.pcf имя_нового_профиля.pcf

    Если по каким-либо причинам профиль примера не создался, то вот его примерное содержимое:

    root# cat sample.pcf
    [main]
    Description=sample user profile
    Host=10.212.20.52
    AuthType=1
    GroupName=monkeys
    EnableISPConnect=0
    ISPConnectType=0
    ISPConnect=
    ISPCommand=
    Username=chimchim
    SaveUserPassword=0
    EnableBackup=0
    BackupServer=
    EnableNat=1
    CertStore=0
    CertName=
    CertPath=
    CertSubjectName=
    CertSerialHash=00000000000000000000000000000000
    DHGroup=2
    ForceKeepAlives=0

    Собствено редактирование профиля сводится к некоторым изменениям (чтоб их не вводить вручном режиме постоянно). Ниже выдержка, что необходимо поправить:

    root# pwd
    /etc/CiscoSystemsVPNClient/Profiles
    root# mcedit имя_нового_профиля.pcf

    строки для правки:

    Description=Краткое описание вашего профиля

    Host=IP_адрес_вашей_Cisco

    …

    GroupName=Имя_вашей_группы_в_домене

    …

    Username=Ваше_имя_в_домене_NT

    …

    NTDomain=Имя_вашего_домена

    Остальное можно оставить без изменения, но можно и не править ничего, при первом запуске у вас все это спросит клиент и автоматически запишет в файл конфигурации профиля. Подготовка клиента завершена, можно произвести пробное подключение.

    root# # vpnclient connect имя_вашего_профиля
    Cisco Systems VPN Client Version 4.8.01 (0640)
    Copyright (C) 1998-2007 Cisco Systems, Inc. All Rights Reserved.
    Client Type(s): Linux
    Running on: Linux 2.6.26-2-686 #1 SMP Thu May 28 15:39:35 UTC 2009 i686
    Config file directory: /etc/opt/cisco-vpnclient
    Initializing the VPN connection.
    Contacting the gateway at <span style=\"color: red; font-weight: bold;\">IP_адрес_вашей_Cisco</span>
    User Authentication for <span style=\"color: red; font-weight: bold;\">имя_вашего_профиля</span>...
    The server has requested the following information to complete the user authentication:
    Username [<span style=\"color: red; font-weight: bold;\">Ваше_имя_в_домене_NT</span>]:
    Password []:
    Authenticating user.
    Negotiating security policies.
    Securing communication channel.
    Your VPN connection is secure.
    VPN tunnel information.
    Client address: <span style=\"color: red; font-weight: bold;\">Ваш_локальный_адрес</span>
    Server address: <span style=\"color: red; font-weight: bold;\">IP_адрес_вашей_Cisco</span>
    Encryption: 168-bit 3-DES
    Authentication: HMAC-SHA
    IP Compression: None
    NAT passthrough is active on port UDP 4500
    Local LAN Access is disabled

    Подключение успешно выполнено. Как видим туннель на удаленную сеть открыт и готов к транспорту пакетов. Отключение можно выполнить банальным сочетанием Ctrl+C или в другой консоли вводом команды разрыва соединения.

    root# vpnclient disconnect

    В другой консоли можно проверить ping любого адреса в удаленной сети. Можете запускать RDP, VNC или другую систему управления серверами или компьютерами. Адреса указывайте такие, как будто вы находитесь в домашней сети. Все это можно оформить аккуратней, но как всегда лень. Зато у вас будет желание сделать все красивее и качественней. Удачи с экспериментами.

    http://www.qdesnic.ru/page/cisco_vpnclient.html