CentOS5.5でL2TP/IPsecサーバを設定する

以下のサイトを参考にしまして,CentOS5.5でL2TP/IPSecサーバを設定しました.

xl2tpdの設定

L2TPとしてxl2tpdを使用しました.
アーカイブ(xl2tpd-1.2.8.tar.gz)とビルドに必要なパッケージのインストールを行います.

# yum install libpcap-devel ppp

ソースコードを展開して,ビルド後インストールを行います.

# tar zxvf xl2tpd-1.2.8.tar.gz
# cd xl2tpd-1.2.8
# make
# make install

サービスを登録します

# cp packaging/fedora/xl2tpd.init /etc/init.d/xl2tpd
# chmod 755 /etc/init.d/xl2tpd
# chkconfig --add xl2tpd

xl2tpdで提供しているスクリプトではパスが通らないため,シンボリックリンクを作成します.

# ln -s /usr/local/sbin/xl2tpd /usr/sbin/xl2tpd

設定ファイルをコピーします.

# mkdir /etc/xl2tpd
# cp examples/xl2tpd.conf /etc/xl2tpd
# cp examples/ppp-options.xl2tpd /etc/ppp/options.xl2tpd

サービスを登録し,自動起動設定を行います.

# chkconfig xl2tpd on
# service xl2tpd start

設定情報については前のエントリーが参考になります.

IPSec PSKの設定

IPSecの実装としてOpenSwanを使用しました.
こちらもソースコードから設定を行います.openswan-2.6.33.tar.gzを使いました.

ビルドに必要なパッケージをインストールします.

# yum install make gcc gmp-devel bison flex

ソースコードを展開してインストールを行います.

# tar zxvf openswan-2.6.33.tar.gz
# cd openswan-2.6.33
# make programs
# make install

設定のサンプルファイルをコピーします.

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

サービスを登録します.

# chkconfig --add ipsec

OpenSwan自身の設定を行います.

# vi /etc/ipsec.conf
config setup
dumpdir=/var/run/pluto/
nat_traversal=yes
oe=off
protostack=netkey
include /etc/ipsec.d/*.conf

L2TP/IPSec-PSKに関する設定を行います.
ここで「forceencaps=yes」を追加しないとAndroidをクライアントにする場合認証で問題がでてきます.

# vi /etc/ipsec.d/l2tp-psk.conf
conn L2TP-PSK-NAT
rightsubnet=0.0.0.0/0
forceencaps=yes
also=L2TP-PSK-noNAT
conn L2TP-PSK-noNAT
authby=secret
pfs=no
auto=add
keyingtries=3
rekey=no
ikelifetime=8h
keylife=1h
type=transport
left=%defaultroute
leftnexthop=%defaultroute
leftprotoport=17/%any
right=%any
rightprotoport=17/%any

事前共有鍵を設定します.ここでは「abcdefghij」とします.

# vi /etc/ipsec.secrets
: PSK "abcdefghij"

sysctl.confファイルを変更します.

# vi /etc/sysctl.conf
net.ipv4.ip_forward = 1 # = 0 を 1 にします

net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.lo.send_redirects = 0
net.ipv4.conf.eth0.send_redirects = 0
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.default.accept_redirects = 0
net.ipv4.conf.lo.accept_redirects = 0
net.ipv4.conf.eth0.accept_redirects = 0

sysstlの設定を有効化します

# sysctl -p

IPSecの設定を確認します.

# ipsec verify