上一个文章讲了如何在Debian/Ubuntu的VPS上安装PPTP的VPN, 经过笔者实际操作是完全没有问题的, 需要注意的是在设置用户列表的时候可以设置限制IP以限制指定IP地址的登陆, 后面我们还会讲到关于如何设置FreeRadius来实现相应的流量控制问题.

这次的博客内容主要是关于L2TP VPN的安装的 依然主要来自佐拉的博客, 上一篇内容说到了现在主流两个VPN协议(在OpenVPN和SSH封锁严重的今天)的第二个就是L2TP啦. 同时有些公司出于商业资料的保密性来说, 会考虑到安全新能更高的L2TP+IPSec的VPN方式.

今天我们就按照佐拉的步骤来安装一下L2TP+IPSec VPN吧

原文地址: https://www.zuola.com/weblog/2011/01/1658.htm (还是那篇文章)

开始:

首先需要安装一系列的软件, 原文中提到了Ubuntu的10.04版本有些问题, 但是我们这次用的是Debian的6系列版本, 说实话以前没有在Debian上安装过VPN, 这次只能摸索一下看看会不会有问题, 先按照佐拉的步骤来.

同时我借鉴了另外一个文章的说法, 并没有提到相关问题, 所以我们还是直接通过APT源里面的安装, 这里安装出来的不是佐拉在文章中提到的最新版本2.X.X 而是一个1.X.X的可能所谓的稳定版本

用以下命令安装 openswan: apt-get install openswan

1.1. 安装完成之后需要配置一下IPSec的文件

emacs /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

这里其实主要是修改一个地方, 同时添加一些东西

修改第30行的 protostack=auto 为 protostack=netkey

同时添加上面的 protostack 以下的内容

也就这样而已, 当然如果你希望直接复制粘贴也是可以的, 完成之后记得保存

1.2. 编辑emacs /etc/ipsec.secrets 这个文件, 添加自己的IP地址

YOUR.SERVER.IP.ADDRESS %any: PSK “ThisIsSecret”

这里需要注意的是,你需要吧[YOUR.SERVER.IP.ADDRESS]改成自己实际的IP地址, 然后吧PSK后面的那个字串输入随意的字符, 这里的字串只是用来加密用的,到后面链接的时候需要用到,所以不要太过于复杂。

1.3. 下面我们需要运行一些命令, 但是因为这属于一个For loop的命令行, 所以我们需要先建立一个文件, 把下面的内容Copy进去,然后去跑这个文件

我们使用emacs runThis.sh来创建一个新的文件然后将下面的内容复制进去

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

然后直接运行./runThis.sh 就可以了, 记住在执行之前需要用chmod来修改文件的权限以让他可以执行(使用chmod +x runThis.sh)

1.4. 检查一下 IPSec 能否正常工作:

ipsec verify

如果在结果中看到「Opportunistic Encryption Support」被禁用(disable)了,没关系,其他项 OK 即可。

备注: 这里需要额外说一些体外话, 佐拉和另外一篇参考文章中都提到了需要用sudo 作为运行的前提 例如 sudo apt-get install, 或者 sudo ipsec verify. 其实这里如果你使用额是root登陆的话在Debian系统里面是不需要的, 部分Ubuntu系统可能需要, 如果需要就加上, 如果加上之后提示错误(我再Debian系统中直接其实没有sudo这个命令, sudo这个命令好像是Ubuntu里面特有的)那么就不需要了。

1.5. 检查没有什么问题了之后, 就重启openswan, 运行以下命令重启

/etc/init.d/ipsec restart

这里IPSec部分就配置的差不多了, 下面接下来我们需要配置L2TP部分, 首先当然是安装

sudo aptitude install xl2tpd

2.1. emacs /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

这里可以直接复制这个进去, 或者在文件里面找相应的行然后去掉Comment 我操作的时候为了省事就直接复制了

这里要注意的是 ip range 一项里的 IP 地址不能和你正在用的 IP 地址重合,也不可与网络上的其他 IP 地址冲突。这里基本上只要和你刚开始设置PPTP的IP地址不要重复就可以了, 当然一本来说用的都是本机LocalHost的几个IP地址, 不要用到其他互联网上的IP地址了.

2.2. 安装PPP用来管理自己的账户, 一般来说如果你按照我前面的那个博客文章安装了PPTP之后, 你的PPP就已经安装过了, 当然你也可以通过以下命令来安装或者检查PPP是不是被安装了

apt-get install ppp

安装好了之后在PPP的目录下面建立一个文件, 一般来说如果你是第一次安装这个文件是不存在的,但当然你在输入了下面的命令之后如果文件出来了内容说明以前有这个问题

emacs /etc/ppp/options.xl2tpd

把这个文件类似的修改为下面这个样子就可以了:

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

需要注意的是ms-dns那一栏, 和前面的文章一样,是指DNS服务器的,这里按照我的习惯我还是设置成了Google的DNS,8.8.8.8/8.8.4.4的,如果你需要用其他的,例如OpenDNS的(208.67.222.222/208.67.220.220)对应的修改就好了, 还是那句话不建议用国内的,推荐用Google的

2.3. 添加用户

现在可以添加一个 VPN 用户了。如果前面你设置过PPTP的话, 你应该知道如何在chap-secrets 中设置用户

打开文件: emacs /etc/ppp/chap-secrets

按照 “用户名 链接方式(PPTPD/L2TPD/*) 密码 IP”的格式填写
# user      server      password            ip
test        l2tpd       testpassword        *
fuck * gfw *

这里额外说明的如果链接方式(也就是上面提到的server)是* 新号代替的话,那么这个用户可以用PPTP也可以用L2TP来链接。 同样的如果后面IP不是*, 即不是所有IP都可以的话那么就是说明你限制了登陆的IP地址。

2.4 重启L2TPD服务

到这里基本安装和配置就已经完成了, 下面只需要像PPTP一样重启并设置IPTABLE转发了, 我直接引用:

重启 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 文件里写入如下语句

通过 emacs /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

这样子就可以了, 基本上来说就没有什么问题了,你可以通过IPhone或者iPad指一下, 记得在[Secret]中填入你前面1.2步骤里面填写的内容 例如: “ThisIsSecret”

我的Debian中加在的是Openswan的最新版本, 如果你用的不是最新版本的话, 请一定要安装最新版, 很多老版本都会有问题

 

2013年4月11日更新, 我的安装过程中出了点小问题, 后来重新安装openswan又不知道哪里出现问题了,现在导致IPSec无法启动,我后续会关注这个问题有解决办法了后将会发出来