2011年07月14日

Ubuntu 11.04(Desktop)でCISCO VPN Clientを使う

その昔、僕のSONY VAIO VPCX119KJでWindows 7が動いていた頃にはCISCO VPN Clientを使っていたんですが、Ubuntuにしたら使えないというのも不便なのでUbuntu 11.04上で動かしてみました。

Linux版VPN Clientのインストール


現時点での最新版はvpnclient-linux-x86_64-4.8.02.0030-k9.tar.gzですね。
これをダウンロードして適当な場所に保存・解凍します。

$ tar xvzf 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/config.h
vpnclient/libdriver64.so
vpnclient/libdriver.so
vpnclient/Makefile 

作成されたvpnclientディレクトリに移動し、sudo vpn_installを実行すると、

$ cd vpnclient
 
$ sudo ./vpn_install
[sudo] password for hoge:
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]no
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-8-generic/build]
* Binaries will be installed in "/usr/local/bin".
* Modules will be installed in "/lib/modules/2.6.38-8-generic/CiscoVPN".
* The VPN service will *NOT* be started automatically at boot time.
* Kernel source from "/lib/modules/2.6.38-8-generic/build" will be used to build the module.
Is the above correct [y]y
Shutting down /opt/cisco-vpnclient/bin/vpnclient: module cisco_ipsec is not running.
Stopped: /etc/init.d/vpnclient_init (VPN init script)
Making module
make -C /lib/modules/2.6.38-8-generic/build SUBDIRS=/tmp/vpnclient modules
make[1]: ディレクトリ `/usr/src/linux-headers-2.6.38-8-generic' に入ります
  CC [M]  /tmp/vpnclient/linuxcniapi.o
/tmp/vpnclient/linuxcniapi.c:14:28: fatal error: linux/autoconf.h: そのようなファイルやディレクトリはありません
compilation terminated.
make[2]: *** [/tmp/vpnclient/linuxcniapi.o] エラー 1
make[1]: *** [_module_/tmp/vpnclient] エラー 2
make[1]: ディレクトリ `/usr/src/linux-headers-2.6.38-8-generic' から出ます
make: *** [default] エラー 2
Failed to make module "cisco_ipsec.ko".

「/tmp/vpnclient/linuxcniapi.c:14:28: fatal error: linux/autoconf.h: そのようなファイルやディレクトリはありません」と出力されてインストール出来ません・・・。Googleで検索すると幾つかパッチもあるようなのですが、どれも同じ状況。

無理なのかなぁとフラフラしていると、こちらのサイトでfixes-2.6.38.patchなるものがある事を確認。
名前からしてUbuntu 11.04のカーネル・バージョンと一致しており期待できそうです。

説明にある通りに先ほど作成されたvpnclientディレクトリにパッチをダウンロード。

wget http://www.lamnk.com/download/fixes-2.6.38.patch 

patchコマンドでパッチを適用

$ patch < fixes-2.6.38.patch
patching file frag.c
patching file interceptor.c
patching file IPSecDrvOS_linux.c
patching file linuxcniapi.c
patching file linuxcniapi.h
patching file linuxkernelapi.c
patching file Makefile

もう一度インストール。

