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配下にあり、サーバはグローバルをもつ。以下の図の通り。

サーバが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設定

事前共有キーを使う

ネットワーク - 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/