锋芒网-Oracle+Linux专业技术门户!分享技术,传播知识!

当前位置: 首页 > 操作系统 > Linux操作系统 >

用centOS5.5搭建l2tpd vpn服务器

时间:2011-02-25 13:45来源:寂莫风雪 作者:寂莫风雪 点击:
【转载时请以超链接形式标明文章出处和作者信息及本声明】
原文链接:

 

用centOS5.5搭建l2tpd vpn服务器
作者:寂莫风雪 2011年2月25日
 
服务器要求:双网卡,作网关。如果用单网卡服务器,作旁路方式,也可以拔通和访问资源,但在实际应用中会中会有莫名其妙的网络数据传输出错的问题,不建议使用。
网络参照如下图:
 路由器----防火墙-----l2tp服务器-------核心交换机
 l2tp服务器接口和地址:Eth0 192.166.1.2 --- l2tp服务器---  Eth1 192.168.67.2
服务器网络地址规划:
Eth0 192.166.1.2 mask 255.255.255.0 接入边界防火墙,边界防火墙接口设为192.166.1.1 mask 255.255.255.0
Eth1 192.168.67.2 mask 255.255.255.0 接入核心交换机,核心交换机接口设为192.168.67.1 mask 255.255.255.0
 
操作系统:centOS5.5
L2tp服务软件:xl2tpd 1.2.7 默认服务端口为1701
 
一、              安装xl2tp
1、安装CentOS需要的库和软件包yum install libpcap-devel ppp
3、解压:tar -zxvf xl2tpd-1.2.7.tar.gz
4、进入该解压目录,然后编译、安装:
cd xl2tpd-1.2.7
make
make install
5
、修改/etc/xl2tpd/xl2tpd.conf,内容如下:
先将默认示例配置文件拷到相应目录下:
mkdir /etc/xl2tpd
mkdir /var/run/xl2tpd
cp examples/xl2tpd.conf  /etc/xl2tpd/

修改文件,注意红色部分:
vi /etc/xl2tpd/xl2tpd.conf
[global]
listen-addr = 192.166.1.2
;对外拔号服务器地址
; requires openswan-3.1 or higher
; ipsec saref = yes
;
; debug tunnel = yes
;port = 1701
auth file = /etc/ppp/chap-secrets
;认证用户名密码的文件路径
debug tunnel = yes
[lns default]
ip range = 192.168.67.3-192.168.67.254
;给拔号成功的用户分配的地址池
local ip = 192.168.67.2
;内部转发数据包的接口的真实IP地址
require chap = yes
refuse pap = yes
require authentication = yes
name = xxbl2tpserver
ppp debug = yes
pppoptfile = /etc/ppp/options.xl2tpd
;ppp协议的配置文件路径
length bit = yes
 
6、修改/etc/ppp/options.xl2tpd,内容如下:
cp examples/ppp-options.xl2tpd  /etc/ppp/options.xl2tpd
vi /etc/ppp/options.xl2tpd
 
ipcp-accept-local
ipcp-accept-remote
ms-dns 8.8.8.8
ms-dns 221.7.17.21
#给拔号用户分配dns服务器地址
noccp
auth
crtscts
idle 1800
mtu 1500
mru 1500
nodefaultroute
debug
lock
logfile /var/log/l2tpd.log
#日志文件路径
proxyarp
connect-delay 5000
#kdebug 2
#record /var/log/l2tpdcontent.log
receive-all
ktune
 
7修改用户认证文件/etc/ppp/chap-secrets,内容如下
# Secrets for authentication using CHAP
# client server secret              IP addresses
# Secrets for authentication using CHAP
# client        server secret                  IP addresses
"test"            *       "test"                 *
 
8编辑启动、停止服务脚本/etc/init.d/xl2tpd文件内容如下
#!/bin/sh
#
# xl2tpd This shell script takes care of starting and stopping l2tpd.
#
# chkconfig: - 80 30
# description: Layer 2 Tunnelling Protocol Daemon (RFC 2661)
#
# processname: xl2tpd
# config: /etc/xl2tpd/xl2tpd.conf
# pidfile: /var/run/xl2tpd.pid
#Servicename
SERVICE=xl2tpd
# Source function library.
. /etc/rc.d/init.d/functions
# Source networking configuration.
. /etc/sysconfig/network
if [ ${NETWORKING} = "no" ]
then
exit 0
fi
[ -x /usr/local/sbin/$SERVICE ] || exit 0
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 -eq 0 ] && touch /var/lock/subsys/$SERVICE
echo ""
return $RETVAL
}
stop() {
echo -n "Stopping $SERVICE: "
killproc $SERVICE
RETVAL=$?
echo
[ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/$SERVICE
return $RETVAL
}
restart() {
stop
start
}
# See how we were called.
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}"
exit 1
esac

9
chmod命令给xl2tpd文件赋予可执行权限。
chmod +x /etc/init.d/xl2tpd
1.2.7
版将xl2tpd服务程序默认安装在/usr/local/sbin/下,而xl2tpd.sh启动脚本却是写的/usr/sbin/,所以要执行以下复制命令
cp /usr/local/sbin/xl2tpd /usb/sbin/

10
xl2tpd加入到系统服务中去
chkconfig --add xl2tpd        
chkconfig xl2tpd --level 35 on

也可以通过在终端#xl2tpd -c /etc/xl2tpd/xl2tpd.conf  -D 启动xl2tpd服务并查看调试信息。
 
11打开转发功能,l2tp用户才能通过网关访问其他网段
echo 1 > /proc/sys/net/ipv4/ip_forward
 
