2013年2月28日星期四

RaspberryPi配置L2TP VPN过程(2)

这是第二章,介绍L2TP VPN的搭建方法

安装VPN
VPN的安装过程主要参考了这一教程:
配置的VPN类型为L2TP/IPSec,之所以不使用更为简单的OpenVPN,是因为windows系统连接OpenVPN不太方便。
主要的安装步骤和配置文件按照教程中的设置没有问题。但在树莓派上,由于库文件有缺失,有几个步骤可以作为先导过程。
首先是库文件的更新,在终端中输入:
    sudo apt-get install  libpcap0.8-dev libpcap0.8 libcap-dev
等待完成库的更新。
然后安装lsof。openswan的运行脚本中使用了lsof命令,因此需要安装,输入:
    sudo apt-get install lsof
下面给出VPN安装的具体步骤:
一、安装 IPSec
用以下命令安装 openswan:
    sudo apt-get install openswan
二、用文字编辑器打开 /etc/ipsec.conf:
    sudo leafpad /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

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=YOUR.SERVER.IP.ADDRESS
    leftprotoport=17/1701
    right=%any
    rightprotoport=17/%any
注意缩进和格式。
三、用文字编辑器打开 /etc/ipsec.secrets,改成这样:
YOUR.SERVER.IP.ADDRESS   %any:  PSK "YourSharedSecret"
(别忘了把「YOUR.SERVER.IP.ADDRESS」这部分换成你的服务器的 IP 地址,把「YourSharedSecret」部分换成随便一个字串,例如你喜欢的一句话,等等。)
四、运行以下命令:
    for each in /proc/sys/net/ipv4/conf/*
    do
        echo 0 > $each/accept_redirects
        echo 0 > $each/send_redirects
    done 
五、检查一下 IPSec 能否正常工作:
    sudo ipsec verify
如果在结果中看到Opportunistic Encryption Support被禁用了,没关系,其他项 OK 即可。
如果看到Checking /bin/sh is not /bin/dash显示[Warning],没有关系,因为ubtuntu和debian系统已经使用dash来代替bash脚本执行器。虽然dash更快更方便,但在某些脚本兼容性上还是不太稳定。我们可以将ubuntu默认的脚本执行方式改回bash来执行,执行以下命令
    sudo dpkg-reconfigure dash
按英文提示,选择no,就可以把dash切换成bash。再执行ipsec verify就不会出现WARNING的提示了。
六、重启 openswan:
    sudo /etc/init.d/ipsec restart
 
七、安装 L2TP。常用的 L2TP 后台软件包是 xl2tpd,它和 openswan 是同一帮人写的。
运行以下命令:
    sudo apt-get install xl2tpd  
也可以从官方网站下载最新的安装包编译安装。
八、用文字编辑器打开 /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
这里要注意的是 ip range 一项里的 IP 地址不能和你正在用的 IP 地址重合,也不可与网络上的其他 IP 地址冲突。
九、安装 ppp。这是用来管理 VPN 用户的。
    sudo apt-get install ppp 
十、检查一下 /etc/ppp 目录里有没有 options.xl2tpd 这个文件,没有的话就建一个,文件内容如下:
require-mschap-v2
ms-dns 8.8.8.8
ms-dns 222.201.130.30
asyncmap 0
auth
crtscts
lock
hide-password
modem
debug
name l2tpd
proxyarp
lcp-echo-interval 30
lcp-echo-failure 4
注意 ms-dns 两行填的是谷歌的公共 DNS和教育网的DNS,请自行更换。
十一、现在可以添加一个 VPN 用户了。用文字编辑器打开 /etc/ppp/chap-secrets:
# user      server      password            ip
test        l2tpd       testpassword        *
如果你之前设置过 PPTP VPN,chap-secrets 文件里可能已经有了其他用户的列表。你只要把 test l2tpd testpassword * 这样加到后面即可。
十二、重启 xl2tpd:
    sudo /etc/init.d/xl2tpd restart
十三、设置 iptables 的数据包转发:
    iptables --table nat --append POSTROUTING --jump MASQUERADE
    echo 1 > /proc/sys/net/ipv4/ip_forward
十四、因为某种原因,openswan 在服务器重启后无法正常自动,所以我们可以在/etc/rc.local 文件里写入如下语句:
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
/etc/init.d/ipsec restart
这样启动时就会自动启动了。
然后在Windows客户端上新建连接到工作区的连接,再进行设置,如果可以连接到服务器,
则说明配置成功,如果出现789错误,说明需要修改注册表来允许通过NAT建立VPN。

2 条评论:

  1. 我在第十步的时候出现了premission denied的状况,要怎么解决呢?

    回复删除
    回复
    1. 可以通过在终端中输入以下命令解决:
      sudo vi /etc/ppp/options.xl2tpd
      或者:
      sudo leafpad /etc/ppp/options.xl2tpd

      删除