OpenSwanでl2tp IPsec VPN環境

OpenSwanとは

OpenSwanとはLinuxでのIPsec実装となり、FreeS/WANの後継プロジェクトとなる。

l2tp IPsecとは

l2tpとはレイヤー2でカプセリングしVPNを構成をするプロトコル。ちなみに、カプセル化自体はIPsecのトンネルモードを使用すれば可能。つまり、l2tp IPsecじゃなく、IPsecのみでもVPN環境は可能。WindowsはIPsecも可能だが個人的に使い勝手が気に入らないのでl2tp IPsecを使うことにした。

IPsecとはデータの暗号化。IPsecの実装は複雑でまだ完全に仕様が決まっていないと思う。IPsecについて細かいことは、いろんなサイトで細かい説明があるのでそれを参照してほしい。

ネットワーク構成

クライアントはWindowsでVPNソフトはOS標準を使う。クライアントはNAT配下にあり、サーバはグローバルをもつ。以下の図の通り。

l2tp IPsec ネットワーク構成図

サーバがNAT内にいる場合には対処が必要となる。以下のサーバがNAT内にいる場合を参照(まだ書いてる途中・・・・)。

インストール

OpenSwanとl2tpdをインスト

apt-get install openswan l2tpd

OpenSwanインスト時に証明書を作るのとかいろいろ聞かれるが全部デフォルトでOK

サーバ設定

OpenSwan基本設定

まずOpenSwanの設定。/etc/ipsec.conf

version 2.0
config setup
        nat_traversal=yes
        nhelpers=0

conn L2TP-PSK
        type=transport
        ike=3des-md5
        esp=3des-md5
        authby=secret
        pfs=no
        rekey=no
        keyingtries=3
        left=%defaultroute
        leftnexthop=%defaultroute
        leftprotoport=17/1701
        right=%any
        rightprotoport=17/%any
        auto=add

include /etc/ipsec.d/examples/no_oe.conf

IPsecはl2tpでカプセル化するのでトランスポートモードで3DESのMD5。AESは使えない。証明書はめんどいので事前共有鍵にする。

OpenSwan事前共有鍵

パスワードみたいなもん。/etc/ipsec.secrets

: PSK "1234567890"

全部共通な事前共有鍵になる。複数のVPNなどを使用するなら以下の様に書く

1.1.1.1 2.2.2.2 : PSK "1234567890"

l2tpの設定

次にカプセリングと認証をするl2tpの設定。/etc/l2tpd/l2tpd.con

[lns default]
ip range = 192.168.0.40-192.168.0.50
local ip = 192.168.0.78
require chap = yes
refuse pap = yes
require authentication = yes
name = LinuxVPNserver
ppp debug = yes
pppoptfile = /etc/ppp/options.l2tpd
length bit = yes

local ipってのがl2tpd自体が持つIP(何に使うのかわかってない・・・)。ip rangeってのがクライアントに割り振るIP。

l2tp認証設定

l2tpで認証もさせる。/etc/ppp/options.l2tpd

require-mschap-v2
nodefaultroute
debug
lock
nobsdcomp

l2tpパスワードファイル

l2tpでのパスワードファイル。/etc/ppp/chap-secrets

user LinuxVPNserver password *

左からユーザ名、PPPサーバ名、パスワード、許可IPアドレス範囲

クライアント設定

コントロールパネル - ネットワーク接続 - 新しい接続を作成する

職場のネットワークへ接続する

職場のネットワークへ接続する

仮想プライベートネットワーク接続

仮想プライベートネットワーク接続

任意の接続名称

任意の接続名称

接続先サーバ名

接続先サーバ名

接続の利用範囲(環境に合わせて)

接続の利用範囲

完了

ユーザ名、パスワード、保存(任意)

ユーザ名、パスワード、保存

プロパティ - セキュリティ - IPSec設定

IPSec設定

事前共有キーを使う

事前共有キーを使う

ネットワーク - VPNの種類 - L2TP IPSec VPN

L2TP IPSec VPN

インターネットプロトコル - プロパティ - 詳細設定

詳細設定

全般 - 「リモートネットワークでデフォルトゲートウェイ」を使うのチェックを外す

リモートネットワークでデフォルトゲートウェイ

接続

クライアントから接続を行う。サーバ側には以下にログが出力されるのでチェックする。

  • IPsecログ:/var/log/auth.log
  • l2tpdログ:/var/log/debug.log、messages、daemon.log

IPSecログ

IPSecが成功すると以下のログが出力される

STATE_MAIN_R3: sent MR3, ISAKMP SA established {auth=OAKLEY_PRESHARED_KEY cipher=oakley_3des_cbc_192 prf=oakley_md5 group=modp1024}
STATE_QUICK_R2: IPsec SA established {ESP=>0xe6dfb0df <0x82ebabf0 xfrm=3DES_0-HMAC_MD5 NATD=xxx.xxx.xxx.xxx:4500 DPD=none}

大抵IPSecでハマルと思うので都度エラーログをgoogleとかで検索して調べてください。

l2tpdログ

複数のログでまたがるが基本的にmessagesに以下のログが出力されれば問題ないだろう

Connect: ppp0 <--> /dev/pts/2
found interface eth1 for proxy arp
local  IP address 192.168.0.78
remote IP address 192.168.0.40

接続試験

pingなりCIFSなり、その環境でいろいろ試してください

参考ページ

  • http://www.jacco2.dds.nl/networking/

debian Valid HTML 4.01 Strict [VALID RSS!]