Netscaler立身之本——NAT

一、前言

ADC的主要作用是作为服务器的反向代理来进行应用发布的,介于客户端和服务器端之间,那么NAT就是它必然要面临的工作。归根结底,NAT就是ADC的数据转发立身之本。能否支持更多、更灵活、控制力更强的NAT转换就是衡量一个ADC是否合格的关键因素之一。这也对工程师提出了最基本的要求,如果连如何控制NAT都不清楚,那么遇到各种不同的场景就无法做出对应的方案。

二、什么是NAT

1.NAT简介

借助于NAT,私有(保留)地址的"内部"网络通过路由器发送数据包时,私有地址被转换成合法的IP地址,一个局域网只需使用少量IP地址(甚至是1个)即可实现私有地址网络内所有计算机与Internet的通信需求。

NAT将自动修改IP报文的源IP地址和目的IP地址,Ip地址校验则在NAT处理过程中自动完成。有些应用程序将源IP地址嵌入到IP报文的数据部分中,所以还需要同时对报文进行修改,以匹配IP头中已经修改过的源IP地址。否则,在报文数据都分别嵌入IP地址的应用程序就不能正常工作。

2.NAT实现方式

NAT的实现方式有三种,即静态转换Static Nat、动态转换Dynamic Nat 和 端口多路复用OverLoad。

静态转换是指将内部网络的私有IP地址转换为公有IP地址,IP地址对是一对一的,是一成不变的,某个私有IP地址只转换为某个公有IP地址。借助于静态转换,可以实现外部网络对内部网络中某些特定设备(如服务器)的访问。

动态转换是指将内部网络的私有IP地址转换为公用IP地址时,IP地址是不确定的,是随机的,所有被授权访问上Internet的私有IP地址可随机转换为任何指定的合法IP地址。也就是说,只要指定哪些内部地址可以进行转换,以及用哪些合法地址作为外部地址时,就可以进行动态转换。动态转换可以使用多个合法外部地址集。当ISP提供的合法IP地址略少于网络内部的计算机数量时。可以采用动态转换的方式。

端口多路复用(Port address Translation,PAT)是指改变外出数据包的源端口并进行端口转换,即端口地址转换(PAT,Port Address Translation).采用端口多路复用方式。内部网络的所有主机均可共享一个合法外部IP地址实现对Internet的访问,从而可以最大限度地节约IP地址资源。同时,又可隐藏网络内部的所有主机,有效避免来自internet的攻击。因此,目前网络中应用最多的就是端口多路复用方式。

3.Netscaler的NAT

下面我们主要讨论netscaler的NAT是如何做的,哪些参数影响到netscaler的NAT动作。

影响netscaler做NAT的参数主要分为以下8类:

ü RNAT

ü INAT

ü IP mode

ü Netprofile

ü USIP

ü MAC mode

ü Service port=*

ü Service use proxy port

我们分别针对每个参数做测试和理解,以下是环境概述

实验环境:

Client ip:192.168.20.1

SNIP:   192.168.20.11

192.168.0.21

192.168.10.11

VIP:     172.16.10.10

172.16.10.11

10.10.1.2

Server ip: 192.168.0.50

10.10.1.1

三、影响NAT的参数测试

1.RNAT

客户端的网关是netscaler,但服务器没有客户端的回程路由

客户端直接访问服务器,网络不通

抓包情况:

因为服务器没有客户端192.168.20.1的回程路由,所以ICMP无响应

Netscaler上配置RNAT

客户端的地址由192.168.20.1被netscaler替换为192.168.10.11,遂可以访问服务器资源

抓包情况:

2.INAT

在netscaler上配置INAT策略,将10.10.1.2转换为192.168.0.50

Netscaler中没有建立10.10.1.2的vserver

抓包情况:

用户端192.168.20.1访问10.10.1.2被netscaler转换为192.168.0.21访问192.168.0.50.

用户成功打开页面,在INAT中也可以灵活控制源端口、源地址、目的端口等是否转换。

3.IP mode

IP mode的工作机制是默认同时做源地址和目的地址的替换,即相当于静态NAT

抓包情况:

用户端192.168.20.1访问172.16.10.10,被Netscaler替换为192.168.0.21访问192.168.0.50

4.Netprofile

建立两个Netprofile

