Home > 2月 24th, 2009

2009.02.24

L2TPでVPN接続

PPTPよりセキュリティの強いL2TPにチャレンジ。
OSはFedora8(i386)を使用してます。

1.IPsecのインストール
2.l2tpdのインストール
3.サービス起動
4.Windows XPを使っている場合の注意点

1.IPsecのインストール
L2TPはトンネルを作成するプロトコルでPPTPとは違い暗号化までは行われない。
そこでIPレベルでの暗号化を行うためIPsecをインストールします。
ここではopenswanを使用します。
http://www.openswan.org/
また、事前共有鍵方式と証明書方式があるが、ここでは事前共有鍵方式を使う。

とりあえずインストール。

# yum install openswan

設定ファイルをサンプルからコピー。
特に修正必要なし。

# cp /etc/ipsec.d/examples/l2tp-psk.conf /etc/ipsec.d/

事前共有鍵の作成。
/etc/ipsec.d/l2tp-psk.secrets

# vi /etc/ipsec.d/l2tp-psk.secrets

以下を入力。

: PSK "pre-shared-key"

2.l2tpdのインストール
実際にトンネルをはるプロトコル。
第2層のデータリンク層らしい。
ここではxl2tpdを使用する。

# yum install xl2tpd

ちなみにこのxl2tpdをCentOS5.2にインストールしようとしたところ
rpmはなくソースから適用しようとするとkernel2.6.23以上を求められた。
CentOS5.2のkernelは2.6.18である。面倒なので挫折。

L2TPの設定ファイルを編集。
/etc/xl2tpd/xl2tpd.conf

# vi /etc/xl2tpd/xl2tpd.conf

以下の内容を修正。
ここでは
サーバIP:192.168.0.1
割り当てIP:192.168.0.101-192.168.0.254
としているが、各自のネットワークを考慮して割り当ててください。

ip range = 192.168.0.101-192.168.0.254
local ip = 192.168.0.1

PPPの設定ファイルを編集。
/etc/ppp/options.xl2tpd

# vi /etc/ppp/options.xl2tpd

接続PCに割り当てるDNSとWINSを指定。
今回DNSはL2TPサーバ自身。WINSはなし。

ms-dns 192.168.0.1

また、同ファイルに以下を追加。
認証はmschap-v2を使えという指示。

refuse-pap
refuse-chap
refuse-mschap
require-mschap-v2
logfile /var/log/xl2tpd.l2tp-ipsec.log

VPNアクセスユーザアカウントの定義を作成。
/etc/ppp/chap-secrets

# vi /etc/ppp/chap-secrets

アカウントを追加。

ユーザ名 * パスワード *

こんな感じです。

3.サービス起動
サービスの登録と起動。

# chkconfig xl2tpd on
# chkconfig ipsec on
# /etc/init.d/xl2tpd start
# /etc/init.d/ipsec start

4.Windows XPを使っている場合の注意点
WindowsXP SP2ではL2TP/IPsecをNAT越しに利用できないようになっています。
これを利用できるようにするためレジストリの変更が必要となります。

regedit
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\IPsec
の中に
"AssumeUDPEncapsulationContextOnSendRule"
というDWORD値を作り、値に"2"を設定する。

詳しくはMicrosoftのページへhttp://support.microsoft.com/kb/885407/jaへ。

以上でサービスの構築は終了です。
WindowsXPなどのクライアントから接続してみてください。

ルーティングなどに関してはPPTPdの構築記をご参照あれ。