Openswanインストールメモ

    • 2011/07/05 Last Update

Ubuntu 10.04.1 & xl2tpd-1.2.5 & Openswan U2.6.23/K2.3.32-32-generic-pae
で、Android向けに接続できるVPNサーバを立てようとしてガチで1週間ぐらい詰んだのでメモメモ

# apt-get install openswan xl2tpd

xl2tpd

/etc/xl2tpd/xl2tpd.conf
[global]
auth file = /etc/ppp/chap-secrets
; ここから下はデバッグ用かな?
debug avp = yes
debug network = yes
debug packet = yes
debug state = yes
debug tunnel = yes

[lns default]
ip range = 172.17.64.51-172.17.64.70
local ip = 172.17.64.50
require chap = yes
require authentication = yes
name = nakamiriVPNsrv
ppp debug = yes
pppoptfile = /etc/ppp/options.l2tpd.lns
length bit = yes
  • ip range: VPN鯖で割り振るIPの範囲
  • local ip: VPN鯖自身のLANのIP
  • nameはchap-secretsで指定するためのものっぽいので、自由に
  • 他は名前通りの機能かな?
  • length bitは何に使うのかわかりませんえん(´・ω・`)
/etc/ppp/chap-secrests
# Secrets for authentication using CHAP
# client        server  secret                  IP addresses
nakamiri        *       "moge"  *
  • 凡例どおりに書いちゃえば(・∀・)イイヨイイヨー
  • serverの所で、先程のファイルでnameで付けた名前で指定ができるみたいです

Openswan

/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
	protostack=netkey
	nhelpers=0

include /etc/ipsec.d/*.conf
  • virtual_privateはプライベートアドレスの範囲を指定するものっぽい(NATの判断をするためかな?)
  • oe=offはonだと動かなかったのでこめんとあうつ
  • nhelpers=0じゃないと動かなかったので書き足し
/etc/ipsec.secrets
%defaultroute %any : PSK "premoge"
  • 自分のIP、$defaultrouteでNICに指定されてるIPをもってくる
  • %anyは何でもってことなのかしら
  • ipsec showdefaultでデフォの設定が見れるみたい
/etc/ppp/options.l2tpd.lns
ipcp-accept-local
ipcp-accept-remote
require-mschap-v2
noccp
nodefaultroute
auth
crtscts
idle 1800
debug
lock
proxyarp
connect-delay 5000
logfile /var/log/xl2tpd.log
  • 殆どいみわかんねえお!
  • require-mschap-v2でMSCHAP-V2がつかえるらしいよ!
  • ログファイルはそうやってかきだすお!中身読んでもさっぱりわからんかったが!ksg!
/etc/ipsec.d/l2tp-psk.conf
conn L2TP-PSK-NAT
        rightsubnet=0.0.0.0/0
        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
        leftprotoport=17/1701

        right=%any
        rightprotoport=17/%any
  • rightsubnetで接続元のサブネットを指定して振り分けるみたい
  • 指定したサブネットを弾くとかに使うのかな?よくわからんでs
  • 二つ書いたけど、一つでもいいのかな?よくわからんでs
/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.eth1.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.eth1.accept_redirects = 0
net.ipv4.conf.lo.accept_redirects = 0

で、システムに適用
動くかどうか確認
FAILEDとかが出てきたらなんか怪しいよ

# sysctl -p
# ipsec verify

Windows

VPNサーバをNAT内(ルータ内)に設置したときは、Windows側でレジストリの設定が必要です。

  • Windows7
    • \HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\PolicyAgent
    • ここに
    • DWORD値 で
      • AssumeUDPEncapsulationContextOnSendRule
      • 値は2 で設定して再起動することが必要みたいです。

ほげげ

Androidから中々つながらなくて苦労した(´・ω・`)
/etc/ipsec.confのoe=offあたりとか、nhelpersあたりが怪しいけど、結局再現しなかったりでわからず…。
とりあえずこれで、LAN内でのL2TP PSKはできたっぽい?

参考にしたサイト
https://ikochan.homelinux.com/trac/ubuntu/wiki/Openswan
Ken's Memo: andoridから自宅へのVPN
HowTo/openswan - Debian Wiki
他にもいっぱい参考にさせてもらったけど、ありすぎて(´Д⊂ モウダメポ