ISP环境下递归DNS服务器搭建的IP配置与公网访问问题咨询
ISP环境下递归DNS服务器搭建的IP配置与公网访问问题咨询
首先得明确你的用户群体和服务场景:从你给出的nslookup示例来看,你希望内网(比如你ISP的局域网用户)查询时看到私网IP 192.168.99.254,同时服务器显示为dns.maykochi.com;而如果需要公网用户访问你的DNS服务,还要对应到公网IP。下面分点解答你的问题:
1. 创建区域时该用公网IP还是私网IP?
这得分场景讨论:
- 内网服务区域(给你的ISP内网用户用):如果是为内网用户提供递归DNS查询,或者解析内部服务/主机,创建区域时应该绑定私网IP
192.168.99.254。这样内网用户查询时,DNS返回的服务器地址是他们能直接访问的私网IP,刚好符合你想要的nslookup显示效果。 - 公网权威区域(若需对外提供权威解析):如果你的DNS同时要作为权威DNS,对外提供
maykochi.com或其他域名的解析服务,那创建区域时必须绑定公网IP(也就是你注册的ns1.maykochi.com和dns.maykochi.com对应的公网IP),这样公网的递归DNS才能正常访问你的权威服务。
另外,你的递归DNS服务器本身建议同时监听私网IP和公网IP:私网IP对内提供服务,公网IP对外(如果需要开放公网递归服务的话)。
2. 用私网IP搭建的正向/反向区域,如何让公网通过dns.maykochi.com访问?
私网IP是无法直接被公网访问的,所以你必须做NAT地址转换,把dns.maykochi.com对应的公网IP 130.110.111.123映射到DNS服务器的私网IP 192.168.99.254上,具体操作步骤大概是这样:
- 在你的边界路由器/防火墙配置DNAT规则:将公网IP
130.110.111.123的53端口(UDP和TCP都要配置,因为DNS会同时用到这两个端口)转发到内部的192.168.99.254:53。 - 确保DNS服务器监听私网IP
192.168.99.254的53端口,同时服务器防火墙允许内部和外部的DNS流量访问该端口。 - 公网用户通过
dns.maykochi.com查询时,请求会先到达公网IP130.110.111.123,再通过NAT转换到你的私网DNS服务器,处理完成后原路返回结果。
这里要提醒一句:如果你的递归DNS只给内网用户使用,其实没必要开放公网访问;如果要对外提供递归服务,一定要做好安全防护——比如限制查询范围、启用DNSSEC、防止缓存投毒等,避免被恶意滥用。
补充:实现目标nslookup显示格式的小技巧
要让内网用户nslookup时显示Server: dns.maykochi.com和Address: 192.168.99.254,还需要做两个小配置:
- 让内网用户的DNS客户端把
192.168.99.254设为首选DNS服务器; - 在你的内网DNS区域里添加一条A记录:
dns.maykochi.com IN A 192.168.99.254,这样内网用户查询dns.maykochi.com时会得到私网IP,nslookup就会显示你想要的格式。而公网用户查询dns.maykochi.com时,会通过公网DNS解析到你的公网IP130.110.111.123。
备注:内容来源于stack exchange,提问作者maykochi




