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

使用Linux L2TP/IPsec VPN 服务器

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

5.2 监听地址参数(仅KLIPS有效)
除对L2TP守护进程建立防火墙外,还有一种更加安全的设置方法。默认情况下,L2TP守护进程监听UDP 1701端口,假如防火墙关闭, L2TP守护进程将暴露在外部接口。因此,不需要任何人通过Linux VPN服务器外部接口访问L2TP守护进程,你需要的是只有经过IPsec认证的客户可以访问L2TP守护进程,也就是说L2TP数据包应该通过IPsec隧道,并且服务器与客户机之间不是没有加密的直接相连。可是,默认情况下 L2TP守护进程监听所有接口,包括外部接口(不友好的),它绑定到INADDR_ANY(它能够识别的那些)。你更愿意L2TP仅绑定到ipsec0接口,不过,这是不可能的。不像低层网络应用程序(tcpdump和Ethereal)那样,你不能将L2TP绑定到某个特定的接口。
幸运的是,L2TP可以绑定到某个特定的IP地址。两个主流的开源L2TP守护进程(l2tpd和rp-l2tp)提供了补丁,使之可以绑定(监听)某个特定的IP地址。这个补丁称为:listen-addr patch。打了该补丁后你只要在L2TP守护进程的配置文件(l2tpd.conf)中增加一行“listen-addr 192.168.1.98”,L2TP守护进程就会绑定(监听)这个IP地址(一般情况下是内网IP地址)。
因为L2TP守护进程在内部接口上监听,所以外部接口不能直接访问守护进程,这很好,可是L2TP守护进程必须通过ipsec0接口才能访问,所以要配置一下防火墙,让ipsec0的数据包能够到达内网。
iptables -t nat --append PREROUTING -i ipsec0 -p udp --sport 1701 --dport 1701 -j DNAT --to-destination 192.168.1.98
这里的192.168.1.98也是内网接口的IP地址。删除规则的方法是:
iptables -t nat --delete PREROUTING -i ipsec0 -p udp --sport 1701 --dport 1701 -j DNAT --to-destination 192.168.1.98
在执行这一行时Openswan必须运行,也就是说ipsec0必须存在。作为选择,你可以增加额外的防火墙脚本供Openswan调用,也就是指定“leftfirewall=参数”。参考这方面的FreeS/WAN文档(http: //www.freeswan.org/freeswan_snaps/CURRENT- SNAP/doc/firewall.html#up_down)。
当正确地使用了listen-addr参数后,L2TP守护进程将不再监听外部接口,因此就算防火墙停止,L2TP守护进程也不会暴露在外部接口上。可是仍需要对除ipsec0以外的所有接口进来的L2TP连接谨慎地设置防火墙。同时使用防火墙保护和“listen-addr”参数(就像腰带与吊带一样)。
5.3 监听地址参数和26sec
不幸的是,上面提到的“listen-addr”不能用在2.6内核的本地IPsec执行者(26sec)上,因为26sec没有ipsec0这样的接口,而且在普通的2.6内核上IPsec后面进行网络地址转换(NAT-after-IPsec)会普遍被破坏。在2.6内核上的这些问题有5种解决方法。第一,在2.6内核中使用KLIPS,这样你就有了ipsec0这样的接口,FreeS/WAN 2.05支持这样,Openswan 2.3支持在2.6内核中使用KLIPS,但它仍在开发中。第二,等出现新的IPsec后面进行网络地址转换(NAT-after-IPsec)不再被破坏的 2.6.x内核。第三,用非正式开发的Netfilter补丁来编译你自己的内核。第四,也是最不理想的,在IPsec服务器上使用防火墙,也就是让 L2TP守护进程监听所有接口,防范从外部接口进来的所有L2TP连接。第五,在VPN服务器前边放一个有防火墙(也可能是NAT)的路由器,并且允许 L2TP监听所有接口。后边两种方法依赖于防火墙,是一种折衷的办法,万一禁用或者发生其它原因,L2TP就暴露了。
5.4 ip_forward(IP传递)
另一个值得注意的安全点是,人们通常将/proc/sys/net/ipv4/ip_forward设置为1来启用路由(VPN已经启用),这样从IPsec隧道来的数据包将被转发到内网。可是有一些安全含意,当对某个接口做了限制后,也许一个或多个iptables forward规则同样可能被欺骗。否则你可以使用iproute2(高级路由)。这有点超出本文的范围。

6 VPN的选择
在发掘安装Openswan和L2TP的技术细节前,先停一下。假设你有兴趣让你的用户通过Internet远程访问,主要原因是:价格、安全、友善的用户界面,有以下几种方案供选择:
1、客户端用硬件设施。
2、PPTP,例如Windows包含客户端的。
3、像Citrix、Windows终端服务器、pcAnywhere或VNC等远程桌面解决方案。
4、基于SSL的VPN,例如HOB或者Citrix Secure Gateway。
5、非标准的,基于开源的解决方案,如CIPE、vtun、tinc和OpenVPN。
6、第三方IPsec解决方案,如PGP、SafeNet SoftRemote、SSH Sentinel或TheGreenBow VPN客户端。
7、Windows 2000/XP自带的IPsec客户端,手工配置去除掉L2TP。
8、Windows 2000/XP自带的IPsec客户端,用免费工具软件配置去除掉L2TP。
9、像Windows 2000/XP、Pocket PC 2003、Mac OS X v10.3+ 自带的IPsec/L2TP客户端,为Windows 95/ME/NT4设计的MSL2TP客户端。
7 带L2TP的IPsec的优势和劣势
下面是用Windows和Mac Panther自带的带L2TP的IPsec客户端连接到Linux服务器的优势和劣势。
优势:
1、“免费”。Windows自带客户端或者可以免费从微软下载。Mac OS X 10.3+也带了一个客户端,当然客户端本身不是真正免费,因为已经从Windows/Mac OS许可中支付了。很明显,它不像免费软件基金会的软件那样真正免费。
2、在客户端上安装还算简单。默认情况下Windows 2000/XP、Pocket PC 2003和Mac OS X 10.3+已经安装了一个客户端。Windows 9x/ME/NT4需要下载一些额外的软件(需要Dial-Up Networking 1.4和IE 5.01以上)。也可以安装第三方客户端。
3、使用还算简单。没有更多的配置,所以更少出错。
4、“本地的”客户端。也就是微软的苹果。
5、安全。一般认为IPsec是一个安全的VPN协议。例如,远远超过PPTP。L2TP没有把握,但无论怎么样L2TP数据包用IPsec加密了。
6、支持“虚拟IP地址”。这意味着远程客户一旦登录后就可以从内网获得一个IP地址。对其它计算机来说,远程用户就像在内部网络上一样。

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



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

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