なんかネタ提供がありましたので、
早速やってみました。
OS・・・Debian squeeze 6.0.5
Kernel・・・2.6.32-5-amd64
IPSec・・・openswan
L2TP・・・xl2pd
さっくり
# apt-get install openswan xl2tpd lsof
必要なインストールはこれだけなんですが、
設定ファイルがあちこちにあり統一感ナシです。。。。
1)L2TPの設定
基本設定
L2TP/IPSecサーバ・・・192.168.100.2
クライアント割り当て・・・192.168.100.101〜120
接続名・・・l2tp
L2TPパスワード・・・/etc/ppp/chap-secrets
オプション設定・・・/etc/ppp/options.l2tpd.lns
# vi /etc/xl2tpd/xl2tpd.conf [global] auth file = /etc/ppp/chap-secrets [lns default] ip range = 192.168.100.100-192.168.100.120 local ip = 192.168.100.2 length bit = yes name = l2tp pppoptfile = /etc/ppp/options.l2tpd.lns
接続時のユーザ名とパスワードの設定
ユーザ名・・・hogename
パスワード・・・hogehoge
# vi /etc/ppp/chap-secrests # Secrets for authentication using CHAP # client server secret IP addresses hogename l2tp "hagehoge" *
serverに「*」を指定してもOKです。
クライアントに通知するDNSサーバ
プライマリ・・・192.168.100.1
セカンダリ・・・8.8.8.8
ログファイル・・・/var/log/xl2tpd.log
詳細設定
# vi /etc/ppp/options.l2tpd.lns ipcp-accept-local ipcp-accept-remote refuse-pap refuse-chap refuse-mschap require-mschap-v2 noccp nodefaultroute auth crtscts idle 1800 debug lock proxyarp connect-delay 5000 logfile /var/log/xl2tpd.log mtu 1420 mru 1420 ms-dns 192.168.100.1 ms-dns 8.8.8.8
MTU、MRUはもっと大きくしてもいいかも。
2)IPSecの設定
基本設定
# vi /etc/ipsec.conf version 2.0 config setup nat_traversal=yes virtual_private=%v4:10.0.0.0/8,%v4:192.168.0.0/16,%v4:172.16.0.0/12 oe=off protostack=netkey nhelpers=0 include /etc/ipsec.d/*.conf
protostack=autoからnetkeyへ変更する程度。。。
事前共通キー・・・hoge-psk-key
# vi /etc/ipsec.secrets %defaultroute %any : PSK "hoge-psk-key"
IPSecとL2TPの設定
# vi /etc/ipsec.d/l2tp-psk.conf conn L2TP-PSK-NAT rightsubnet=vhost:%priv forceencaps=yes authby=secret pfs=no auto=add keyingtries=3 rekey=no ikelifetime=8h keylife=1h type=transport left=%defaultroute leftprotoport=17/1701 right=%any rightprotoport=17/%any
Left=L2TP/IPSecサーバ側
Right=クライアント側
forceencaps=yesだとWindowsから繋がらない場合がある?
「no」にする。
ipsecの設定確認(現時点ではエラーする)
# ipsec verify Checking for RSA private key (/etc/ipsec.secrets) [OK] Checking that pluto is running [OK] Pluto listening for IKE on udp 500 [FAILED] Cannot execute command "lsof -i UDP:500": そのようなファイルやディレクトリはありません Pluto listening for NAT-T on udp 4500 [FAILED] Cannot execute command "lsof -i UDP:4500": そのようなファイルやディレクトリは ありません Checking for 'ip' command [OK] Checking for 'iptables' command [OK] Opportunistic Encryption Support [DISABLED]
いくつかFAILEDが出ます。
エラーするのでカーネルパラメータを設定します。
# vi /etc/sysctl.conf net.ipv4.ip_forward = 1 net.ipv4.conf.all.send_redirects = 0 net.ipv4.conf.default.send_redirects = 0 net.ipv4.conf.eth0.send_redirects = 0 net.ipv4.conf.lo.send_redirects = 0 net.ipv4.conf.all.accept_redirects = 0 net.ipv4.conf.default.accept_redirects = 0 net.ipv4.conf.eth0.accept_redirects = 0 net.ipv4.conf.lo.accept_redirects = 0 # sysctl -p
再起動しなくてもOK。
3)各サービスの起動
Syslogも再起動しておきます。
# /etc/init.d/rsyslog restart # /etc/init.d/ipsec restart # /etc/init.d/xl2tpd restart
これで、起動したはず。。。
確認
# netstat -lanput |grep pluto udp 0 0 127.0.0.1:500 0.0.0.0:* 9189/pluto udp 0 0 192.168.100.2:500 0.0.0.0:* 9189/pluto udp 0 0 127.0.0.1:4500 0.0.0.0:* 9189/pluto udp 0 0 192.168.100.2:4500 0.0.0.0:* 9189/pluto # netstat -lanput |grep xl2tpd udp 0 0 0.0.0.0:1701 0.0.0.0:* 9232/xl2tpd
xl2tpdの設定ミスにより上がらない場合は
# /usr/sbin/xl2tpd -D
とすれば、どこでエラーしているのかがわかります。
(僕はハマりました・・・)
ログを見る
# tail -f /var/log/auth.log IPsec SA established transport mode・・・・
このようなログが出ればIPSecはOK。
# tail -f /var/log/xl2tpd.log found interface eth0 for proxy arp local IP address 192.168.100.2 remote IP address 192.168.100.101 Script /etc/ppp/ip-up started (pid 896) Script /etc/ppp/ip-up finished (pid 896), status = 0x0
このような感じで、クライアントから接続すると、見えると思います。
Android端末から接続すると
Unsupported protocol 'Compression Control Protocol' (0x80fd) received
と言われますが、気になる人は、
# vi /etc/ppp/options.l2tpd.lns # noccp
とすれば吐かなくなります。
あとは、自動起動に設定しておきます。
# update-rc.d ipsec defaults # update-rc.d xl2ptd defaults
僕の環境だけか、このままでは再起動しても
ipsecが上がらなかったので
# update-rc.d ipsec remove # update-rc.d ipsec defaults
このように一度、削除しました・・・
参考URL
http://network.station.ez-net.jp/server/remote/Linux/l2tp.asp
http://wiki.princo.org/?Android%A5%B9%A5%DE%A1%BC%A5%C8%A5%D5%A5%A9%A5%F3%A4%AB%A4%E9Linux%A5%B5%A1%BC%A5%D0%A4%CBVPN%C0%DC%C2%B3%A4%B9%A4%EB
[tegaki]難しいの。。。[/tegaki]