原文链接:
用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转发功能就永久使能了。
12、linux防火墙转发规则
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 CHAP(MS-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) 允许使用给定的地址而无需认证。
八、本文档的形成,参考了互联网上很多大虾发布的文档,在此表示感谢。 (责任编辑:南非蚂蚁) |

