lsn0LSN 2011-05-15
如题,centos上搭建基于l2tp/IPSec的VPN服务器
拆分一下,l2tp就用xl2tpd软件了,官网是:http://www.xelerance.com/services/software/xl2tpd/
IPSec部分就是用openswan了,官网是:http://www.openswan.org/code/,据网上资料介绍, Linux上的VPN支持主要有三种:IPSec 's VPN 其主要代表有 FreeS/WAN、KAME
IPSec在Linux上支持主要有两个主要的分类,一为FreeS/WAN,现在已经停止开发,其分裂为两个项目,Openswan和Strongswan。我们要用的就是openswan了,因为FreeS/WAN已经在2004年三月停止开发,所以我们使用她的后继项目Openswan来做我们的IPSec实验。其相比FreeS/WAN有个好处,如果使用 26sec 的时候,Openswan不用打补丁,就可以用nat。
安装就很简单了yum install openswan(apt-get install openswan)
如果你想从源码安装,到http://www.openswan.org/code下载软件包,然后按照包中的说明安装。由于我们使用26sec,所以只要make programs;make install就可以搞定。值得注意的是,现在的Openswan已经内建些个好用的补丁,比如x.509和NAT Traversal的支持,使用起来非常的方便。
配置openswan还没怎么研究,先解决基于l2tp的VPN服务器搭建吧,先能把VPN跑起来才是王道。
cdxl2tpd-1.2.8;
make;
make install。
4、修改/etc/xl2tpd/xl2tpd.conf,内容如下:
先将默认示例配置文件拷到相应目录下:
mkdir/var/run/xl2tpd
cp examples/xl2tpd.conf /etc/xl2tpd/修改xl2tpd.conf文件,没注释掉的部分如下
authfile=/etc/ppp/chap-secrets
;port=1701#这个在文件是被注释掉的意思,如果要改端口号,改成1723是不行的,l2tp客户端好像不能改端口
[lnsdefault]
iprange=172.16.0.100-172.16.0.199
localip=172.16.0.1#(这个是网关地址了,很多文章说这个应该是服务器的IP,无所谓了,都一样的,一个虚的,#一个实的,跑起来都是一样一样的,改成这个虚的,tracert的时候个人认为效果更直观)
requirechap=yes#这里没有ms-chapv2,我不记得怎么写了,加上require应该就不用改客户端安全配置
refusepap=yes
requireauthentication=yes
name=Linuxxl2tpdVPNserver
pppdebug=yes
pppoptfile=/etc/ppp/options.xl2tpd
lengthbit=yes
5、修改/etc/ppp/options.xl2tpd,内容如下:
没注释掉的部分如下
ipcp-accept-remote
ms-dns8.8.8.8
ms-dns218.108.248.200
#给拔号用户分配dns服务器地址
noccp
auth
crtscts
idle1800
mtu1500
mru1500
nodefaultroute
debug
lock
logfile/var/log/l2tpd.log
#日志文件路径
proxyarp
connect-delay5000
#kdebug2
#record/var/log/l2tpdcontent.log
receive-all
ktune6、修改用户认证文件/etc/ppp/chap-secrets,内容如下
#clientserversecretIPaddresses
vpn * "123456" *#
#xl2tpdThisshellscripttakescareofstartingandstoppingl2tpd.
#
#chkconfig:-8030
#description:Layer2TunnellingProtocolDaemon(RFC2661)
#
#processname:xl2tpd
#config:/etc/xl2tpd/xl2tpd.conf
#pidfile:/var/run/xl2tpd.pid
#Servicename
SERVICE=xl2tpd
#Sourcefunctionlibrary.
./etc/rc.d/init.d/functions
#Sourcenetworkingconfiguration.
./etc/sysconfig/network
if[${NETWORKING}="no"]
then
exit0
fi
[-x/usr/local/sbin/$SERVICE]||exit0
RETVAL=0
start(){
echo-n"Starting$SERVICE:"
if[!-d/var/run/xl2tpd]
then
mkdir/var/run/xl2tpd
fi
daemon/usr/local/sbin/$SERVICE
RETVAL=$?
[$RETVAL-eq0]&&touch/var/lock/subsys/$SERVICE
echo""
return$RETVAL
}
stop(){
echo-n"Stopping$SERVICE:"
killproc$SERVICE
RETVAL=$?
echo
[$RETVAL-eq0]&&rm-f/var/lock/subsys/$SERVICE
return$RETVAL
}
restart(){
stop
start
}
#Seehowwewerecalled.
case"$1"in
start)
start
;;
stop)
stop
;;
status)
status$SERVICE
RETVAL=$?
;;
restart|reload)
restart
;;
condrestart)
[-f/var/lock/subsys/$SERVICE]&&restart||:
;;
*)
echo"Usage:$SERVICE{start|stop|status|restart|reload|condrestart}"
exit1
esac把它弄好了直接复制到/etc/init.d/目录下,别忘了加上x权限
8、打开转发,加上nat
缺省的Windows XP L2TP 传输策略不允许L2TP 传输不使用IPSec 加密。可以通过修改XP 注册表来禁用缺省的行为:
手工修改:
1)进入Windows XP 的“开始” “运行”里面输入“regedit”,打开“注册表编辑器”,
进入“HKEY_Local_Machine\System\CurrentControlSet\Services\RasMan\Parameters ”
2)直接在该目录下,新建一个DWORD类型的值,名字为:ProhibitIpSec,把值设置为1
3)保存所做的修改,重新启动电脑以使改动生效。
配置L2TP 拨号连接:
1)进入Windows XP 的“开始” “设置” “控制面板”,选择“切换到分类视图”。
2)选择“网络和Internet 连接”。
3)选择“建立一个您的工作位置的网络连接”。(直接网上邻居新建连接就可以了)
4)选择“虚拟专用网络连接”,单击“下一步”
5)为连接输入一个名字为“l2tp”,单击“下一步”。
6)选择“不拨此初始连接”,单击“下一步”。
7)输入准备连接的L2TP 服务器的IP 地址“x.x.x.x”,单击“下一步”。
8)单击“完成”。
9)双击“l2tp”连接,在l2tp 连接窗口,单击“属性”。
10)选择“安全”属性页,选择“高级(自定义设置)”,单击“设置”。
11)在“数据加密”中选择“可选加密(没有加密也可以连接)”。
12)在“允许这些协议”选中“不加密的密码(PAP)”、“质询握手身份验证协议(CHAP)”、“Microsoft CHAP(MS-CHAP)”,单击“确定”。
13)选择“网络”属性页面,在“VPN 类型”选择“L2TP IPSec VPN”。
然后确定,输入用户名密码就可以了,配置没有错的话,就不会有问题了,而且连接上VPN之后能够正常上网的。
如果VPN错误连接的代码是789的话,那就是注册表那块没有弄好了,检查一下,改完注册表是一定要重启的。
下面是IPSec方面的(openswan)的配置了,先去洗个澡,晚点再来整理
openswan不弄了
linux客户端连接xl2tpd服务器
由于linux设备作为xl2tpd的客户端,所使用的客户端软件也是xl2tpd,所以linux客户端首先要安装xl2tpd
yum install libpcap-devel ppp(ubuntu:apt-get install libpcap-devel ppp)
wget http://www.xelerance.com/wp-content/uploads/software/xl2tpd/xl2tpd-1.2.8.tar.gz
mkdir /etc/xl2tpd
cp examples/xl2tpd.conf /etc/xl2tpd
; ; This is a minimal sample xl2tpd configuration file for use ; with L2TP over IPsec. ; ; The idea is to provide an L2TP daemon to which remote Windows L2TP/IPsec ; clients connect. In this example, the internal (protected) network ; is 192.168.1.0/24. A special IP range within this network is reserved ; for the remote clients: 192.168.1.128/25 ; (i.e. 192.168.1.128 ... 192.168.1.254) ; ; The listen-addr parameter can be used if you want to bind the L2TP daemon ; to a specific IP address instead of to all interfaces. For instance, ; you could bind it to the interface of the internal LAN (e.g. 192.168.1.98 ; in the example below). Yet another IP address (local ip, e.g. 192.168.1.99) ; will be used by xl2tpd as its address on pppX interfaces. [global]> ; listen-addr = 192.168.1.98 ; ; requires openswan-2.5.18 or higher - Also does not yet work in combination ; with kernel mode l2tp as present in linux 2.6.23+ ; ipsec saref = yes ; forceuserspace = yes ; ;port=1701 ; debug tunnel = yes auth file=/etc/ppp/chap-secrets [lac test] lns = 192.168.4.2 redial = yes redial timeout = 15 require chap = yes refuse pap = yes require authentication = yes name = vpn ppp debug = yes pppoptfile = /etc/ppp/options.test_l2tp
asyncmap 0 noauth crtscts lock hide-password modem netmask 255.255.255.0 proxyarp lcp-echo-interval 30 lcp-echo-failure 4 ipcp-accept-local ipcp-accept-remote
# Secrets for authentication using CHAP # client server secret IP addresses vpn * "123456" *
mkdir /var/run/xl2tpd
xl2tpd或者启动debug模式:
xl2tpd -D
echo "c test">/var/run/xl2tpd/l2tp-control
route add -host x.x.x.x dev ppp0
xl2tpd跟radius对接,包括软件安装、配置跟pptp都是完全一模一样的,无非就是在xl2tpd的options文件里添加类似
plugin/usr/local/lib/pppd/2.4.4/radattr.so
radius-config-file /usr/local/etc/radiusclient/radiusclient.conf具体配置可以参考我博客radius标签下的博文
1.网络采用网线直连,网络连接方式采用“网络地址转换”,与方法一不同,无需对虚拟机的IP和默认网关进行设置,但需要配置“端口转发”,协议选择“TCP”,主机端口和子系统端口均填写1521,IP均不填;