基于BIND实现智能DNS解析

简介:

    智能DNS又称为解析切割,是对请求DNS解析的IP地址进行判断,将域名解析成不同的地址

    一般智能DNS应用常见的场景就是CDN,中国特色社会主义的网络导致了电信和联通这2个特色的运营商,而这2个运营商通过在北京某机房的100G带宽相连,这就导致了电信用户访问联通的网络就会非常慢。玩游戏的童鞋就知道用游戏加速器来解决问题,但一般的用户访问在不同运营商网络的服务器时,变得非常慢。于是苦逼的服务提供商为了更好的用户体验就不得不去花费一笔钱去买CDN服务了。。。。

    CDN的原理就是在智能DNS基础上进行web的反向代理缓存实现的。通过不同地域的请求解析到对应地域的缓存服务器上,然后缓存服务器对主服务器进行数据请求,最终返回给客户。这对于静态页面的网站有着很好的加速。

    这里就不得不提一下著名的提供智能DNS解析服务的DNSpod(目前已被腾讯收购,软件源代码已经开源,宣称非BIND可以比拟,有兴趣的童鞋可以去研究研究)。还有比较著名的CDN服务提供商有帝盟等。。。

    还会一种会使用到智能DNS的场景:在公司内部NS服务器上区分内部和外部的请求,将内部请求解析到内网地址上,外网请求解析到外网地址上,此篇博文针对此应用展开

 

    BIND实现智能DNS的原理是通过view的方式,首先判断客户请求的来源,然后返回不同的IP

 

    规划:为lustlost.com域进行智能解析

分2个网段,192.168.92.0/24网段的请求解析到192.168.92.102主机上, 其它网段解析到172.19.19.102主机

这里172.19.19.102模拟外网。

这和一般公司的模式很接近,为公司内部提供内部私网地址的解析,避免路由器性能浪费。为外部提供公网地址的解析。

ns服务器的IP地址为192.168.92.102和172.19.19.102

 

[root@lustlost ~]# yum install bind caching-nameserver –y #安装bind和caching-nameserver,这里的caching-nameserver已经给我们在相应目录下提供了配置文件,根区域和本地区域的数据文件,而且它的主配置是默认以view方式配置的

 

[root@lustlost etc]# cp /etc/named.caching-nameserver.conf named.conf #用cp备份原配置文件,建立要使用的配置文件,然后进行修改

[root@lustlost etc]# vim /etc/named.conf

 

 
 
  1. #首先定义控制列表,这里定义了内网的网段 
  2.  
  3. acl innet {  
  4.         127.0.0.0/8;  
  5.         192.168.92.0/24;  
  6. }; 
  7.  
  8. #全局配置,精简一点,只配置数据文件目录位置 
  9.  
  10. options {  
  11.         directory       "/var/named";  
  12. }; 
  13.  
  14. #创建内网用户的view 
  15.  
  16. view in {  
  17.         match-clients      { innet; };            #定义用户为控制列表中所定义的  
  18.         recursion yes;  #允许内网用户进行递归查询 
  19.  
  20. #下面是定义根区域和本地区域的正反解析 
  21.  
  22.         zone "." IN {                
  23.                 type hint;  
  24.                 file "named.ca";  
  25.         };       
  26.  
  27.         zone "localhost" IN {  
  28.                 type master;  
  29.                 file "localhost.zone";  
  30.         }; 
  31.  
  32.         zone "0.0.127.in-addr.arpa" IN {  
  33.                 type master;  
  34.                 file "named.local";  
  35.         }; 
  36.  
  37.   
  38.  
  39. #定义内部网络用户解析 
  40.  
  41.         zone "lustlost.com" IN {  
  42.                 type master;  
  43.                 file "lustlost.com.in";  
  44.                 allow-transfer { none; }; #不允许区域传送  
  45.                 allow-update { none; }; #不允许更新  
  46.         };  
  47. }; 
  48.  
  49.   
  50.  
  51. #定义外部网络用户解析 
  52.  
  53. view out {  
  54.         match-clients      { any; }; #允许所有用户(这里之所以允许所有用户,
  55. 是因为bind对配置文件是从上往下读取解析的,
  56. 匹配不到上面view所定义的acl,
  57. 才会到这个view中来)  
  58.         recursion no;  #不允许外部网络用户进行递归查询(我们不是免费的公共dns) 
  59.  
  60.         zone "lustlost.com" IN {  
  61.                 type master;  
  62.                 file "lustlost.com.out";  
  63.                 allow-transfer { none; };  
  64.                 allow-update { none; };  
  65.         }; 
  66.  
  67. }; 

 

[root@lustlost etc]# named-checkconf  #配置完成后注意检查配置文件的语法错误

 

至此就配置好了主配置文件,接下来创建区域数据文件

[root@lustlost etc]# cd /var/named/

[root@lustlost named]# vim lustlost.com.in #创建内部网络客户解析区域文件

 

 
 
  1. #这里就随便建立几个记录了 
  2.  
  3. $TTL 600  
  4. $ORIGIN lustlost.com  
  5. @       IN      SOA     ns.lustlost.com.        admin.lustlost.com. (  
  6.                         2012070801  
  7.                         1H  
  8.                         10M  
  9.                         1W  
  10.                         1D  
  11. )  
  12.         IN      NS      ns  
  13.         IN      MX 10   mail  
  14. ns      IN      A       192.168.92.102  
  15. mail    IN      A       192.168.92.100  
  16. www     IN      A       192.168.92.101 

 

