搭建最基础的DNS服务

简介:

搭建一个简单的DNS

为了更方便和清晰的了解DNS的作用,通过搭建一个简单的DNS服务来学习。

在搭建之前,先简单了解一下DNS的工作原理

  1. 客户端把访问的域名传递给DNS服务器a,如果有记录,则将IP传递给客户端
  2. DNS服务器a没有记录,则以 递归方式 访问其他服务器。首先访问根域
  3. 根域将匹配的一级域名DNS服务器b地址传递给DNS服务器a
  4. DNS服务器a再去访问DNS服务器b,DNS服务器b再将匹配的二级域名DNS服务器c传递给DNS服务器a
  5. DNS服务器a再去访问DNS服务器c,重复以上3,4步骤
  6. DNS服务器a得到客户端要访问域名的ip地址,传递给客户端,并留下记录,方便以后访问。

简单模拟一个DNS工作

1.准备两台终端,客户端,服务器。

这里我以Centos6.9为客户端,Centos7.3位服务器。

2.在服务端安装bind(提供DNS服务的软件)


 
 
  1. [root@centos7 named]# yum -y install bind 
  2. Loaded plugins: fastestmirror, langpacks 
  3. Loading mirror speeds from cached hostfile 
  4.  * base: mirrors.163.com 
  5.  * extras: mirrors.163.com 
  6. * updates: mirrors.btte.net 
  7.  
  8. Resolving Dependencies 
  9. --> Running transaction check 
  10. ---> Package bind.x86_64 32:9.9.4-50.el7_3.1 will be installed 
  11. --> Finished Dependency Resolution 
  12.  
  13. Dependencies Resolved 
  14.  
  15. ================================================================================================== 
  16.  Package          Arch               Version                            Repository           Size 
  17. ================================================================================================== 
  18. Installing: 
  19. bind             x86_64             32:9.9.4-50.el7_3.1                updates             1.8 M 
  20. Transaction Summary 
  21.  
  22. ================================================================================================== 
  23. Install  1 Package 
  24.  
  25. Total download size: 1.8 M 
  26. Installed size: 4.3 M 
  27. Downloading packages: 
  28. bind-9.9.4-50.el7_3.1.x86_64.rpm                                           | 1.8 MB  00:00:01      
  29. Running transaction check 
  30. Running transaction test 
  31. Transaction test succeeded 
  32. Running transaction 
  33.   Installing : 32:bind-9.9.4-50.el7_3.1.x86_64                                                1/1  
  34.   Verifying  : 32:bind-9.9.4-50.el7_3.1.x86_64                                                1/1  
  35.  
  36. Installed: 
  37.  bind.x86_64 32:9.9.4-50.el7_3.1                                                                  
  38.  
  39. Complete!`  

3.关闭linux安全策略和防火墙

1).服务器–Centos7


 
 
  1. sed -i ‘s/SELINUX=enforcing/SELINUX=permissive/g’ /etc/selinux/config 
  2. iptables -F 
  3. systemctl disable firewalld 
  4. systemctl stop firewalld 

2).客户端–Centos6


 
 
  1. sed -i ‘s/SELINUX=enforcing/SELINUX=permissive/g’ /etc/selinux/config  
  2. chkconfig iptables off  
  3. service iptables stop 

检查selinux安全策略是否修改为”允许”

cat /etc/selinux/config

4.启动DNS服务器


 
 
  1. systemctl start named  
  2. systemctl enable named 

启动后确认端口开启(端口号默认为 53)


 
 
  1. ss -nutl 

把服务器53端口绑定在所有服务器ip上


 
 
  1. cd -p /etc/named.conf{,.bak} 

(需要修改陪指文件,建议先备份 )


 
 
  1. vim /etc/named.conf 

修改listen-on port 53 {localhost; }中的localhost

改为any或0.0.0.0或将整行注释


 
 
  1. vim /etc/sysconfig/network-scripts/ifcfg-ens33 

在最后一行加上DNS1=127.0.0.1

重启服务(配置文件生效)


 
 
  1. systemctl restart network 

在客户端(Centos6)配置DNS,指向服务器DNS(Centos7)


 
 
  1. vim /etc/sysconfig/network-scripts/ifcfg-eth0 

最后加上DNS1=172.16.0.24(DNS)


 
 
  1. systemctl restart network 

在服务器(Centos7)配置DNS,允许本地以外的地址访问


 
 
  1. vim /etc/named.conf 

修改allow-query { localhost;any; };

改为any或0.0.0.0或将整行注释

在客户端(Centos6)尝试连接外网


 
 
  1. [root@centos6 ~]# dig www.baidu.com 
  2.  
  3. ; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.62.rc1.el6_9.2 <<>> www.baidu.com 
  4. ;; global options: +cmd 
  5. ;; Got answer: 
  6. ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 59143 
  7. ;; flags: qr rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 5, ADDITIONAL: 5 
  8.  
  9. ;; QUESTION SECTION
  10. ;www.baidu.com. IN A 
  11.  
  12. ;; ANSWER SECTION
  13. www.baidu.com. 347 IN CNAME www.a.shifen.com. 
  14. www.a.shifen.com. 43 IN A 61.135.169.121 
  15. www.a.shifen.com. 43 IN A 61.135.169.125 
  16.  
  17. ;; AUTHORITY SECTION
  18. a.shifen.com. 254 IN NS ns1.a.shifen.com. 
  19. a.shifen.com. 254 IN NS ns3.a.shifen.com. 
  20. a.shifen.com. 254 IN NS ns5.a.shifen.com. 
  21. a.shifen.com. 254 IN NS ns2.a.shifen.com. 
  22. a.shifen.com. 254 IN NS ns4.a.shifen.com. 
  23.  
  24. ;; ADDITIONAL SECTION
  25. ns1.a.shifen.com. 254 IN A 61.135.165.224 
  26. ns2.a.shifen.com. 254 IN A 180.149.133.241 
  27. ns3.a.shifen.com. 254 IN A 61.135.162.215 
  28. ns4.a.shifen.com. 254 IN A 115.239.210.176 
  29. ns5.a.shifen.com. 254 IN A 119.75.222.17 
  30.  
  31. ;; Query time: 1 msec 
  32. ;; SERVER: 172.16.0.1#53(172.16.0.1) 
  33. ;; WHEN: Mon Jul 24 14:16:16 2017 
  34. ;; MSG SIZE rcvd: 260 



本文作者:佚名

来源:51CTO

相关文章
|
前端开发 数据安全/隐私保护 CDN
二次元聚合短视频解析去水印系统源码
二次元聚合短视频解析去水印系统源码
623 4
|
负载均衡 JavaScript 前端开发
分片上传技术全解析:原理、优势与应用(含简单实现源码)
分片上传通过将大文件分割成多个小的片段或块,然后并行或顺序地上传这些片段,从而提高上传效率和可靠性,特别适用于大文件的上传场景,尤其是在网络环境不佳时,分片上传能有效提高上传体验。 博客不应该只有代码和解决方案,重点应该在于给出解决方案的同时分享思维模式,只有思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一下,还可以收藏起来以备不时之需,有疑问和错误欢迎在评论区指出~
|
JavaScript 算法 前端开发
JS数组操作方法全景图,全网最全构建完整知识网络!js数组操作方法全集(实现筛选转换、随机排序洗牌算法、复杂数据处理统计等情景详解,附大量源码和易错点解析)
这些方法提供了对数组的全面操作,包括搜索、遍历、转换和聚合等。通过分为原地操作方法、非原地操作方法和其他方法便于您理解和记忆,并熟悉他们各自的使用方法与使用范围。详细的案例与进阶使用,方便您理解数组操作的底层原理。链式调用的几个案例,让您玩转数组操作。 只有锻炼思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一下,还可以收藏起来以备不时之需,有疑问和错误欢迎在评论区指出~
|
算法 测试技术 C语言
深入理解HTTP/2:nghttp2库源码解析及客户端实现示例
通过解析nghttp2库的源码和实现一个简单的HTTP/2客户端示例,本文详细介绍了HTTP/2的关键特性和nghttp2的核心实现。了解这些内容可以帮助开发者更好地理解HTTP/2协议,提高Web应用的性能和用户体验。对于实际开发中的应用,可以根据需要进一步优化和扩展代码,以满足具体需求。
1560 29
|
存储 前端开发 JavaScript
在线教育网课系统源码开发指南:功能设计与技术实现深度解析
在线教育网课系统是近年来发展迅猛的教育形式的核心载体,具备用户管理、课程管理、教学互动、学习评估等功能。本文从功能和技术两方面解析其源码开发,涵盖前端(HTML5、CSS3、JavaScript等)、后端(Java、Python等)、流媒体及云计算技术,并强调安全性、稳定性和用户体验的重要性。
|
移动开发 前端开发 JavaScript
从入门到精通:H5游戏源码开发技术全解析与未来趋势洞察
H5游戏凭借其跨平台、易传播和开发成本低的优势,近年来发展迅猛。接下来,让我们深入了解 H5 游戏源码开发的技术教程以及未来的发展趋势。
|
机器学习/深度学习 自然语言处理 算法
生成式 AI 大语言模型(LLMs)核心算法及源码解析:预训练篇
生成式 AI 大语言模型(LLMs)核心算法及源码解析:预训练篇
4236 1
|
自然语言处理 数据处理 索引
mindspeed-llm源码解析(一)preprocess_data
mindspeed-llm是昇腾模型套件代码仓,原来叫"modelLink"。这篇文章带大家阅读一下数据处理脚本preprocess_data.py(基于1.0.0分支),数据处理是模型训练的第一步,经常会用到。
573 0
|
存储 设计模式 算法
【23种设计模式·全精解析 | 行为型模式篇】11种行为型模式的结构概述、案例实现、优缺点、扩展对比、使用场景、源码解析
行为型模式用于描述程序在运行时复杂的流程控制,即描述多个类或对象之间怎样相互协作共同完成单个对象都无法单独完成的任务,它涉及算法与对象间职责的分配。行为型模式分为类行为模式和对象行为模式,前者采用继承机制来在类间分派行为,后者采用组合或聚合在对象间分配行为。由于组合关系或聚合关系比继承关系耦合度低,满足“合成复用原则”,所以对象行为模式比类行为模式具有更大的灵活性。 行为型模式分为: • 模板方法模式 • 策略模式 • 命令模式 • 职责链模式 • 状态模式 • 观察者模式 • 中介者模式 • 迭代器模式 • 访问者模式 • 备忘录模式 • 解释器模式
1747 1
【23种设计模式·全精解析 | 行为型模式篇】11种行为型模式的结构概述、案例实现、优缺点、扩展对比、使用场景、源码解析
|
设计模式 存储 安全
【23种设计模式·全精解析 | 创建型模式篇】5种创建型模式的结构概述、实现、优缺点、扩展、使用场景、源码解析
结构型模式描述如何将类或对象按某种布局组成更大的结构。它分为类结构型模式和对象结构型模式,前者采用继承机制来组织接口和类,后者釆用组合或聚合来组合对象。由于组合关系或聚合关系比继承关系耦合度低,满足“合成复用原则”,所以对象结构型模式比类结构型模式具有更大的灵活性。 结构型模式分为以下 7 种: • 代理模式 • 适配器模式 • 装饰者模式 • 桥接模式 • 外观模式 • 组合模式 • 享元模式
949 140
【23种设计模式·全精解析 | 创建型模式篇】5种创建型模式的结构概述、实现、优缺点、扩展、使用场景、源码解析