それでは前回(その1・解説編)の続きで設定していきましょう。
段取りは
- L2TPサーバのインストール・設定
- 通信を暗号化するためのIPSecのインストール・設定
- IPSec動作確認
前提
私が使用しているさくらのVPSでのデフォルトOS、CentOS6.4での作業を前提としています。 VPNで設定するLANのIPアドレスは192.168.222.1〜192.168.222.32とします。 サーバのIPアドレスは192.168.222.1、クライアントに192.168.222.2〜32を割り当てます。 通信の暗号化は「共有暗号鍵」を用いて行います。 接続に際しては、CHAPによる認証を行います。
設定ファイルの中身については、記事作成時点で私自身が目的とする動作を達成できている内容となります。 自分で設定される際には、参考にとどめて、自己責任でよろしくお願いします。
L2TPインストール
# yum install xl2tpd
以上で、インストールは終わりです。
「/etc/xl2tpd/xl2tpd.conf」を編集します。 コメント行は省いてあります。
[lns default]
ip range = 192.168.222.2-192.168.222.32
local ip = 192.168.222.1
require chap = yes
refuse pap = yes
require authentication = yes
name = LinuxVPNserver
ppp debug = yes
pppoptfile = /etc/ppp/options.xl2tpd
length bit = yes
続いて、「/etc/ppp/options.xl2tpd」を編集します。
name xl2tpd
auth
refuse-pap
refuse-chap
refuse-mschap
require-mschap-v2
crtscts
defaultroute
lock
mtu 1410
mru 1410
ms-dns xxx.xxx.xxx.yyy
ms-dns xxx.xxx.xxx.zzz
persist
proxyarp
noccp
idle 1800
debug
connect-delay 5000
ipcp-accept-local
ipcp-accept-remote
logfile /var/log/xl2tpd.log
このファイルの先頭行でつけた名前は、「/etc/ppp/chap-secrets」で記載することになります。 ms-dnsの指定は、私の場合はさくらのVPSの設定でわかっていたDNSサーバのIPアドレスを記載しました。
IPSecのインストール・Openswan
通信暗号化のための、IPSecの機能は「Openswan」で実現します。
# yum install openswan
インストールをしたら、設定ファイルの編集です。 「/etc/ipsec.conf」から。
version 2.0
config setup
protostack=netkey
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.222.0/24
oe=off
nhelpers=0
include /etc/ipsec.d/*.conf
L2TP接続に必要な内容を、「/etc/ipsec.d/l2tp-psk.conf」として作成します。 この設定ファイルは上記の"include /etc/ipsec.d/*.conf"で読み込まれます。
conn L2TP-PSK-NAT
rightsubnet=vhost:%priv
forceencaps=yes
also=L2TP-PSK-noNAT
conn L2TP-PSK-noNAT
type=transport
ike=3des-md5
esp=3des-md5
forceencaps=no
authby=secret
pfs=no
rekey=no
keyingtries=3
left=%defaultroute
leftnexthop=%defaultroute
leftprotoport=17/1701
right=%any
rightprotoport=17/%any
auto=add
dpddelay=5
dpdtimeout=20
dpdaction=clear
iOSデバイスでの接続のために、dpddelay,dpdtimeout,dpdactionという設定内容が必要ということです。
共有暗号鍵は「/etc/ipsec.d/default.secrets」の中に記載します。
: PSK "secrets"
rootアカウント以外では見られないようにしておきます。 以下のコマンドで、group,othersからread,write,executeの権限をなくします。
# chmod go-rwx /etc/ipsec.d/default.secrets
L2TP/IPSecのサーバ起動
以下のコマンドでサービスを開始し、再起動時にサーバ起動するように設定します。
# service ipsec start
# service xl2tpd start
# chkconfig ipsec on
# chkconfig xl2tpd on
Openswanの動作確認
IPSecが無事動作するか確認するために、下記のコマンドを実行します。
# ipsec verify
Checking your system to see if IPsec got installed and started correctly:
Version check and ipsec on-path [OK]
Linux Openswan U2.6.32/K2.6.32-220.7.1.el6.x86_64 (netkey)
Checking for IPsec support in kernel [OK]
SAref kernel support [N/A]
NETKEY: Testing for disabled ICMP send_redirects [FAILED]
Please disable /proc/sys/net/ipv4/conf/*/send_redirects
or NETKEY will cause the sending of bogus ICMP redirects!
NETKEY detected, testing for disabled ICMP accept_redirects [FAILED]
Please disable /proc/sys/net/ipv4/conf/*/accept_redirects
or NETKEY will accept bogus ICMP redirects!
Checking that pluto is running [OK]
Pluto listening for IKE on udp 500 [OK]
Pluto listening for NAT-T on udp 4500 [OK]
Checking for 'ip' command [OK]
Checking /bin/sh is not /bin/dash [WARNING]
Checking for 'iptables' command [OK]
Opportunistic Encryption Support [DISABLED]
FAILEDとなっている箇所の対応
NETKEY: Testing for disabled ICMP send_redirects [FAILED]
NETKEY detected, testing for disabled ICMP accept_redirects [FAILED]
この二行に対応します。メッセージのなかに「Please disabled」という指示がありますので、各デバイスごとにリダイレクトを無効にするべく、「/etc/sysctl.conf」で下記を追記しました。
net.ipv4.ip_forward = 1
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.default.accept_redirects = 0
net.ipv4.conf.lo.send_redirects = 0
net.ipv4.conf.lo.accept_redirects = 0
net.ipv4.conf.eth0.send_redirects = 0
net.ipv4.conf.eth0.accept_redirects = 0
また、NATによるフォワーディングに必要なためip_forwardを有効にしています。 ファイル更新後に下記コマンドを実行して設定を有効にします。
# sysctl -p
では、あらためて、
# ipsec verify
Checking your system to see if IPsec got installed and started correctly:
Version check and ipsec on-path [OK]
Linux Openswan U2.6.32/K2.6.32-220.7.1.el6.x86_64 (netkey)
Checking for IPsec support in kernel [OK]
SAref kernel support [N/A]
NETKEY: Testing for disabled ICMP send_redirects [OK]
NETKEY detected, testing for disabled ICMP accept_redirects [OK]
Checking that pluto is running [OK]
Pluto listening for IKE on udp 500 [OK]
Pluto listening for NAT-T on udp 4500 [OK]
Checking for 'ip' command [OK]
Checking /bin/sh is not /bin/dash [WARNING]
Checking for 'iptables' command [OK]
Opportunistic Encryption Support [DISABLED]
FAILEDがなくなりました。
CHAPのアカウント設定
「/etc/ppp/options.xl2tpd」で記載しておいたとおり、CHAPで認証を行いますので、「/etc/ppp/chap-secrets」に認証情報を登録します。「xl2tpd」というのが接続設定名です。
# Secrets for authentication using CHAP
# client server secret IP addresses
"vpn-account" "xl2tpd" "vpn-secret" *
アカウント名は「vpn-account」、パスワードは「vpn-secret」というアカウントができました。 接続元は特に制限しないため、アスタリスクを設定しています。
接続してみる
図の状態になれるはずです。
デバイスの側から設定しましょう。 詳しくは次回やってみようと思いますので、ひとまず、iOSデバイスからの接続の例。
- 「サーバ」には、サーバのIPアドレス
- 「アカウント」には、/etc/ppp/chap-secretsに設定したアカウント「vpn-account」
- 「パスワード」には、/etc/ppp/chap-secretsに設定したパスワード「vpn-secret」
- 「シークレット」には、/etc/ipsec.d/default.secretsに設定した共有鍵「secret」
を設定します。VPNをONにして接続できれば成功です。
OpenVPNで構築する超簡単VPN入門―Windows/Mac OS X/Linux対応
- 作者: ケイズプロダクション
- 出版社/メーカー: ラトルズ
- 発売日: 2006/09
- メディア: 単行本
- 購入: 1人 クリック: 36回
- この商品を含むブログ (8件) を見る