单位有3个域名,用量很大,2014年开始本人研究部署了Bind+DLZ +Mysql的三机智能多链路DNS,非常好用,优点是:

1、使用Mysql管理记录,配置、管理、查询方便。

2、自动判断运营商,返回指定IP,实现智能多链路。目前我们单位有电信、移动、教育网专线和固定IP,通过Bind的View,判断请求源IP自动返回对应运营商的服务IP。很好很强大也很实用。

3、根据配置自动为内网分配对应的运营商解析。。。我单位内网用户较多,有一个不少见的需求,内网部分用户要使用电信专线、部分用户要使用移动专线,然而走电信的就得用电信DNS解析、走移动就得用移动DNS解析,同样的,Bind的View也很好的解决了这个问题。

然而、、、、、今天突然让我崩溃了,有2、3个域名外网访问部分出错、打不开网页。我仔细研究,发现外网被解析成了内网IP。。。如下图:

这让我很头疼呀,仔细分析,把Bind从Dump缓存、Config文件、ACL文件全部翻了个遍,没发现问题。。。。。这个问题的状况是这样的:只有2、3个域名有这个问题,其它子域名(近几十个)都没问题。。。。

很奇葩,我都有点怀疑跟服务器有没有关系呀。。。。。

折腾2、3天没搞定,也没想通。。。今天晚上从路由器入手打算再走一遍,我手头有3个路由器,一行行看配置,终于找到点眉头,被解析错误的地址,我在其中一个路由器上做了NAT回流。。。

好吧,什么是NAT回流?这里简单讲讲,详细的大家上网搜吧,就是我做了nat server,比如: nat server protocol tcp global X.X.X.X any inside 192.168.200.57 any。这时外网用户通过X.X.X.X的公网IP、内网用户通过192.168.200.57的IP分别可以访问对应的服务,当然主要是用DNS了,但是如果我内网里有人用X.X.X.X的公网IP去访问呢?这时正常、默认的NAT配置是访问不了了,详细我也不说了,搜到这篇文章的兴许就是这个故障,这时就要做一个NAT回流,让路由器从内网过来的访问公网IP请求能够像在外网一样访问,这时配置NAT回流就可以,我是这样弄的(路由器是H3C的):

1、先搞个回流的ACL。。。我的故障就在这里了,一会说。

acl number 3010
 rule 5 permit ip source 172.16.0.0 0.0.255.255
 rule 6 permit ip source 172.17.0.0 0.0.255.255
 rule 7 permit ip source 172.21.0.0 0.0.255.255
 rule 8 permit ip source 172.22.0.0 0.0.255.255
 rule 15 permit ip source 192.168.0.0 0.0.255.255
 rule 100 deny ip

2、在内网接口上配置,注意是内网,而不是外网。

interface GigabitEthernet2/2/0
 port link-mode route
 nat outbound 3010
 nat server protocol icmp global X.X.X.X inside 192.168.200.57
 nat server protocol tcp global X.X.X.X any inside 192.168.200.57 any
 ip address 10.10.248.1 255.255.255.252

那为什么这个回流会导致外网解析到了内网IP呢???原因是我在做Acl的时候,当时只是为了测试一下这个200.57的业务内网用公网IP访问,就简单的内网IP都给Permit了,这个配置NAT回流是可以了,但由于没有匹配目标IP,导致所有包都能回流,导致内网的DNS回传给外网DNS服务器的响应包识别为是内网地址段来的,就丢了个内网IP给人家运营商服务器。。。把上面Acl改完善就OK了,完整的应该是这样:

rule 5 permit ip source 172.16.0.0 0.0.255.255 destination 192.168.200.57 0
 rule 6 permit ip source 172.17.0.0 0.0.255.255 destination 192.168.200.57 0
 rule 7 permit ip source 172.21.0.0 0.0.255.255 destination 192.168.200.57 0
 rule 8 permit ip source 172.22.0.0 0.0.255.255 destination 192.168.200.57 0
 rule 100 deny ip

也就是严格匹配内网地址段 to 内网需要NAT回流的服务器内网地址。。。这样对这台的NAT回流也正常(内网用它的公网IP也可以访问)、同时也不会出现BIND解析出错的问题。。。

当然如果你不提供像我的这个智能BIND解析服务,那你就像上面那个笼统的ACL也是可以的。。。我这是两个功能在一起就冲突了的。

2016-11-18补充:

后来发现,其实光ACL也没用,还是会这样呀。。。。。苦苦研究一个多月,最终在厂商工程师的帮助下解决了问题,原来是路由器的DNS-ALG在作怪,H3C路由器V5平台下ALG功能默认是开启的,而V7下默认是关闭了就没这问题。我的是V5,得手动关闭一下:系统视图下:undo alg dns

解决问题了。。。。OK,那么alg dns是什么鬼呢?来看看:

NAT ALG 功能,仅在要通过NAT 设备进行DNS、FTP、SIP 和RTSP 等应用(如DNS 服务器在公网中,需要在内网中使用域名访问位于内网的服务器时)时,需要配置NAT ALG 功能。使能ALG 功能可以使NAT 设备识别被封装在报文数据部分的IP 地址或端口信息,并根据动态形成的NAT 地址(或同时包括端口号)映射表项进行替换,使报文正常穿越NAT。

所以呢,nat server只在inbound生效,应该是报文从内网返回命中内敛口,出去了返回的是私网解析。。。

至此,该问题彻底解决。。。

