首页 > 代码库 > 配置NAT回流导致外网解析到了内网IP

配置NAT回流导致外网解析到了内网IP

单位有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也是可以的。。。我这是两个功能在一起就冲突了的。

配置NAT回流导致外网解析到了内网IP