[root@lustlost named]# cp lustlost.com.in lustlost.com.out #创建外部网络客户解析区域文件

 

 
 
  1. $TTL 600  
  2. $ORIGIN lustlost.com  
  3. @       IN      SOA     ns.lustlost.com.        admin.lustlost.com. (  
  4.                         2012070801  
  5.                         1H  
  6.                         10M  
  7.                         1W  
  8.                         1D  
  9. )  
  10.         IN      NS      ns  
  11.         IN      MX 10   mail  
  12. ns      IN      A       172.19.19.102  
  13. mail    IN      A       172.19.19.100  
  14. www     IN      A       172.19.19.101 

 

至此所有配置都已经完成

检查下配置有无出错

Q~DUAJA0{$UH@D%_U~{WXMJ

 

检查无错误后启动服务

N1]Q8E@Q{0R019MEP43DQSN

 

查看下当前网络配置(为了方便,在网卡上配置了2个不同的地址,下面客户机也一样)

`Z7FZ05M7[L6$F3IQS820L1

 

查看下客户机的网络配置

T~[_]K1~DR(@SWNDF4QU`79

 

于是用这台客户机用不同地址去请求解析DNS

使用192.168.92.0/24网段去解析的结果

 

 

 

HOBS3]VY%G]8QA3${H@2DNS

 

使用172.19.19.0/24网段去解析的结果

~T]NL`L{)ICSQ5~QYJQS0Y5

 

可以看到,使用不同网段成功的解析到了不同的地址。

 

这就是基于BIND的智能DNS解析,使用了BIND的view功能,至于dnspod,在智能DNS解析方面应该有更加强大的功能,有兴趣可以去官网下载源代码安装研究


本文转自lustlost 51CTO博客,原文链接:http://blog.51cto.com/lustlost/924229,如需转载请自行联系原作者

目录
打赏
0
0
0
0
70
分享
相关文章
域名解析的终极指南:从基础到进阶,彻底搞懂 DNS 记录
域名解析是网站运行的基础,正确配置DNS记录至关重要。本文从基础到进阶全面解析DNS知识,涵盖A、AAAA、CNAME、MX、TXT、CAA等常见记录类型及其应用场景。通过学习,你将了解DNS的工作原理,掌握如何优化域名配置,确保网站与邮件服务高效运行。无论搭建个人博客还是企业官网,本文都能助你轻松搞定域名解析!
694 0
SSL证书验证全攻略:DNS/HTTP/手动解析怎么选?
SSL证书在网络安全中至关重要,1Panel提供三种验证方式:DNS验证、HTTP验证和手动解析。DNS验证便捷,适合CDN网站;HTTP验证快速,需服务器在线;手动解析灵活,但操作复杂。根据需求选择合适确认方式,定期检查证书状态。
452 2
阿里云服务器国际站dns服务器不可用怎么办?dns可以随便改吗?
阿里云服务器国际站dns服务器不可用怎么办?dns可以随便改吗?
穿戴科技新风尚:智能服装设计与技术全解析
穿戴科技新风尚:智能服装设计与技术全解析
430 85
深入学习 DNS 域名解析
在平时工作中相信大家都离不开 DNS 解析,因为 DNS 解析是互联网访问的第一步,无论是使用笔记本浏览器访问网络还是打开手机APP的时候,访问网络资源的第一步必然要经过DNS解析流程。
DeepSeek 实践应用解析:合力亿捷智能客服迈向 “真智能” 时代
DeepSeek作为人工智能领域的创新翘楚,凭借领先的技术实力,在智能客服领域掀起变革。通过全渠道智能辅助、精准对话管理、多语言交互、智能工单处理、个性化推荐、情绪分析及反馈监控等功能,大幅提升客户服务效率和质量,助力企业实现卓越升级,推动智能化服务发展。
200 1
分片上传技术全解析:原理、优势与应用(含简单实现源码)
分片上传通过将大文件分割成多个小的片段或块,然后并行或顺序地上传这些片段,从而提高上传效率和可靠性,特别适用于大文件的上传场景,尤其是在网络环境不佳时,分片上传能有效提高上传体验。 博客不应该只有代码和解决方案,重点应该在于给出解决方案的同时分享思维模式,只有思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一下,还可以收藏起来以备不时之需,有疑问和错误欢迎在评论区指出~
JS数组操作方法全景图,全网最全构建完整知识网络!js数组操作方法全集(实现筛选转换、随机排序洗牌算法、复杂数据处理统计等情景详解,附大量源码和易错点解析)
这些方法提供了对数组的全面操作,包括搜索、遍历、转换和聚合等。通过分为原地操作方法、非原地操作方法和其他方法便于您理解和记忆,并熟悉他们各自的使用方法与使用范围。详细的案例与进阶使用,方便您理解数组操作的底层原理。链式调用的几个案例,让您玩转数组操作。 只有锻炼思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一下,还可以收藏起来以备不时之需,有疑问和错误欢迎在评论区指出~
深入理解HTTP/2:nghttp2库源码解析及客户端实现示例
通过解析nghttp2库的源码和实现一个简单的HTTP/2客户端示例,本文详细介绍了HTTP/2的关键特性和nghttp2的核心实现。了解这些内容可以帮助开发者更好地理解HTTP/2协议,提高Web应用的性能和用户体验。对于实际开发中的应用,可以根据需要进一步优化和扩展代码,以满足具体需求。
423 29

相关产品

  • 云解析DNS
  • 推荐镜像

    更多
  • DNS
  • AI助理

    你好,我是AI助理

    可以解答问题、推荐解决方案等

    登录插画

    登录以查看您的控制台资源

    管理云资源
    状态一览
    快捷访问