用传统的NAT方式替代H3C的DNS-MAP功能

简介:

相信大家在做链路均衡相关的项目中,往往会碰到用户有如下要求:对于内网服务器向外发布的域名,除了让公网用户来访问之外,内网用户也同样用域名方式来访问服务器。但是内网用户的访问往往会出问题,当公网用户用域名正常访问的时候,内网用户却访问不了应用,这是什么原因呢?我们来逐一分析两种情况。
1、  外网用户通过域名访问的情况,见下图:


如上图所示,当公网客户端2.2.2.2通过dns解析出内网服务器192.168.1.100对外域名www.abc.com对应的公网IP为1.1.1.1以后,会主动向1.1.1.1发出访问,整个访问可分为4个过程,每个过程的IP地址情况见上图。在上图4个过程中,我们可以看到1,2过程为从外到内的请求,3,4过程为从内到外的应答。整个过程符合TCP协议建立的过程,因此可以顺利访问。

    2、内网用户通过域名访问的情况,如下图:


大家应该发现了,第二种情况中,只存在3步。当内网用户通过域名解析出公网IP以后,会和第一种情况中一样发起第1过程第2过程,但是和第一种不同的是,服务器会直接把应答返回给内网用户,而内网用户接受到应答后会怎么处理?内网用户是对1.1.1.1发起的请求,所以内网用户自然会等待源地址为1.1.1.1的应答,结果却收到源地址是192.168.1.100的应答,明显和期待的不一致,所以内网用户会直接丢弃掉这个应答。这个也是为什么都是用域名进行访问,从外网来的用户可以正常访问,而内网用户却无法访问的根本原因所在。 

那么,如果解决这个问题呢?以前针对内网用户如何用公网域名访问本地私网内的SERVER这样的解决方法,一般是在内网建立DNS服务器,内网用户的dns服务器都统一指向内网的DNS服务器,而内网DNS在收到争对内网server的域名解析请求之后,会直接将内网server的内网IP解析给内网用户,这样内网用户就会直接访问server的内网IP地址,所以不会出现像上面提到的因为访问server的公网IP而产生的访问失败。

而如果用户内网没有DNS服务器怎么办呢?H3C的防火墙有个专门的功能,叫DNS-MAP,功能很简单,也很实用,就是用来解决这个问题,原理很简单,当内网用户向公网的DNS发出域名解析请求之后,DNS服务器会进行应答,应答包中包含了域名对应的公网IP,而DNS-MAP功能则可以修改这个应答包,将包中包含的公网IP直接替换为服务器的内网IP地址以后返回给用户,从而实现了与内网架设了DNS服务器一样的效果。当然这种功能也有局限:可以设置的域名是有数量限制的。

我在一个链路均衡项目的上线中,就遇到了用A10替换H3C防火墙的情况,其中H3C防火墙上就配置了DNS-MAP。当时用A10替换之后,就发现了内网用户无法再用域名的方式访问内网的server了,因为开始的时候用户并没有给我们全部的H3C防火墙配置,所以我们也没有看到启用DNS-MAP功能。后来当内网用户用域名访问不了server以后才发现。那么这个时候在A10上有哪些方式可以解决这个问题呢?

1、  GSLB方式

这种方式需要和公网域名供应商配合,将所有访问www.abc.com的请求都通过CNAME别名或者NS委派的方式转发到A10上,而由A10来进行地址解析。这种方式的优点是支持智能域名解析,缺点是需要协调域名供应商协同解决,客户也不一定会愿意配合。

2、  aflex脚本方式

用这种方式实现对DNS请求包的拦截,将所有关于 www.abc.com域名的应答中的公网IP替换为内网IP,这样就直接实现了与DNS-MAP一样的功能。优点是不需要用户配合,缺点是设备需要监控所有的DNS包,所以对设备的性能会有一定的影响。

由于当时用户要求必须马上解决这个问题,而第1种和第2种方式又都需要花费时间,所以我直接采用了第3种方式,也是最简单的一种方式:就用NAT来解决这个问题。

