l2tp vpn搭建总结(linode ubuntu)

前段时间开始,公司的vpn开始不太好用了,因此我也逐步感觉到墙的力量。

恰好@Zealot有一个linode的vps,之前他搭了一个pptp的vpn,但是联通3g又不能使用pptp vpn,于是尝试自己捣鼓一个l2tp的vpn,断断续续尝试了几次,终于在今天成功了。

参考了很多网上的文章,发现网上的文章都没有涵盖到我碰到的种种问题,因此在这里针对我的案例,写一篇总结性的文章。

首先,按照apple4us的文章,安装一系列软件,写配置:

sudo aptitude install openswan

vim /etc/ipsec.conf

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

conn L2TP-PSK-NAT
    rightsubnet=vhost:%priv
    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=222.222.222.222
    leftprotoport=17/1701
    right=%any
    rightprotoport=17/%any

注意,ipsec.conf对格式要求很严格,缩进一定要有。

vim /etc/ipsec.secrets

222.222.222.222 %any: PSK “fan1qiang”

这里的psk要解释一下,这个是你在连接l2tp vpn时,需要填写的secret。
此外,别忘记把222.222.222.222替换成你自己服务器的ip(一共两处)。继续:

for each in /proc/sys/net/ipv4/conf/*
do
echo 0 > $each/accept_redirects
echo 0 > $each/send_redirects
done

然后检查ipsec是否ok了

sudo ipsec verify

下面是我最终的结果:

Version check and ipsec on-path [OK]
Linux Openswan U2.4.12/K2.6.18.8-linode22 (netkey)
Checking for IPsec support in kernel [OK]
NETKEY detected, testing for disabled ICMP send_redirects [OK]
NETKEY detected, testing for disabled ICMP accept_redirects [OK]
Checking for RSA private key (/etc/ipsec.secrets) [DISABLED]
ipsec showhostkey: no default key in “/etc/ipsec.secrets”
Checking that pluto is running [OK]
Two or more interfaces found, checking IP forwarding [OK]
Checking NAT and MASQUERADEing
Checking for ‘ip’ command [OK]
Checking for ‘iptables’ command [OK]
Opportunistic Encryption Support [DISABLED]

其中需要注意两项:Checking for RSA private key和Opportunistic Encryption Support,第一项其实你大可不必管他,disable或者ok都行。如果你实在要解决,可以:

ipsec newhostkey –file /root/tmpkey
cat /root/tmpkey >> /etc/ipsec.secrets
rm /root/tmpkey

第二项DISABLED是正常状态。

出了问题不要被这两项迷惑,不是他们导致的。

接下来启动:

sudo /etc/init.d/ipsec restart

如果出现错误,按照他指出的行数自己看看。接下来是l2tpd。

sudo aptitude install xl2tpd

vim /etc/xl2tpd/xl2tpd.conf

[global]
ipsec saref = yes

[lns default]
ip range = 10.1.2.2-10.1.2.255
local ip = 10.1.2.1
;require chap = yes
refuse chap = yes
refuse pap = yes
require authentication = yes
ppp debug = yes
pppoptfile = /etc/ppp/options.xl2tpd
length bit = yes

然后安装、配置ppp:

sudo aptitude install ppp

vim /etc/ppp/options.xl2tpd

require-mschap-v2
ms-dns 208.67.222.222
ms-dns 208.67.220.220
asyncmap 0
auth
crtscts
lock
hide-password
modem
debug
name l2tpd
proxyarp
lcp-echo-interval 30
lcp-echo-failure 4

添加一个vpn用户:

vim /etc/ppp/chap-secrets

test l2tpd testpassword *

启动l2tpd:

sudo /etc/init.d/xl2tpd restart

设置iptables转发:

iptables –table nat –append POSTROUTING –jump MASQUERADE
echo 1 > /proc/sys/net/ipv4/ip_forward

修改包转发设置

for each in /proc/sys/net/ipv4/conf/*
do
echo 0 > $each/accept_redirects
echo 0 > $each/send_redirects
done

vi /etc/sysctl.conf
修改 net.ipv4.ip_forward = 1
sysctl –p

好了,如果一切顺利,你的l2tp应该装好了,尝试用iphone或者android连接一下。如果还有问题,请继续。

第一个问题是执行sudo /etc/init.d/xl2tpd restart时,无法看到执行状态,因此很多时候其实服务没有起来。你可以用ps aux | grep l2tp确认一下,如果发现的确没有这个进程,请使用

xl2tpd -D

开启debug模式启动。

如果你碰见了一些很莫名其妙的配置文件错误提示,比如:

parse_config: line 13: data ‘n parameters:’ occurs with no context

而实际上你这一行并没有错误,请检查一下/etc/xl2tpd/xl2tpd.conf 里面是不是有一行很长的注释,把这些注释分成多行或者删除。

第二个问题,如果你启动了xl2tpd,但是一连接iphone就提示“l2tp-vpn server did not respond”,或者android提示”challenge failed”,那请看看你的openswan 是不是 2.6.22或2.4.12:

dpkg -l | grep openswan

如果是,请重新编译安装:

sudo aptitude install libgmp3-dev gawk flex bison
wget http://www.openswan.org/download/openswan-2.6.24.tar.gz
tar xf openswan-2.6.24.tar.gz
cd openswan-2.6.24
make programs
sudo make install

如果你还有其他问题,欢迎在下面留言,我会尝试帮你解决。

参考文章:
https://apple4.us/2010/05/setting-up-l2tp-vpn-on-debian-ubuntu.html
http://b.gkp.cc/posts/setup-ipsec-l2tp-on-centos-55.html
http://suoluo.org/2010/04/4/ (上面三篇文章是全面介绍安装过程的)
http://lists.openswan.org/pipermail/users/2006-November/011029.html (介绍如何fix Checking for RSA private key)
http://lifegoo.pluskid.org/?p=65 (指出xl2tpd.conf的注释问题)

2 条评论

  1. Derek 于 2011-04-04 @ 16:38:26

    l2tp-vpn server did not respond
    dpkg -l | grep openswan 以后得到的结果是
    1:2.6.23+dfsg-1ubuntu1 IPSEC utilities for Openswan
    按照你说的重新编译安装了
    sudo aptitude install libgmp3-dev gawk flex bison
    wget http://www.openswan.org/download/openswan-2.6.24.tar.gz
    tar xf openswan-2.6.24.tar.gz
    cd openswan-2.6.24
    make programs
    sudo make install
    奇怪的是结果dpkg -l | grep openswan 还是原来的版本, 请问知道这个是怎么回事吗? 谢谢

  2. berg 于 2011-05-03 @ 16:55:37

    [Comment ID #13389 Will Be Quoted Here]

    你可以尝试一下apt-get remove 以后再make,或者你看看install的path对不对。

发表评论

火花来自思想的碰撞,请留下你宝贵的评论吧: