一、简介

    L2TP是一种工业标准的Internet隧道协议,功能大致和PPTP协议类似,比如同样可以对网络数据流进行加密。不过也有不同之处,比如PPTP要求网络为IP网络,L2TP要求面向数据包的点对点连接;PPTP使用单一隧道,L2TP使用多隧道;L2TP提供包头压缩、隧道验证,而PPTP不支持。

    L2TP 是一个数据链路层协议。其报文分为数据消息和控制消息两类。数据消息用投递 PPP 帧,该帧作为L2TP报文的数据区。L2TP不保证数据消息的可靠投递,若数据报文丢失,不予重传,不支持对数据消息的流量控制和拥塞控制。控制消息用以建立、维护和终止控制连接及会话,L2TP确保其可靠投递,并支持对控制消息的流量控制和拥塞控制。

二、L2TP与PPTP的不同

    PPTP和L2TP都使用PPP协议对数据进行封装,然后添加附加包头用于数据在互联网络上的传输。尽管两个协议非常相似,但是仍存在以下几方面的不同:

  • PPTP要求互联网络为IP网络。L2TP只要求隧道媒介提供面向数据包的点对点的连接。L2TP可以在IP(使用UDP),帧中继永久虚拟电路(PVCs),X.25虚拟电路(VCs)或ATM VCs网络上使用。

  • PPTP只能在两端点间建立单一隧道。L2TP支持在两端点间使用多隧道。使用L2TP,用户可以针对不同的服务质量创建不同的隧道。

  • L2TP可以提供包头压缩。当压缩包头时,系统开销(overhead)占用4个字节,而PPTP协议下要占用6个字节。

  • L2TP可以提供隧道验证,而PPTP则不支持隧道验证。但是当L2TP或PPTP与IPSEC共同使用时,可以由IPSEC提供隧道验证,不需要在第2层协议上验证隧道

  • L2TP访问集中器(L2TP Access Concentrator,LAC)是一种附属在网络上的具有PPP端系统和L2Tpv2协议处理能力的设备,它一般就是一个网络接入服务器软件,在远程客户端完成网络接入服务的功能。

  • L2TP网络服务器(L2TP Network Server,LNS)是用于处理L2TP协议服务器端的软件。

三、L2TP的安装

1、环境准备

#安装epel源
rpm -ivh http://mirrors.yun-idc.com/epel/6/x86_64/epel-release-6-8.noarch.rpm
#关闭防火墙
service iptables stop
#关闭SELinux
setenforce 0
#开启数据包转发
sysctl -w net.ipv4.ip_forward=1

2、软件安装

yum install xl2tpd -y

四、L2TP的配置

1、配置xl2tpd.conf主配置文件

# vim /etc/xl2tpd/xl2tpd.conf

[lns default]
ip range = 10.8.0.100-200            #***客户的分配的IP地址
local ip = 10.8.0.1                  #L2TP ***服务器的地址
require chap = yes
refuse pap = yes
require authentication = yes
name = L2TP***server
ppp debug = yes
pppoptfile = /etc/ppp/options.xl2tpd
length bit = yes

2、配置options.xl2tpd文件

# vim /etc/ppp/options.xl2tpd

ipcp-accept-local
ipcp-accept-remote
ms-dns  114.114.114.114
# ms-dns  192.168.1.1
# ms-dns  192.168.1.3
# ms-wins 192.168.1.2
# ms-wins 192.168.1.4
noccp
auth
crtscts
idle 1800
mtu 1410
mru 1410
nodefaultroute
debug
lock
proxyarp
connect-delay 5000
logfile /var/log/xl2tpd.log

3、配置账号密码

# vim /etc/ppp/chap-secrets

# Secrets for authentication using CHAP
# client      server    secret    IP addresses
  ***           *       123456           *

4、配置IP映射

iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE

五、L2TP启动

service xl2tpd start

# netstat -antup

Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address     Foreign Address     State   PID/Program name   
tcp        0      0 0.0.0.0:22        0.0.0.0:*           LISTEN      1026/sshd           
tcp        0      0 127.0.0.1:25      0.0.0.0:*           LISTEN      1114/master         
tcp        0     52 192.168.1.10:22   192.168.1.36:62256  ESTABLISHED 1733/sshd           
udp        0      0 0.0.0.0:1701      0.0.0.0:*                       2378/xl2tpd

# 链接查看日志

# tail -f /var/log/message

Jan 17 14:25:21 node1 xl2tpd[2373]: L2TP kernel support not detected (try modprobing l2tp_ppp and pppol2tp)

Jan 17 14:25:21 node1 xl2tpd[2378]: xl2tpd version xl2tpd-1.3.6 started on node1.wzlinux.com PID:2378

Jan 17 14:25:21 node1 xl2tpd[2378]: Written by Mark Spencer, Copyright (C) 1998, Adtran, Inc.

Jan 17 14:25:21 node1 xl2tpd[2378]: Forked by Scott Balmos and David Stipp, (C) 2001

Jan 17 14:25:21 node1 xl2tpd[2378]: Inherited by Jeff McAdams, (C) 2002

Jan 17 14:25:21 node1 xl2tpd[2378]: Forked again by Xelerance (www.xelerance.com) (C) 2006

Jan 17 14:25:21 node1 xl2tpd[2378]: Listening on IP address 0.0.0.0, port 1701

Jan 17 14:27:29 node1 xl2tpd[2378]: Connection established to 192.168.1.36, 1701.  Local: 345, Remote: 1 (ref=0/0).  LNS session is 'default'

Jan 17 14:27:29 node1 xl2tpd[2378]: Call established with 192.168.1.36, Local: 51894, Remote: 1, Serial: 0

Jan 17 14:27:29 node1 pppd[2399]: pppd 2.4.5 started by root, uid 0

Jan 17 14:27:29 node1 pppd[2399]: Using interface ppp0

Jan 17 14:27:29 node1 pppd[2399]: Connect: ppp0 <--> /dev/pts/1

Jan 17 14:27:31 node1 pppd[2399]: Cannot determine ethernet address for proxy ARP

Jan 17 14:27:31 node1 pppd[2399]: local  IP address 10.8.0.1

Jan 17 14:27:31 node1 pppd[2399]: remote IP address 10.8.0.100