Linux系统缺省并没有打开IP转发功能要确认IP转发功能的状态可以查看/proc文件系统使用下面命令: cat /proc/sys/net/ipv4/ip_forward
如果上述文件中的值为0,说明禁止进行IP转发;如果是1,则说明IP转发功能已经打开。
要想打开IP转发功能,可以直接修改上述文件: echo 1 > /proc/sys/net/ipv4/ip_forward
把文件的内容由0修改为1。禁用IP转发则把1改为0。
上面的命令并没有保存对IP转发配置的更改,下次系统启动时仍会使用原来的值,要想永久修改IP转发,需要修改/etc/sysctl.conf文件,修 改下面一行的值: net.ipv4.ip_forward = 1 修改后可以重启系统来使修改生效,也可以执行下面的命令来使修改生效: sysctl -p /etc/sysctl.conf 进行了上面的配置后,IP转发功能就永久使能了。
12linux防火墙转发规则
vi /etc/rc.local
加入
iptables --table nat --append POSTROUTING --jump MASQUERADE
 
13、加入访问路由
/etc/rc.local这个文件里增加路由信息
route add -net 192.168.66.0 netmask 255.255.255.0 gw 192.168.67.1 dev eth1
route
如果eth1没有正常工作,可以用以下命令
ifconfig eth1 192.168.67.2 netmask 255.255.255.0 up
14、启动xl2tpd服务。
好象在centos5.5下,xl2tp.sh不能正常运行(默认安装与脚本设置路径上有错误,修改),用下面命今使其在后台运行。用第九条的方法改过后,xl2tp.sh可以正常运行。
nohup xl2tpd -D &
二、配置核心交换机路由
ip route-static 192.166.1.0 255.255.255.0 192.168.67.2 preference 60
三、配置防火墙
ip route-static 192.166.1.0 255.255.255.0 192.166.1.1 preference 60
四、配置路由器路由
ip route-static 192.166.0.0 255.255.0.0 防火墙地址
五、配置路由器NAT
将互联网合法地址通过NAT映射给192.166.1.2
六、配置Windows XP 作为L2TP 客户端
按照以下步骤配置Windows XP 计算机,使其成为L2TP 客户端。
1.
配置L2TP 拨号连接:
1)
进入Windows XP 开始” “设置” “控制面板,选择切换到分类视图
2)
选择网络和Internet 连接
3)
选择建立一个您的工作位置的网络连接
4)
选择虚拟专用网络连接,单击下一步
5)
为连接输入一个名字为“l2tp”,单击下一步
6)
选择不拨此初始连接,单击下一步
7)
输入准备连接的L2TP 服务器的IP 地址拔号服务器互联网合法地址,单击下一步
8)
单击完成
9)
双击“l2tp”连接,在l2tp 连接窗口,单击属性
10)
选择安全属性页,选择高级(自定义设置),单击设置
11)
数据加密中选择可选加密(没有加密也可以连接)
12)
允许这些协议选中不加密的密码(PAP质询握手身份验证协议(CHAP“Microsoft CHAPMS-CHAP,单击确定
13)
选择网络属性页面,在“VPN 类型选择“L2TP IPSec VPN”
14)
确认“Internet 协议(TCP/IP被选中。
15)
确认“NWLink IPX/SPX/NetBIOS Compatible Transport Prococol”微软网络文件. 和打印共享微软网络客户协议没有被选中。
单击确定,保存所做的修改。

2.
修改注册表
缺省的Windows XP L2TP 传输策略不允许L2TP 传输不使用IPSec 加密。可以通过修改XP 注册表来禁用缺省的行为:
手工修改:
1)
进入Windows XP 开始” “运行里面输入“Regedt32”,打开注册表编辑器
定位“HKEY_Local_Machine System CurrentControl Set Services RasMan Parameters ”主键。
2)
为该主键添加以下键值:
键值:ProhibitIpSec
数据类型:reg_dword
值:1
3)
保存所做的修改,重新启动电脑以使改动生效。
提示:必须添加“ProhibitIpSec”注册表键值到每个要使用L2TP 的运行Windows XP 操作系统的电脑。

3.
使用L2TP 隧道连接到L2TP 服务器
1)
确认计算机已经连接到Internet(可能是拨号连接或者是固定IP 接入)。
2)
启动前面步骤中创建的“l2tp”拨号连接。
3)
输入的l2tp 连接的用户名:test 和密码:test
4)
单击连接
5)
连接成功后,在MS-DOS 方式下输入“ipconfig”,可以看到一个在L2TP
务器地址池中的地址,就是L2TP 服务器分配给本机的IP 地址。
 
七、一些xl2tp服务器的配置选项说明。
PPPD 常用选项
Asyncmap 异步控制字符映射
Auth 在接收和发送网络数据包前需要认证
Crtscts 串行设备硬件流控
Defaultroute 在系统中加一条路由,做为ppp用户的网关
file name 从文件中读
lock 分配一个锁文件,让其他用户知道该串行设备被用
mru 最大收到单元数据字节数
mtu 最大转发单元数据字节数
passive 如果用户没有应答,服务将等待用户应答。
 
选项:
<local_IP_address>:<remote_IP_address> 本地址与远程地址对,如使用此项,远程地址将分配指定的本地址,而不能分配其他地址。
active-filter filter-expression 包过滤,表达式与tcpdump一致
allow-ip address(es) 允许使用给定的地址而无需认证。
八、本文档的形成,参考了互联网上很多大虾发布的文档,在此表示感谢。
(责任编辑:南非蚂蚁)
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
验证码:点击我更换图片
发布者资料
寂莫风 查看详细资料 发送留言 加为好友 用户等级:注册会员 注册时间:2011-02-25 13:02 最后登录:2011-02-25 15:02
栏目列表
推荐内容