仮想化生活への軌跡

Feed Rss


VPNサーバー(L2TP/IPsec)の構築

10.26.2013, Ubuntu Server, VPN, by .

はじめに

L2TP/IPsecサーバーをVMware ESXiの仮想マシン(Ubuntu Server)上で構築したので、その手順をメモしておきます。


PPTPとの違い

以前に当サイトで紹介したPPTPよりも暗号化レベルが高く(PPTPが128bitに対し、L2TP/IPsecは256bit)、より安全な通信を可能にする反面、より高度なCPU処理能力が求められます。

認証方式にも違いがあり、PPTPではIDとパスワードのみで接続を行いますが、L2TP/IPsecではこれらに加えて事前共有鍵(PSK)をクライアントに要求することにより、第三者による不正ログインのリスクを更に軽減しています(注:本稿で構築するVPNではX.509証明書を使用しません)。

多少の速度的なメリットを減殺しつつも、より安全性を志向するVPNプロトコルであるといえます。


前提となる環境

● Ubuntu Server 12.04 x64
● サーバーがルーター下に配置されていること


構築手順

■ アプリのインストール

ルート権限を取得し、レポジトリ情報をアップデートした上で必要なアプリをパッケージインストールします。
途中で証明書の作成の有無を尋ねられますが、「いいえ」を選択してください。
sudo su -
apt-get update
apt-get install openswan xl2tpd


■ IPv4フォワーディングの設定
エディタで /etc/sysctl.conf を開き、IPv4フォワーディングを有効化します。
これにより、VPNサーバーに接続したクライアントと他のサーバー間での通信をVPNサーバーが仲介(ブリッジ)できるようになります。
net.ipv4.ip_forward=1
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.accept_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.eth0.accept_redirects = 0
net.ipv4.conf.eth0.send_redirects = 0
net.ipv4.conf.lo.accept_redirects = 0
net.ipv4.conf.lo.send_redirects = 0


以下のコマンドで設定を反映させます。
sysctl -p


■ IPsecの設定
エディタで /etc/ipsec.conf を開き、以下のように編集します。
version 2.0
config setup
       dumpdir=/var/run/pluto/
       nat_traversal=yes
       virtual_private=%v4:10.0.0.0/8,%v4:192.168.0.0/16,%v4:172.16.0.0/12,%v4:192.168.0.0/24	←末尾にローカルネットワークの範囲を指定
       oe=off
       protostack=netkey
       nhelpers=0
include /etc/ipsec.d/*.conf


続いてエディタで /etc/ipsec.d/l2tp-psk.conf を開き、VPNコネクションを設定します。
conn L2TP-PSK-NAT
        rightsubnet=vhost:%priv
        forceencaps=yes
        also=L2TP-PSK-noNAT
conn L2TP-PSK-noNAT
        authby=secret
        pfs=no
        auto=add
        keyingtries=3
        rekey=no
        dpddelay=10
        dpdtimeout=90
        dpdaction=clear
        ikelifetime=8h
        keylife=1h
        type=transport
        left=192.168.0.xxx  ←VPNサーバーのローカルIPを指定
        leftprotoport=17/1701
        right=%any
        rightprotoport=17/%any



さらにエディタで /etc/ipsec.secrets を開き、事前共有鍵を設定します。
不正アクセスを防止するため、可能な限り長く複雑な鍵の設定を行ってください。
: PSK "ここに事前共有鍵を記述"


■ L2TPの設定
エディタで /etc/xl2tpd/xl2tpd.conf を開き、以下のように編集します。
[global]
auth file = /etc/ppp/chap-secrets

[lns default]
ip range = 192.168.0.xxx-192.168.0.yyy  ←クライアントに割り当てるローカルIPの範囲を指定
local ip = 192.168.0.xxx  ←VPNサーバーのローカルIPを指定
assign ip = yes
refuse chap = yes
refuse pap = yes
require authentication = yes
name = VPNサーバーのホスト名
ppp debug = no
pppoptfile = /etc/ppp/options.l2tpd.lns
length bit = yes


続いてエディタで /etc/ppp/options.l2tpd.lns を開き、以下のように編集します。
require-mschap-v2
ipcp-accept-local
ipcp-accept-remote
ms-dns xxx.xxx.xxx.xxx  ←クライアントに通知するDNSのアドレス
noccp
auth
crtscts
idle 1800
nodefaultroute
debug
lock
proxyarp
connect-delay 5000
logfile /var/log/xl2tpd.l2tp-ipsec.log


■ ユーザー情報の設定
エディタで /etc/ppp/chap-secrets を開き、VPNサーバーに接続するユーザーの情報を設定します。
username VPNサーバーのホスト名 "パスワード" *


設定を終えたらデーモンを再起動して内容を反映します。
/etc/init.d/ipsec restart
/etc/init.d/xl2tpd restart


ポートの開放

ルーター上のポートマッピング設定で、VPNサーバーに対し、500/UDP、4500/UDP、1701/UDPをそれぞれ開放します。


Advertisement


RelatingPosts

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です


*