将Netprofile_vs绑定到Vserver

抓包情况:

客户端192.168.20.1访问172.16.10.10被Netscaler替换为192.168.10.11访问192.168.0.50,源地址不是snip:192.168.0.21而是Netprofile_vs的地址192.168.10.11

将Netprofile_vs绑定到Vserver同时将Netprofile_service绑定到service

Vserver

Service

抓包情况:

客户端192.168.20.1访问172.16.10.10被Netscaler替换为192.168.10.22访问192.168.0.50,源地址而非Netprofile_vs中的192.168.10.11

通过Netprofile测试说明了Netprofile绑在service的优先级高于vserver

5.USIP

保留Netprofile在service上开启USIP,并将服务器的网关指向netscaler

抓包情况:

用户端192.168.20.1访问172.16.10.10,只有目的地址被Netscaler替换为192.168.0.50,源地址不变。

此项说明一旦启用USIP,netscaler所有基于源地址替换的操作全部禁用,不管是默认用SNIP轮训还是指定Netprofile都不生效。

6.MAC mode

MAC mode不做目的地址替换,必须是any的协议才能启用,主要用在LLB。

配置mac mode的VS、servicegroup、member

10.10.1.1是服务器的第二IP

抓包情况:

客户端192.168.20.1访问10.10.1.1,被netscaler替换源地址192.168.10.11后直接访问10.10.1.1,目的地址不做替换。

当然如果需要也可以控制是否做源地址、源端口、目的端口的替换。

7.Service port=*

服务器同时开启8000口的服务

建立两个service

http协议的8000口和TCP协议的any口

建立两个vserver

抓包情况:

用户端192.168.20.1带端口访问172.16.10.10:3000

被NS同时替换源IP+端口和目的IP+端口,源地址变为192.168.0.21:30748目的地址变为192.168.0.50:8000.

但如果用户访问的是any的Vserver话目的端口不会改变

抓包情况:

用户端192.168.20.1访问172.16.10.11:8000

被netscaler替换为192.168.0.21:40948访问192.168.0.50:8000

访问过程目的端口不会改变。

8.Proxy port

如果想源端口也不变需要去掉use proxy port选项,同时开启USIP

抓包情况:

用户端192.168.20.1:4503访问172.16.10.10:3000

被netscaler替换为192.168.20.1:4503访问192.168.0.50:8000,源地址和源端口不做替换

一、总结:

以上展示了可以控制netscaler NAT行为的所有参数,可知netscaler有非常丰富的参数来根据需要灵活控制NAT行为(对于INAT部分有另一篇文章做详细讨论)根据数通设备习惯的NAT术语,总结了netscaler各个参数对应的NAT类型。


项目


Netscaler默认情况


Netscaler可调整情况


RNAT


动、静态SNAT


动、静态PNAT


INAT


静态DNAT


静态PNAT


IP mode


动、静态SNAT+DNAT


动、静态PNAT


Netprofile


动、静态SNAT


动、静态PNAT


USIP


静态SNAT


静态PNAT


MAC mode


动态SNAT(固定目的IP)


Service port=*


目的端口不变PNAT


Service use proxy port


源端口不变PNAT


动、静PNAT

时间: 2024-10-17 00:26:06

Netscaler立身之本——NAT的相关文章

LVS简单实现NAT&DR模型