$ 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]
Automatically start the VPN service at boot time [yes]no
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-8-generic/build]
* Binaries will be installed in "/usr/local/bin".
* Modules will be installed in "/lib/modules/2.6.38-8-generic/CiscoVPN".
* The VPN service will *NOT* be started automatically at boot time.
* Kernel source from "/lib/modules/2.6.38-8-generic/build" will be used to build the module.
Is the above correct [y]y
Making module
make -C /lib/modules/2.6.38-8-generic/build SUBDIRS=/home/netbuffalo/Downloads/cisco/vpnclient-64/vpnclient modules
make[1]: ディレクトリ `/usr/src/linux-headers-2.6.38-8-generic' に入ります
  CC [M]  /home/netbuffalo/Downloads/cisco/vpnclient-64/vpnclient/linuxcniapi.o
  CC [M]  /home/netbuffalo/Downloads/cisco/vpnclient-64/vpnclient/frag.o
  CC [M]  /home/netbuffalo/Downloads/cisco/vpnclient-64/vpnclient/IPSecDrvOS_linux.o
  CC [M]  /home/netbuffalo/Downloads/cisco/vpnclient-64/vpnclient/interceptor.o
  CC [M]  /home/netbuffalo/Downloads/cisco/vpnclient-64/vpnclient/linuxkernelapi.o
  LD [M]  /home/netbuffalo/Downloads/cisco/vpnclient-64/vpnclient/cisco_ipsec.o
  Building modules, stage 2.
  MODPOST 1 modules
WARNING: could not find /home/netbuffalo/Downloads/cisco/vpnclient-64/vpnclient/.libdriver.so.cmd for /home/netbuffalo/Downloads/cisco/vpnclient-64/vpnclient/libdriver.so
  CC      /home/netbuffalo/Downloads/cisco/vpnclient-64/vpnclient/cisco_ipsec.mod.o
  LD [M]  /home/netbuffalo/Downloads/cisco/vpnclient-64/vpnclient/cisco_ipsec.ko
make[1]: ディレクトリ `/usr/src/linux-headers-2.6.38-8-generic' から出ます
Create module directory "/lib/modules/2.6.38-8-generic/CiscoVPN".
Copying module to directory "/lib/modules/2.6.38-8-generic/CiscoVPN".
Already have group 'bin'
Creating start/stop script "/etc/init.d/vpnclient_init".
    /etc/init.d/vpnclient_init
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.
* You will need to run this script every time you reboot your computer.

お、インストール出来ました。


起動と接続


sudo vpnclient_init  startでサービスを起動します。

$ sudo /etc/init.d/vpnclient_init start
Starting /opt/cisco-vpnclient/bin/vpnclient: Done

次にWindowsクライントで使っていたVPN接続設定ファイル(pfcファイル)を/etc/opt/cisco-vpnclient/Profiles/にコピーします。
※画面からエクスポートするか、C:¥Program Files¥Cisco Systems¥VPN Client¥Profilesからコピー。

$ ls /etc/opt/cisco-vpnclient/Profiles/
hoge.pcf  sample.pcf

ここではhoge.pcfとしてUbuntuにコピーしました。
(もし、ファイルの中身に余計な記述があればテキストエディタで開いてコメントアウト)

sudo vpnclient  connect  [pcfファイル名]で接続してみると、

$ vpnclient connect hoge
 
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.38-8-generic #42-Ubuntu SMP Mon Apr 11 07:31:50 UTC 2011 i686
Config file directory: /etc/opt/cisco-vpnclient
Initializing the VPN connection.
Contacting the gateway at xxx.xxx.xxx.xxx
User Authentication for hoge...
Enter Username and Password.
Username [username]: ********
Password []:
Authenticating user.
Negotiating security policies.
Securing communication channel.
 
******************* hoge-vpn ************************
Do you wish to continue? (y/n): y
 
Your VPN connection is secure.
VPN tunnel information.
Client address: 192.168.xxx.xxx
Server address: xxx.xxx.xxx.xxx
Encryption: 168-bit 3-DES
Authentication: HMAC-MD5
IP Compression: None
NAT passthrough is inactive
Local LAN Access is disabled

VPN接続出来ました。ifconfigでネットワーク・インタフェースを確認すると、VPN用のインタフェースであるcipsec0が作成されています。

$ ifconfig
cipsec0   Link encap:イーサネット  ハードウェアアドレス 00:0b:fc:f8:01:8f 
          inetアドレス:192.168.xxx.xxx  マスク:255.255.255.x
          UP RUNNING NOARP  MTU:1356  メトリック:1
          RXパケット:0 エラー:0 損失:4 オーバラン:0 フレーム:0
          TXパケット:0 エラー:0 損失:24 オーバラン:0 キャリア:0
          衝突(Collisions):0 TXキュー長:1000
          RXバイト:0 (0.0 B)  TXバイト:0 (0.0 B)

以上でおしまい。

VPNを切断する場合は、端末(Terminal)から次のコマンドを実行します。

$ vpnclient disconnect

Windows版のように操作画面は無いので使う人を選びそうですが。



Ciscoネットワーク構築教科書[設定編]
ダイワボウ情報システム株式会社 シスコシステムズ合同会社 
インプレスジャパン 
売り上げランキング: 44141


Cisco CCNA(640-802J)試験 完全合格問題集
廣田 正俊 
アスキー・メディアワークス 
売り上げランキング: 51919

Posted by netbuffalo at 12:45│TrackBack(0) ネットワーク | Linux


この記事へのトラックバックURL

http://trackback.blogsys.jp/livedoor/netbuffalo/3387377