为什么要搭建L2PT呢、最简单的一点理由就是支持移动网络
首先安装好编译环境
apt-get -y install build-essential
然后再安装OpenSwan依赖包
apt-get -y install libgmp3-dev flex bison
编译安装OpenSwan
wget -c http://www.openswan.org/download/openswan-2.6.33.tar.gz
tar -zxf openswan-2.6.33.tar.gz
cd openswan-2.6.33
make programs install
然后配置IPSec文件
cp /etc/ipsec.conf /etc/ipsec.conf.bak
vim /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=192.168.1.102
leftprotoport=17/1701
right=%any
rightprotoport=17/%any
注意缩进格式、否则启动服务器会发生错误、left=这一行要换成迩的公网IP、记得是当前服务器公网IP、别使用localhost这些冬冬、不然客户端会找不到迩的服务器的!
接着设置PSK预共享密码、在/etc/目录下创建ipsec.secrets文件
vim /etc/ipsec.secrets
输入以下内容
192.168.1.102 %any: PSK "123456"
同样、192.168.1.102要切换成迩的服务器公网IP、123456为迩的预共享密码、请更改成迩喜欢的安全码
然后修改网络策略
for each in /proc/sys/net/ipv4/conf/*
do
echo 0 > $each/accept_redirects
echo 0 > $each/send_redirects
done
这里使用了shell的循环语法、迩要一句一句的输入、大致的意思就是把/proc/sys/net/ipv4/conf/目录下的所有目录的accept_redirects和send_redirects用0来填充、意思就是把这些属性都关闭吧、
然后重启IPSec服务、再验证是否已经正常了
/etc/init.d/ipsec restart
/usr/local/sbin/ipsec verify
如果遇到有ERROR或者WANGRING、则参看这个文章:http://www.cnblogs.com/klobohyz/archive/2012/02/04/2337775.html
还有ipsec并不会自动启动、如果重新启动请手机启动ipsec服务器或者写自动运行脚本
以上就已经把IPSec部署好了、接下来部署L2TP
首先获取l2tp-control、并安装
wget http://nchc.dl.sourceforge.net/project/rp-l2tp/rp-l2tp/0.4/rp-l2tp-0.4.tar.gz
tar zxvf rp-l2tp-0.4.tar.gz
cd rp-l2tp-0.4
./configure
make
cp handlers/l2tp-control /usr/local/sbin/
mkdir /var/run/xl2tpd/
ln -s /usr/local/sbin/l2tp-control /var/run/xl2tpd/l2tp-control
注意一下最后两句、由于xl2tpd是建立在/var/run/上面、意味着服务器重启会把里面的这些冬冬都删除掉、所以为了以后方便、最好把后面两句命令写成自动执行的shell、这样重启服务器就自动在run目录里建立xl2tpd目录、然后再搞链接、
然后安装xl2tpd、先安装依赖包
apt-get -y install libpcap-dev
再安装xl2tpd、
wget -c http://www.xelerance.com/wp-content/uploads/software/xl2tpd/xl2tpd-1.2.8.tar.gz
tar -zxf xl2tpd-1.2.8.tar.gz
cd xl2tpd-1.2.8
make install
再进行xl2tpd的配置、在etc目录下新建xl2tpd目录、再往里面新建一个xl2tpd.conf文件
mkdir /etc/xl2tpd
vim /etc/xl2tpd/xl2tpd.conf
在里面输入以下内容
[global]
ipsec saref = yes
[lns default]
local ip = 10.10.11.1
ip range = 10.10.11.2-10.10.11.245
refuse chap = yes
refuse pap = yes
require authentication = yes
ppp debug = yes
pppoptfile = /etc/ppp/options.xl2tpd
length bit = yes
注意这里、如果迩刚刚执行ipsec verify命令时是不支持saref的话、这里的ipsec saref请设置为no、而local ip和ip range请不要与当前网络发生冲突、local ip就是当服务器与客户端建立了VPN时服务器端的虚拟IP、下面的ip range则是客户端在VPN里的IP
然后再安装ppp包和设置VPN用户、如果迩之前安装过pptp、请略过这些步骤
安装ppp包
apt-get -y install ppp
配置xl2tpd文件、在/etc/ppp/下新建options.xl2tpd文件
vim /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那两个为google提供的公共DNS服务器、迩可以改成电信提供的DNS也可以
添加VPN用户、这个VPN用户是和pptp共用同一个文件的、迩可以使同一个用户同时作用于pptp和l2tp、也可以将两个用户分开来设定、编辑chap-secrets文件
vim /etc/ppp/chap-secrets
输入以下内容
user * 123456 *
建立一个用户名为user、密码为123456的vpn用户、第一个星号表示同时支持pptp和l2tp、迩可以写成pptpd或者xl2tpd、这样就只支持其中一种协议了、后面一个星号表示由VPN服务器自动分配IP地址
然后设置数据包转发、同样如果在pptp里已经设置过了这里可以不再设置
sed -i 's/#net.ipv4.ip_forward=1/net.ipv4.ip_forward=1/g' /etc/sysctl.conf
sysctl -p
这里的意思就是把存在/etc/sysctl.conf文件里包含#net.ipv4.ip_forward=1的行统一都取消掉注释、然后执行sysctl -p使修改后的sysctl.conf立即生效
然后设置iptables的转发
iptables -t nat -A POSTROUTING -s 10.10.11.0/24 -o eth0 -j MASQUERADE
注意这里的10.10.11.0的填写是与xl2tpd.conf里的IP设定有关的、因为之前已经设定了local ip为10.10.11.1所以这里才设定成10.10.11.0、后面的24表示子网掩码为255.255.255.0、因为前面设置的分配IP就是以C类子网来划分的
下面就只要启动xl2tpd服务就大功造成了
/usr/local/sbin/xl2tpd
/usr/local/sbin/xl2tpd -D #以调式模式启动
注意iptables会在重启后失效的、请使用iptables-save先保存一份规则然后在网络启动时再使用iptables-restore来加载这个文件、
至于l2tp与freeradius的整合、只需要在options.xl2tpd的尾部加上
plugin /usr/lib64/pppd/2.4.5/radius.so
plugin /usr/lib64/pppd/2.4.5/radattr.so
radius-config-file /usr/local/etc/radiusclient/radiusclient.conf
具体方法请参看这文章的PART II:http://www.cnblogs.com/klobohyz/archive/2012/02/04/2338675.html
另外如果
参考文章:
https://wangyan.org/blog/debian-l2tp-ipsec-vpn.html
http://zyj.me/article/ipv6-l2tp-vpn
http://ttz.im/blog/2011/04/577
至于windows客户端L2TP/IPSec的连接方式就不详细讲了、主要在安全那里更改协议成L2TP/IPSec、并在高级设置里填写上预共享密钥就可以了