Vpnc

提供: ArchWiki
移動先: 案内検索

vpnc は Cisco のハードウェア VPN に接続するための VPN クライアントです。

インストール

vpnc パッケージをインストールしてください。

設定

vpnc の設定ファイルは /etc/vpnc に保存します。default.conf ファイルをコピーして変更を加えてください。

vpnc --long-help を実行すると様々な設定オプションの名前と説明が表示されます。例えば、以下のようなオプションの場合:

--gateway <ip/hostname>
    IP/name of your IPSec gateway
conf-variable: IPSec gateway<ip/hostname>

設定ファイルでは以下のように記述します:

IPSec gateway gateway.example.com

起動

vpnc パッケージには systemd ユニットの vpnc@.service が付属しています。例えば /etc/vpnc/client.conf 設定ファイルを使いたい場合、systemctl start vpnc@client で起動できます。

トラブルシューティング

vpnc クライアントが以下のようにクラッシュする場合:

May 15 09:11:38 ntrp-mimacom systemd-coredump[5858]: Process 5814 (vpnc) of user 0 dumped core.
                                                     
                                                     Stack trace of thread 5814:
                                                     #0  0x00007f835cba3a10 raise (libc.so.6)
                                                     #1  0x00007f835cba513a abort (libc.so.6)
                                                     #2  0x00007f835cb9c607 __assert_fail_base (libc.so.6)
                                                     #3  0x00007f835cb9c6b2 __assert_fail (libc.so.6)
                                                     #4  0x000000000040e48c n/a (vpnc)
                                                     #5  0x0000000000412348 n/a (vpnc)
                                                     #6  0x0000000000404f72 n/a (vpnc)
                                                     #7  0x00007f835cb90511 __libc_start_main (libc.so.6)
                                                     #8  0x000000000040596a n/a (vpnc)

ソフトウェアにモンキーパッチを適用する必要があります。

http://svn.unix-ag.uni-kl.de/vpnc/trunk/ からソースをダウンロードして vpnc.c ファイルに以下のようにパッチをあててください:

Index: vpnc.c
===================================================================
--- vpnc.c      (revision 550)
+++ vpnc.c      (working copy)
@@ -1206,7 +1206,7 @@
        assert(a->af == isakmp_attr_16);
        assert(a->u.attr_16 == IKE_LIFE_TYPE_SECONDS || a->u.attr_16 == IKE_LIFE_TYPE_K);
        assert(a->next != NULL);
-       assert(a->next->type == IKE_ATTRIB_LIFE_DURATION);
+       /* assert(a->next->type == IKE_ATTRIB_LIFE_DURATION); */

        if (a->next->af == isakmp_attr_16)
                value = a->next->u.attr_16;

一時的な解決方法は次のページあります: https://bbs.archlinux.org/viewtopic.php?id=225556