Linux中国 Linux中国门户站!
设为主页 设为主页
收藏本站 收藏本站
 
当前位置 :首页 ->Linux技术 ->网络应用 ->正文

使用Linux L2TP/IPsec VPN 服务器

来源:linux.chinaunix.net 作者:QUSHIQIANG  时间:2007-04-22 点击: [收藏] [投稿]

在你配置完你的客户端后,你应该开始VPN连接,它将首先启动一个IPsec连接,然后是一个L2TP连接。
12 开始IPsec连接
开始(“拨号”)VPN连接。这一步的过程依赖于不同的客户端。客户端将报告一个错误(“你拨叫的计算机没有响应”或类似的信息)。出错是应该的,你仍没有配置L2TP服务,所以这时应该忽略错误。
不过,IPsec连接应该启动成功。你可以检查Openswan的日志文件(通常是/var/log/secure),它看起像这样:
Nov  1 14:09:59 xxx Pluto[yyy]: "L2TP-PSK" #7: responding to Main Mode
Nov  1 14:09:59 xxx Pluto[yyy]: "L2TP-PSK" #7: Peer ID is ID_IPV4_ADDR: '234.234.234.234'
Nov  1 14:09:59 xxx Pluto[yyy]: "L2TP-PSK" #7: STATE_MAIN_R3: sent MR3, ISAKMP SA established
Nov  1 14:09:59 xxx Pluto[yyy]: "L2TP-PSK" #8: responding to Quick Mode
Nov  1 14:10:00 xxx Pluto[yyy]: "L2TP-PSK" #8: STATE_QUICK_R2: IPsec SA established
如果你看到这样,祝贺你,你已经完成了IPsec部分,继续下边的L2TP部分。如果不是,检查你的配置或参阅“问题解答(22)”
13 L2TP概述
你刚才配置的IPsec连接是被用来开L2TP协议隧道的(RFC3193中定义了L2TP在IPsec之上)。L2TP在运行时会打开PPP隧道,而PPP为实际负荷开隧道。这意味着在你的Linux系统上你需要一个L2TP服务。
常见的L2TP服务软件有:l2tpd、rp-l2tp、OpenL2TP、l2tp、internat-l2tp等。
l2tpd和rp-l2tp守护进程使用相同的名字:/usr/sbin/l2tpd,这非常不幸,很多情况下你只能安装它们中的一个。rp- l2tp看来比l2tpd代码更好,可是rp-l2tp有一个缺点,它不能自己指动态内网(虚拟)IP地址,如果你为你的用户分配固定内网地址这就不是一个问题了。有三种解决方案:rp-l2tp可以被延伸,因为它动态分配IP地址,这更接受或有点违反OSI网络分层模型,但方个方法l2tpd可以做到。仍没有人可以为rp-l2tp执行这个解决方案。第二种解决方案是让PPP服务从一个DHCP服务(在你的网络上你已经拥有的)获得IP地址,要想这样,你需要一个pppd插件——ppp-dhcp。第三种解决方案是使用支持RADIUS的pppd 2.4.2或更高版本,这当然是最灵活的解决方案,但是需要一个RADIUS服务,增加复杂性,尤其是你只有很少用户时。如果你想让RADIUS服务器同PPP一起工作,它必须支持一个称为 “IP pools”的特性。注:后两种方案在所有L2TP执行者上应该都可以工作,因为它们是pppd的特性,因而它们与你使用的L2TP服务无关。
除L2TP服务之外,你还需要一个PPP服务,因为L2TP被用来开PPP隧道。多数发行版包含一个PPP服务(pppd)。
14 安装和配置L2TP(Linux)
大概安装l2tpd最容易的方法就是使用你的发行版中的软件包。
; Sample l2tpd.conf
;
[global]
; listen-addr = 192.168.1.98

[lns default]
ip range = 192.168.1.128-192.168.1.254
local ip = 192.168.1.99
require chap = yes
refuse pap = yes
require authentication = yes
name = LinuxVPNserver
ppp debug = yes
pppoptfile = /etc/ppp/options.l2tpd
length bit = yes
l2tpd.conf中的参数介绍:
listen-addr 指定l2tpd监听的IP地址。默认情况下,l2tpd将监听本机所有IP地址。
ip range 指定供远程用户使用的一段内网IP地址范围。
local ip 指定供Linux服务器上ppp0接口使用的IP地址。这个IP地址必须是内网的有效地址。这意味着,这个IP地址必须属于ip range相同的网络,但是它又不在ip range中。
require chap 或refuse chap 和require pap或refuse pap 一般情况下启用CHAP并且禁止PAP,因为Windows客户端会提示口令没有加密(当然是废话,IPsec已经将连接加密了)。
length bit 一般情况下设为yes,因为没有它后连接会不太稳定。
14.1 L2TP认证和客户IP限制(不是重点)
IPsec支持通过“预共享密钥”和证书方式进行认证。PPP也提供了认证,比如通过口令。生产出来的L2TP也支持认证。问题是,在 Windows/Mac的L2TP客户中,你不能在任何地方指定这些口令。可能没有哪个厂商认为L2TP认证是必要的。并且正因为如此,它看起不是那么有用。对于任何人来说,IPsec和PPP认证应该足够了。
在l2tpd.conf中,require authentication参数容易引起误会。这个参数在启用L2TP认证后没有任何作用。它实际上PPP认证(也就是PAP/CHAP)。Windows客户端会默认这样使用,因此你需要在l2tpd.conf配置文件中包含 require authentication来启用PPP认证。
在另一方面,指定参数auth file和challenge后,可以启用L2TP认证。但就像上边说的那样,一般情况不需要L2TP认证。
L2TP也可以根据IP地址进行访问控制。这比L2TP认证稍微有点令人感兴趣。不过,Openswan已经根据IP地址进行了访问控制。你可以使用l2tpd的访问控制作为额外的安全方法(就像腰带与吊带)。只有在预先知道所有客户的IP地址时它才能使用,并且毫无错误。不包括动态IP地址的 Road Warrior。假如你想把l2tpd访问限制为一个IP地址为234.234.234.234的客户,那么你的l2tpd.conf必须增加以下几行:
[global]
access control = yes
[lns default]
lac = 234.234.234.234
15 PPP认证、压缩和加密
IPsec被用来开L2TP隧道,L2TP在运行时开PPP隧道。PPP有几种认证方法。最常用的是PAP(不加密口令)和CHAP(基于认证的挑战/回应)。你可以自由地选择两者,最好是CHAP。如果你用PAP,Windows客户会提示口令没有加密。这有点离题,IPsec已经加密了。 PAP和CHAP都是IETE标准,但微软收购并增强了CHAP,推出一一个新的MS-CHAP(最近确定为MS-CHAPv2)。

 如果您对本文有任何疑问或者建议,请到讨论区发表您的意见: >> 论坛入口 <<



上一篇:让Linux NAT服务器支持UPnP   下一篇:利用IP 别名托管多个SSL 站点

文章评论】 【收藏本文】 【推荐好友】 【打印本文】 【我要投稿】 【论坛讨论
更多相关文章
Power by linux-cn.com 粤ICP备05006655号