LVS:Linux Virtual Server  一个由章文嵩博士发起的自由软件项目,它的官方站点是www.linuxvirtualserver.org. 现在LVS已经是Linux标准内核的一部分,在Linux2.4内核以前,使用LVS时必须要重新编译内核以支持LVS功能模块,但是从Linux2.4内核以后,已经完全内置了LVS的各个功能模块,无需给内核打任何补丁,可以直接使用LVS提供的各种功能. LVS是LB集群的一种软件实现方案,类似的有haproxy,nginx,ats(apache

第三十三天 LVS基础原理、调度算法、NAT和DR的实现 、LXC虚拟化

大规模站点构建框架 LVS的基础原理 LVS调度方法及NAT模型的实现 LVS  dr模型及lxc虚拟化 一.大规模站点架构框架 http: stateless keep-alive cookie: session 系统的:可扩展性.高可用性:99%, 99.9%, 99.999% .性能: 可扩展性: 容量:在一定时间内能完成的工作量 scale up: 向上扩展 scale out: 向外扩展 Cluster: 集群 构建高可扩展性系统的重要原则:在系统内部尽量避免串行化和交互 调度器:di

三十三天 大规模站点构建、lvs原理、lvs调度及nat模型实现、lvs dr模型及lxc虚拟化

1.大规模站点构建框架.        http:状态               keep-alive:长连接               cookie:session          cluster:集群                 构建高可扩展性系统的重要原则:在系统内部尽量避免串行化和交互                 HA:High Availability                 LB:Load Balancing                 session复制 

Netscaler的超高端口复用助力应对公网地址紧张

经常会有人问一个IP只有65535(姑且不考虑预留端口),从Big-ip迁移到Netscaler后需不需要增加Ip地址数量来应对大吞吐的场景,尤其是链路负载均衡的应用? 众所周知,Netscaler对比Big-ip具有明显的节约地址的特点,基本上Netscaler可以用最少2个公网地址(管理地址为私网地址)就可以提供外网服务(NAT在Netscaler上而非防火墙),而Big-ip至少需要4个公网地址. 在Big-ip的环境下大家会预留很多Ip地址来应对端口不够用的情况,但如果在Netscale

LVS/NAT/DR/TUN三种模式

集群简介 计算机集群简称集群是一种计算机系统,它通过一组松散集成的计算机软件和/或硬件连接起来高度紧密地协作完成计算工作.在某种意义上,他们可以被看作是一台计算机.集群系统中的单个计算机通常称为节点,通常通过局域网连接,但也有其它的可能连接方式.集群计算机通常用来改进单个计算机的计算速度和/或可靠性.一般情况下集群计算机比单个计算机,比如工作站或超级计算机性能价格比要高得多. 集群就是一组独立的计算机,通过网络连接组合成一个组合来共同完一个任务LVS在企业架构中的位置: 以上的架构只是众多企业里

图解lvs的nat设置

简介: 一.LB集群的介绍 二.LB集群之lvs的三种模式 三. LVS的NAT模式实例,测试nginx 一.LB集群的介绍 集群(cluster)技术是一种较新的技术,通过集群技术,可以在付出较低成本的情况下获得在性能.可靠性.灵活性方面的相对较高的收益,其任务调度则是集群系统中的核心技术.集群是一组相互独立的.通过高速网络互联的计算机,它们构成了一个组,并以单一系统的模式加以管理.一个客户与集群相互作用时,集群像是一个独立的服务器.集群配置是用于提高可用性和可缩放性.集群系统的主要优点:高可

使用LVS+NAT搭建集群实现负载均衡

使用LVS+NAT搭建集群实现负载均衡 LVS集群简介    计算机集群简称集群是一种计算机系统,它通过一组松散集成的计算机软件或硬件连接起来高度紧密地协作完成计算工作.在某种意义上,他们可以被看作是一台计算机.集群系统中的单个计算机通常称为节点,通常通过局域网连接,但也有其它的可能连接方式.集群计算机通常用来改进单个计算机的计算速度和/或可靠性.一般情况下集群计算机比单个计算机,比如工作站或超级计算机性能价格比要高得多        LVS集群分布图   集群有三种类型:           

如何使用NetScaler实现http页面跳转https

用户需求: 由于用户在外部访问时,需要输入https://FQDN.com.cn,用户的行为习惯通常是直接输入FQDN.COM.CN. 用户希望可以通过http直接为用户自动重定向至https. 配置过程如下: 1. 在NetScaler上,建立一个新的Virtual Server,设定为80端口,并且在防火墙上将外部IP的80端口做NAT到该VS IP,service中不要选择任何service: 2.  在Advanced选项卡里,Redirect URL中填写真实需要访问的URL,配置完毕

NetScaler OTP双因子身份认证登录演示

NetScaler OTP 应用场景 NetScaler OTP(one time password)是双因子身份证的一种,利用用户名密码+6位时间型令牌认证码,完成身份认证. 在以前的双因子解决方案中NetScalerGateway需要与第三方 Radius服务器集成,实现双因子认证.对于客户来说,需要额外支付双因子身份认证的费用,提高了解决方案成本. NetScaler OTP解决方案利用NetScaler 源生功能,配合手机APP  google authenticator,不需要其他成本