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

使用Linux L2TP/IPsec VPN 服务器

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

19.4.1 基于内核的26sec使用NAT-T
不像KLIPS的NAT-T补丁,26sec执行者支持“预共享密钥”认证的NAT-T。可是你不能用right=a.b.c.d参数指定一个固定IP地址,将将只好指定right=%any并且使用leftid=/rightid=,这意味着“预共享密钥”被所有Road Warriors共享。你也只好在ipsec.secrets中使用%any:
123.123.123.123 %any : PSK “thisismytopsecretkey”
不能使用l2tpd的listen-addr参数,因为26sec没有使用ipsec0样式的接口。
19.4.2 基于内核的KLIPS使用NAT-T
KLIPS的NAT-T补丁不支持“预共享密钥”。
19.5 关于NAT-T的发行版细节信息

19.6 启用NAT-T的过程
当你有一个支持NAT-T的内核和用户态工具,你可以依照下面的过程为L2TP/IPsec客户端启用NAT-T。
• 确认L2TP/IPsec客户端支持NAT-T,这常意味着你需要获得最新版或安装更新。
• 如果你的NAT设备支持IPsec passthrough,修改它的配置来禁用IPsec passthrough。
• 如果你的Openswan服务位于一个NAT设备后面并且你使用的客户端运行的是带SP2的Windows XP,你可能需要修改客户端的注册表。
• 在Openswan的配置文件ipsec.conf里添加一行nat_traversal=yes。
• 如果用户的工作站位于NAT设备后面,IP地址是私网地址,Openswan在它可以商谈一个连接前需要知道关于这个地址的一点情况,用户NAT设备的公网IP用right=参数指定,有三种方法指定位于NAT设备后面的用户工作站的私网地址:
方法1:rightsubnet=192.168.111.40/32
方法2:rightsubnetwithin=192.168.111.0/24
方法3:rightsubnet=vhost:%no,%priv (推荐)
第一种方法Openswan、Strongswan和所有的FreeS/WAN都支持,但明显它不是特别灵活,你的每个 Road Warriors可能使用单独的/32,这种方法不方便。第二种方法是X.509补丁的一个特点,这意味着只有Openswan和 Strongswan支持,FreeS/WAN打过X.509补丁后才能支持。可以接受你指定的一个子网并且客户端使用的私有的地址(/32)位于这个子网。注,这和简单的配置rightsubnetwinthin=0.0.0.0/0相比不是一个好的主意。第三种方法是NAT-T补丁的一个特性。这意味着Openswan和Strong在KLIPS和26sec上都支持,FreeS/WAN需要打过补丁后才支持。首先你在ipsec.conf文件中用 virtual_private=192.168.101.0/24参数指定子网。一些人更愿意使用这个参数来列举所有的RFC1918子网,除这些之外都用在你的Linux服务器上。参考NAT-T文档的示例,客户端的私有地址(/32)在任何这些子网都可以接受。另外,%no允许相同的配置文件用到没有位于NAT设备后面的客户。
20 Windows网络(WINS等)
在许多方案中,VPN是用来开NetBIOS/SMB/CIFS网络传输(Windows网络)隧道的,不幸的是Windows网络是一个很糟的协议(可以咨询Samba的开发人员)并且它经常导致各种问题,这不是一篇Windows网络指南,因此我不能在那方面帮助你,但是我可以提供一些提示:
如果你想通过子网(包含WAN和VPN)浏览“网上邻居”,非常推荐有一台WINS服务器,如果你没有一台可用的 Windows NT/2000/2003或你不想购买它,你可以下载Samba(网址:http://www.samba.org)并且将它配置成 WINS服务器。记住这个重要的部分:所有计算机必须配置成使用WINS服务,否则一些计算机看其它计算机可能有点麻烦。
我也注意到,最好的结果是所有的客户端应该配置成使用相同的工作组名或域名,也就是办公网络。许多客户端都有一个默认的工作组名或域名(比如 WORKGROUP或MSHOME),与实际办公网络的工作组名域名不同,最好将这些改成相同的名字。在ISA Server.org网站(http: //www.tacteam.net/isaserverorg/vpnkitbeta2/vpnclientbrowsing.htm)可以找到类似的技巧。
微软的客户端有一个“登录到网络”的选项,如果你想登录到域控制器就启用它。
Windows XP Home不能加入一个域,可是你应该可以访问域中的资源。
自从微软认可L2TP/IPsec协议以来,我还没有真正试过让登录脚本(批处理文件)工作,理论上它应该可以工作。在连接向导的最后一步,计算机询问你这个连接是供“我自己”还是“使用这台计算机的所有人”使用,应该选择“所有人”。你也许喜欢不输入口令,在你下一次登录时点击“选项”按钮,你可以看到出现一个复选框“通过拨号网络登录”,选中这个复选框,用你的Windows用户名和口令登录,你可以看到一个窗口让你选择的连接,其中有你刚才创建的VPN连接,选择它你就可以通过VPN连接登录,并且登录脚本就会启动。

 21 分离隧道
如果你一个连接到办公室的VPN,一般情况所有的数据包通过VPN隧道发送,这不仅是传送到内网服务器上的,而且也有传送到互联网上的,比如当你在互联网上冲浪时。这是一个缺点,互联网通信要通过办公室的互联网连接两次,一次从本机到办公室,第二次从办公室到互联网。
另一方面,如果你使用“分离隧道”,所有内部通信将通过VPN进行隧道传输,但所有互联网传输将被直接发送到互联网,也就是不通过办公室的互联网连接。但这样做缺乏安全,这时客户端用户有两条连接:一条到办公室,另一条到互联网,理论上黑客可以突破并进入用户的家庭计算机并从那里访问办公室。如果禁用“分离隧道”,这将难以做到。
在Windows 2000/XP和MSL2TP,通过修改你创建的VPN的“高级”TCP/IP设置,可以启用或禁用“分离隧道”。你可以取消选择称为“使用远程网络的默认网关”来启用“分离隧道”。在SSH Sentinel 1.4或更高版本上,你可以在“高级”选项中启用或禁用“分离隧道”。
通常,推荐避免启用“分离隧道”。你得到一点额外的带宽但你也引入了一个安全问题。如果你担心用户没有经过你的许可秘密地启用了“分离隧道”,你可以考虑给VPN客户端分配不在子网内的虚拟IP地址,这不是一个万全之策,但可以保证防范多数用户。不在子网内意味着虚拟IP地址(用l2tpd的 “ip range”参数指定)不属于内网。你将只好在VPN服务器上做一些额外的路由,这样在虚拟IP子网上的客户仍然可以访问在内网上的资源。假设你配置了不在内网的虚拟IP地址,因此当一个用户连接时会发生什么?当一个用户禁用了“分离隧道”,默认路由将到达VPN服务器,用户可以访问内网资源,因为VPN服务器上有额外的路由。互联网端也通过VPN服务器的路由操作从而可以访问。可是当用户启用“分离隧道”,事情就有一点不同了,VPN客户默认路由将成为到达互联网,因此互联网端将可以访问。但内网的资源将不再可以访问。客户端是不在内网的虚拟IP地址,因此到达内部网的数据包将被送到默认路由(互联网)而不是VPN服务器。如果你在内网使用私有的不可路由的IP地址(根据RFC 1618 e.g.192.168.1.0/24),那么IPS 将丢弃这些数据包。换句话说,启用“分离隧道”后VPN客户将不能访问在内网的资源,这完全是客观事实。不幸的是,这个方法可以被用户绕过,只要用户在他们的工作站上定义了一个到内网的静态路由即可。对粗心大意的用户没有办法,除非根本不用VPN。

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



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

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