3、  NAT方式


这种方式最为简单,和原来过程中最大的差别,在于第2过程的时候,A10对请求的源地址进行了地址转换,从192.168.1.50,改成了A10的接口地址192.168.1.254,这样,服务器会将所有的应答都先返回给A10,而不会直接返回给用户,而在第4个过程中,A10会将应答的源地址从192.168.1.254改回1.1.1.1,这样用户也可以正常接收这个应答了。当然,我们只需要对内网用户发来的请求进行地址转换,而外网来的请求就不需要了,所以最好能够使用ACL对请求进行分类,外网来的不处理,内网来的进行NAT。

t.d.


本文转自 virtualadc 51CTO博客,原文链接:http://blog.51cto.com/virtualadc/723231

相关文章
|
26天前
|
数据可视化 搜索推荐 BI
深度解析好用项目管理工具的功能优势
在选择项目管理工具时,重点在于全面的功能和高性价比。好工具应具备资源利用图(避免过度分配或闲置资源),团队协作功能(促进沟通与进度追踪),质量管理(如问题跟踪和自定义工作流),项目规划和跟踪(甘特图支持),任务管理(任务分解和依赖关系),以及费用跟踪。Zoho Projects、Microsoft Project、Jira等工具各有价格差异,例如,对于50个用户,Microsoft Project最贵,Zoho Projects最实惠,性价比高,适合中小企业。
30 2
|
1月前
|
UED 开发者
通义千问新增文档解析功能,可处理超万页文档
【2月更文挑战第25天】通义千问新增文档解析功能,可处理超万页文档
121 6
通义千问新增文档解析功能,可处理超万页文档
|
1月前
|
缓存 前端开发 Java
【二十八】springboot之通过threadLocal+参数解析器实现同session一样保存当前登录信息的功能
【二十八】springboot之通过threadLocal+参数解析器实现同session一样保存当前登录信息的功能
34 1
|
3天前
|
JSON 前端开发 Java
Javaweb之SpringBootWeb案例之异常处理功能的详细解析
Javaweb之SpringBootWeb案例之异常处理功能的详细解析
16 0
|
3天前
|
存储 前端开发 Java
Javaweb之SpringBootWeb案例之登录校验功能的详细解析
Javaweb之SpringBootWeb案例之登录校验功能的详细解析
6 0
|
1月前
|
人工智能 运维 搜索推荐
精准选型!企业CRM系统选型指南携手十大功能解析
# CRM系统十大功能概览 CRM系统超越了基本的数据库和商机管理,涵盖线索管理、销售自动化、联系人和客户管理、工作流自动化、营销自动化及AI人工智能助手。它优化销售流程,自动化重复任务,支持客户细分,线索培育,市场活动管理和销售预测。AI功能提供销售预测和异常检测,助力企业提升效率和洞悉市场趋势。此指南为企业选型CRM系统提供参考。
20 1
精准选型!企业CRM系统选型指南携手十大功能解析
|
1月前
|
安全 芯片
OVP过压保护芯片:为何电子工程师需要它?功能、作用全解析
OVP过压保护芯片:为何电子工程师需要它?功能、作用全解析
|
1月前
|
负载均衡 算法 Java
SpringCloud负载均衡源码解析 | 带你从表层一步步剖析Ribbon组件如何实现负载均衡功能
SpringCloud负载均衡源码解析 | 带你从表层一步步剖析Ribbon组件如何实现负载均衡功能
|
1月前
|
小程序
TDesign电商小程序模板解析02-首页功能
TDesign电商小程序模板解析02-首页功能
|
2月前
|
数据挖掘 API 数据处理
获取商品详情信息API接口:1688开放平台功能解析
首先,要获取商品详情信息,开发者需要向1688开放平台申请相应的权限,并遵循其调用规则。在调用商品详情信息API接口时,需要传入相应的请求参数,如商品ID、调用时间戳、密钥等。这些参数对于确保接口的正常运行至关重要。

相关产品

  • 云解析DNS
  • 推荐镜像

    更多