配置NAT回流导致外网解析到了内网IP的更多相关文章

  1. 利用阿里云搭建frp实现外网远程桌面链接内网电脑

    主要应用场景:针对学生放假回家使用外网无法远程操作学校的服务器或者电脑,这里通过阿里云的云服务器搭建一个frp服务,实现内网穿透,从而可以直接通过远程桌面或者其他工具实现对校园网内的服务器或者电脑进行 ...

  2. centos6.5虚拟机配置Nat模式连接外网

    想来在虚拟机上搭点软件,于是乎就想让虚拟机连上外网,就用到了Nat模式,自己对网络了解不是太深,以至于配置联网花了一下午.总结下联网步骤. (1)点击虚拟网络编辑器 (2)注意以下几点标红处 (3)点 ...

  3. 在外网使用ssh连接内网中的多台Linux服务器

    最近因为要对全球工控机网络进行协议扫描,需要在实验室配置几台服务器,因为我们只有一个IP地址,所以是用路由器搭建了一个内网(拓扑结构如下图).但是这样做了之后无法在宿舍通过ssh直接连接服务器,因为那 ...

  4. frp内网 穿透映射使内网svn可外网访问

    起因 公司svn目前部署在内网服务器上,现在想在家中也可以使用,因此需要外网访问内网的工具 经过 使用过几个产品: utools,一个小巧的windows下的工具,内网映射只是它的一个小功能,支持tc ...

  5. SSH反向连接让外网也可远程访问内网机器

    最近把树莓派折腾了一番,放在了家里,但是家里是内网,出门在外,不方便直接ssh上来,于是请教了秦兄,指点迷津,发现SSH反向链接可以实现这个功能. 1. ssh反向链接的概念 A主机:外网,ip:11 ...

  6. tomcat manager 禁止外网访问 只容许内网访问

    参考:http://tomcat.apache.org/tomcat-7.0-doc/manager-howto.html A default Tomcat installation includes ...

  7. udp内网穿透 两个内网互联

    1,在有外网ip的机器上启动server. package udp; import java.net.DatagramPacket; import java.net.InetSocketAddress ...

  8. 通过云主机(网关机)远程登录内网mysql

    国内的一些云主机平台(UCloud,阿里云,腾讯云等)走的都是网关机+内网机(即局域网)模式,网关机代理外网访问,不能直接连接内网机器.本文介绍通过远程登录云主机,并设置本地代理的方式,通过sqlyo ...

  9. 【网络】内网穿透方案&FRP内网穿透实战(基础版)

    目录 前言 方案 方案1:公网 方案2:第三方内网穿透软件 花生壳 cpolar 方案3:云服务器做反向代理 FRP简介 FRP资源 FRP原理 FRP配置教程之SSH 前期准备 服务器配置 下载FR ...

随机推荐

  1. [51单片机] TFT2.4彩屏1 [文字显示 画矩形]

    >_<:因为要驱动彩屏,所以这里采用STC90C516RD+单片机[51的89C52也行,就是可能内存在接下来的实验中可能会内存不够],晶振尽量采用高一点的,这里采用24MHz的. > ...

  2. adblockTester通过js检测用户浏览器是否安装了AdBlock

    adblockTester 简介 首先有必要介绍一下AdBlock,它是一款知名网页广告屏蔽插件,在各大主流浏览器上均有AdBlock插件. AdBlock为用户带来了一片蓝天,却苦了站长,尤其是苦逼 ...

  3. 整合GreyBox放大显示图片

    <s:iterator value="#request.photoList" id="photo" status="stu"> ...

  4. centos网卡错误Device eth0 does not seem to be present

    在使用vmware及VirtualBox迁移linux系统过程中,发现部署后的linux系统无法启动网卡 报错为 Bringing up interface eth0: Device eth0 doe ...

  5. paip.log4j 日志系统 参数以及最佳实践

    paip.log4j 日志系统 参数以及最佳实践   %d{yyyy-MM-dd HH:mm:ss} [thrd:%t] %5p   loger:%c   (%C.%M.%L)  - %m%n 201 ...

  6. iOS开发---百度地图配置流程,2.6.0 版本 支持64位

      1.首先需要在百度地图下载最新SDK:地址: http://developer.baidu.com/map/index.php?title=iossdk/sdkiosdev-download 2. ...

  7. 利用BitLocker和vhdx创建一个有加密的Win10系统

    如果电脑不支持TPM加密BitLocker,就无法对系统盘进行全盘加密. 可以采用一个变通的方法:创建一个vhdx,将这个虚拟磁盘进行BitLocker加密,然后在这个盘里安装操作系统,最后把vhdx ...

  8. 实测可用的免费STUN服务器!

    实测可用的免费STUN服务器!     以实际ping延迟排序: stun.voipbuster.com 287ms stun.wirlab.net 320ms s1.taraba.net       ...

  9. 大型架构.net平台篇(WEB层均衡负载nginx)

    第一部分 WEB层均衡负载.net平台下,我目前部署过的均衡负载有两种方式(iis7和Nginx),以下以Nginx为例讲解web层的均衡负载. 简介:Nginx 超越 Apache 的高性能和稳定性 ...

  10. 南京都昌信息科技有限公司招聘C#程序员

    南京都昌信息科技有限公司招聘全职C#程序员 本公司核心产品为DCWriter电子病历文本编辑器,DCTimeLine时间轴软件等自研产品,现招聘全职C#程序员. 职位描述: 1.使用C#进行软件开发, ...