分享
 
 
 

利用SLB实现VPN下的NAT

王朝other·作者佚名  2008-05-19
窄屏简体版  字體: |||超大  

许多网络管理员试图在VPN中使用不可路由的专用网IP通信时,经常发现使用NAT的VPN连接总是失败的。这是因为NAT改变了一个包的第三层网络地址(当然也改变了相应的checksum值),而像IPSec或L2TP之类的隧道技术是将专用网的第三层网络地址用公网的第三层网络地址封装加密,在另一端除去封装和加密,这样NAT就会破坏隧道的通信。

两种NAT实现方法

虽然在VPN环境下使用NAT很困难,但有大量应用的确需要在VPN系统中使用NAT,现有两种方法供广大网络管理员参考。一是在路由器之外引入专用的NAT设备,如防火墙。由于是在路由器之外进行NAT转换,因而避免了上述的NAT/VPN难题。另一种方法则是采用Cisco的SLB技术。Server Load Balancing (SLB)是Cisco公司基于Cisco IOS的提供服务器负载均衡的解决方案,该方案允许管理员定义一个虚拟服务器来代表一组真实服务器。当一个客户端发起一个与虚拟服务器的连接时,IOS的SLB会根据配置的算法连接到某个真实服务器上去,从而实现负载均衡,当然也就实现了NAT。由于SLB是网络设备本身的功能,与具体接口无关,故在VPN环境下使用SLB没有问题。不过目前SLB技术只能用于Cisco 6000系列交换机和Cisco 7000系列路由器。

具体实现

在实现中,我们把SLB方案作为防火墙方案的替代方案,即当系统中除去防火墙时(如因故障等原因),通过在中心系统设定使用SLB方案,而使客户端不需要进行任何改动。这种替代方案对网络系统的设计提出了更高的要求。

1. 采用防火墙实现NAT

本系统使用VPDN建立企业专用网,Cisco 7120作为VPDN的LNS,系统采用若干个服务器处理远程客户端请求。为了在网络上隐藏内部地址,该系统采用了一个Netscreen硬件防火墙用于实现NAT和负载均衡,系统如图1所示(图中地址仅供参考,非系统真实地址)。

远程客户端采用虚拟地址192.168.1.10与中心系统的服务器发起TCP连接。该连接需经过防火墙,防火墙根据预设的负载均衡算法将虚拟地址变换为某个服务器的真实地址,从而实现了NAT以及负载均衡。

防火墙的设置步骤如下:

使用浏览器,用管理员口令进入防火墙管理界面,先在Interface菜单中设定Trusted和Untrusted接口的IP地址。在Service菜单中定义服务器提供的服务,系统服务器在8000端口提供自定义TCP服务,故应在Service/Custom栏中增加一个service SVC8000,Dst Port 选择为8000,Transport为TCP。为了限制客户端的源地址,在Address/Untrusted菜单中增加名为SRC172的172.16.0.0/24地址段。在Virtual IP菜单设置Virtual IP1,将Server Virtual IP 设为192.168.1.10,注意Virtual IP必须和Untrusted端口位于同一网段,Service选择为SVC8000,Virtual Port为8000,在Server Pool中将10.1.1.1等几个真实服务器地址加入,Load Balance算法可选择Least Conns,并可根据各服务器的处理能力选择各服务器的权重值。在Policy菜单中设置服务SVC8000的访问策略,在Policy/Incoming建立一个新策略,设Service为SVC8000,Destination为VIP(192.168.1.10), 设Source为SRC172用以限制客户端的地址。

设置完成后,客户端即可先拨号建立客户端与路由器的连接。然后使用192.168.1.10:8000与中心建立TCP Socket连接,经过防火墙负载均衡,即可与某一个服务器建立连接。

2. 采用SLB实现NAT

在上述方案中,如果除去防火墙,由于远端客户数量众多,而且也不方便做任何参数修改,就需要由路由器来实现NAT和负载均衡。由于在前文中所述原因,路由器无法实现VPN下的NAT。本文系统使用的是Cisco7000系列路由器,可以使用SLB功能来替代防火墙。网络结构修改如图2所示。

为了保证在不改动服务器IP地址和客户端目标地址的条件下保持通信畅通,路由器的SLB功能需要负责NAT和负载均衡。具体实施如下:

路由器的以太网口连接到可信任的内部网,与服务器处于相同网段,并将以太网地址改为原防火墙Trusted口的地址。路由器应启动SLB功能,配置如下:

!

ip slb serverfarm REAL_HOST # REAL_HOST是真实服务器族的名字。

predictor leastconns #选用最小连接数均衡算法。

!

real 10.1.1.1 # 这里填入几个真实服务器的IP地址。

real 10.1.1.2

real 10.1.1.3

inservice #启动该服务。

!

ip slb vserver VIRTUAL_HOST # VIRTUAL_HOST是虚拟服务器的名字。

virtual 192.168.1.10 tcp 8000 # 虚拟服务器的IP地址,tcp 8000表示自定义服务。

serverfarm REAL_HOST #表示该虚拟服务器使用的真实服务器族。

client 172.16.0.0 255.255.255.0 #限制客户端源地址。

inservice #启动该服务。

!

路由器设置完成后,由于SLB负载均衡是工作在Dispatched模式下的,要求每个真实服务器把虚拟服务器的地址作为本机回环地址。这个看似简单的要求实现起来相当困难。一般系统默认的Loopback地址为127.0.0.1/8。目前,我们还没找到在Windows操作系统下修改Loopback地址的方法,好在我们使用的是Linux系统,可以方便地修改Loopback地址,修改方法如下:

#vi /etc/sysconfig/network-scripts/ifcfg.lo

DEVICE=lo

IPADDR=192.168.1.10

NETMASK=255.255.255.0

NETWORK=192.168.1.0

……

修改后重新开机,Loopback地址就修改完成了。

如上修改后,如客户端仍不能通过虚拟服务器连接到真实服务器,则是因为ARP缓存不能正确地自动更新网关10.1.1.10的MAC地址,造成IP通信不畅。为了通信稳定,最好在每个真实服务器中的ARP表中加入永久的网关MAC地址项目; 当然,同时要求不要轻易修改路由器以太网接口的位置(MAC地址)。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有