[喵咪开源软件推荐(5)]开源DNS服务-bind

哈喽大家好呀!~~ 今天又为大家带来了一个有趣的东西就是DNS服务器,稍微了解网络的童鞋都知道我们在使用域名访问一个网站的时候是通过公共DNS服务器解析到IP地址的,比如谷歌的8.8.8.8 比如 114.114.114.114 都是大家耳熟能详的DNS IP 地址, 那么我们在开发中DNS有什么用呢?怎么大家一个DNS服务呢?就是我们今天博文的主要内容了,话不多说让我们来对DNS一探究竟吧!

附上:

喵了个咪的博客:w-blog.cn

1.DNS是什么

DNS协议运行在UDP协议之上,使用端口号53.有自己域名或使用过域名解析的童鞋应该常常接触到如下解析方式:

A记录:将域名指向一个IPv4地址(例如:10.10.10.10),需要增加A记录
CNAME记录:如果将域名指向一个域名,实现与被指向域名相同的访问效果,需要增加CNAME记录
MX记录:建立电子邮箱服务,将指向邮件服务器地址,需要设置MX记录
NS记录:域名解析服务器记录,如果要将子域名指定某个域名服务器来解析,需要设置NS记录
SRV记录:记录了哪台计算机提供了哪个服务。格式为:服务的名字.协议的类型(例如:_example-server._tcp)

这种域名的解析方式就是对DNS进行的配置,所有的域名先回经过DNS服务器获取到这个域名需要做什么(比如指向到IP 192.168.0.1 我们称之为寻址) 或者是其他的寻址方式

一般DNS是在我们网络配置中可以配置一个主DNS一个备DNS,一般都有默认的DNS配置,我们也可以使用自己的DNS服务,拥有自己的DNS服务就相当于拥有了所有的域名你可以吧任何域名指导不同的地方,比如对baidu.com指向到你自己的服务器上面,访问baidu.com就是访问你自己的服务器(前提是必须要配置使用你的DNS服务才会有效)

2.DNS可以运用到那些场景?

2.1 环境迁移

为什么要写这篇文章主要也是在工作中有使用到自建DNS服务得到的启发向分享给大家,场景是这样的

运营服务器需要迁移,方案是先准备一个一比一的环境验证没问题了迁移数据改变域名指向,这里面就遇到一个问题了,服务器准备好了域名怎么配置呢?当然不能使用运营的域名第一版思路是在所有的域名前面加一级 RES.xxxx.com 这样,这样虽然能够解决问题但是会在面临两个问题,
1. 如果使用RES域名那么在迁移的时候又要进行大量的配置文件修改 没法保证验证完成后迁移时最小改动

2. 如果使用RES域名 那么端(APP端和WEB端) 都要改配置文件代码 —我们公司光APP就块10多个还要打包ROM

就上面这个问题看来成本很高,并且这个成本付出了价值之存在于对新的环境进行验证而已后续这些配置文件也好打包好的端也好都没有价值,并且还有重复的配置工作量

在这个前提上在想什么样子是最好的呢?首先端不用改,服务器的配置最好一步到位,但是我们又只有一套xxxx.com 域名,那么如果有两套不就好了吗?
如果正常使用是指向到运营的服务,但是在特定网络下比如一个WIFI下就可以指向到新的服务器那不就是两全其美了吗?

这个时候就需要自建DNS来对xxxx.com域名解析到新的服务器环境,然后让访问的时候DNS解析找自建的DNS解析就可以达到端不变还是请求xxxx.com服务器也不变还是监听xxxx.com,然后使用自建DNS解析的网络环境就可以访问到新的环境了

2.2 测试临时解析

很多时候域名都会被统一的管理起来,一般开发人员很难直接使用域名解析服务,一般是交给运维同事,这个时候就出现了一个问题,新的一个程序是新的域名需要做解析,给了运维一个解析的IP发现解析后用不了,然后来回调了很多次花了很多时间(正常的域名解析都要2-10分钟才能生效,频繁的解析可能会到2个小时),如果有自己的DNS就可以每个人都能去进行DNS解析又不影响到外面正在使用的客户,当解析完成后测试好了在交给运维同事会更好

2.3 批量hosts

有的时候我们需要更改一下本机的hosts来对一些域名更换指向,比如科学上谷歌等之类的,如果每个人都需要去搞hosts就太麻烦了,可以使用自建DNS服务来统一更改

3.使用bind搭建自己的DNS服务器

有了上面的结论笔者就开始找开源的DNS服务软件,最终是找到了bind这个相对比较简单的LIUNX DNS服务,我们来看看怎么使用这套服务

DNS服务器IP地址:192.168.1.20
服务器版本:centos6.8 64位

3.1 安装bind搭建解析

  1. 安装bind:
yum -y install bind*
  1. 修改配置文件
cp /etc/named.conf /etc/named.conf.bak
vi /etc/named.conf  

修改为如下:

options {listen-on port 53 { any; }; // 监听在主机的53端口上。any代表监听所有的主机directory       "/var/named"; // 如果此档案底下有规范到正反解的zone file 档名时,该档名预设应该放置在哪个目录底下// 下面三项是服务的相关统计信息dump-file       "/var/named/data/cache_dump.db";statistics-file "/var/named/data/named_stats.txt";memstatistics-file "/var/named/data/named_mem_stats.txt";allow-query     { any; }; // 谁可以对我的DNS服务器提出查询请求。any代表任何人recursion yes;dnssec-enable yes;dnssec-validation yes;dnssec-lookaside auto;forwarders { // 指定上层DNS服务器8.8.8.8;};bindkeys-file "/etc/named.iscdlv.key";managed-keys-directory "/var/named/dynamic";
};
logging {channel default_debug {file "data/named.run";severity dynamic;};
};
zone "." IN {type hint;file "named.ca";
};
include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";
  1. 自定义域名解析
vi /etc/named.rfc1912.zones
zone "baidu.com" IN {    // 定义要解析主域名type master;file "baidu.com.zone";  // 具体相关解析的配置文件保存在 /var/named/baidu.com.zone 文件中
};
  1. 自定义baidu.com.zone文件对百度进行解析
vi /var/named/baidu.com.zone
# 内容如下
$TTL 86400
@       IN SOA          ns.baidu.com. root (1       ; serial1D      ; refresh1H      ; retry1W      ; expire0 )     ; minimum  @       IN      NS      ns.baidu.com.
ns      IN      A       192.168.1.20
www     IN      A       192.168.1.20
bbs     IN      A       192.168.1.20

其中 ns.baidu.com 代表当前dns服务器名称。所以 ns.baidu.com 一定要解析到自己本身

  1. 修改权限
chown root:named  /var/named/baidu.com.zone
  1. 重启服务
service named restart

追加解析后注意也要重启服务,遇到如下异常执行命令yum install mysql安装mysql即可

Starting named: /usr/sbin/named-sdb: error while loading shared libraries: libmysqlclient.so.16: cannot open shared object file: No such file or directory
  1. 防火墙开发端口
vi /etc/sysconfig/iptables
-A INPUT -m state --state NEW -m tcp -p tcp --dport 53 -j ACCEPT
-A INPUT -m state --state NEW -m udp -p udp --dport 53 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 953 -j ACCEPT

修改DNS服务指向测试解析情况

当我们准备好服务之后,这个时候我们服务器还是在使用默认的DNS服务器进行解析这个时候我们需要配置有限使用本地的DNS解析服务来进行解析

# 注意:云主机需要注释掉**options timeout:1 attempts:1 rotate single-request-reopen
vim /etc/resolv.conf
nameserver 192.168.1.20

然后使用ping baidu.com 就指向到了192.168.1.20了

[root@ ~]# ping www.baidu.com
PING www.baidu.com (192.168.1.20) 56(84) bytes of data.
64 bytes from (192.168.1.20): icmp_seq=1 ttl=64 time=0.017 ms
64 bytes from (192.168.1.20): icmp_seq=2 ttl=64 time=0.034 ms
64 bytes from (192.168.1.20): icmp_seq=3 ttl=64 time=0.033 ms

4 总结

使用自建DNS可以对任何的域名进行指向可以解决一些特定场景的特定问题,在这里分享给大家,如果大家喜欢可以继续关注喵咪的博客,后续会带来更多有趣的技术文章…

注:笔者能力有限有说的不对的地方希望大家能够指出,也希望多多交流!

[喵咪开源软件推荐(5)]开源DNS服务-bind相关推荐

  1. [喵咪开源软件推荐(6)]TCP链路加速技术KcpTun

    [喵咪开源软件推荐(6)]TCP链路加速技术KcpTun 今天有给大家带来新的东西KcpTun,KcpTun是利用Kcp技术对Tcp链路传输进行加速,大家熟知的网络协议一般是UDP和TCP,UDP传输 ...

  2. [喵咪开源软件推荐(4)]Liunx跑分神器-unixbench

    [喵咪开源软件推荐(4)]Liunx跑分神器-unixbench 哈喽大家好呀! 这次给大家带来一个Liunx跑分神奇,在笔者在老早之前有听到一则传闻,阿里云相同的配置性能有差异 有的是X5的有的是E ...

  3. [喵咪开源软件推荐(3)]全球IP库-GeoLite2-City

    [喵咪开源软件推荐(3)]全球IP库-GeoLite2-City 哈喽大家好啊!喵咪开源软件推荐(3)终于和大家见面了,这次我们来说说什么呢?大家有没有遇到过这样一个场景,当你出国游玩的时候到了一个国 ...

  4. 开源公司黄页之 Google 开源软件推荐

    在企业使用开源和贡献开源方面,Google一直是行业的典范.一直以来,Google都在极力推广和倡导开源,并发布了一系列开源项目.如果没有开源软件,Google也难以达到今日的成功.开源中国社区目前收 ...

  5. 开源公司黄页之 Twitter 开源软件推荐

    从Twitter的GitHub账户中可以看到,Twitter已经开源的开源项目有近200个,领域涉及分布式架构.大数据.异步网络传输(客户端.服务端).Web.工具等.Twitter可以称为构建于开源 ...

  6. (转) 值得关注的开源软件推荐

    https://blog.csdn.net/zhangbin666/article/details/79172932 https://github.com/todd-xander?before=Y3V ...

  7. 如何实现一个直播平台的相关基础及开源软件推荐

    如何实现一个直播平台的相关基础及开源软件推荐 首先我们要大致知道一个直播系统核心的构成要件主要是三部分: 采集--主播使用 OBS 之类的软件来录制视频,并能够将数据发向服务器 转播--服务器使用 S ...

  8. 开源公司黄页之阿里巴巴开源软件推荐(二)

    yugong--Oracle数据迁移同步工具 yugong 是阿里巴巴推出的去Oracle数据迁移同步工具(全量+增量,目标支持MySQL/DRDS) 08年左右,阿里巴巴开始尝试MySQL的相关研究 ...

  9. linux开源软件推荐,10个Linux平台开源ERP软件推荐

    10个最好的自由Linux平台Enterprise Resource Planning (ERP) 软件.经常关注开源软件的朋友,或经常访问Sourceforge.net.apache.org等网站的 ...

最新文章

  1. CVPR | 让合成图像更真实,上交大提出基于域验证的图像和谐化
  2. Linux中Sleep和Wait命令的使用方式
  3. centos7添加Oracle到指定IP,Oracle Linux 7.1 增加网卡及IP配置
  4. 关于使用wcf架构分布式系统的一点想法
  5. 【AGC+FPGA】基于FPGA的数字AGC自适应增益设计,应用在BPSK调制解调系统中
  6. 深入理解redis数据类型
  7. 行云管家堡垒机 导入腾讯云主机
  8. 对h.264压缩视频码流中i帧的提取(firstime)
  9. HIVE攻略 JFK_Hive安装及使用攻略
  10. [最短路/线段树大法优化DIJ] 【模板】单源最短路径(标准版)
  11. alook浏览器js扩展网站_备用浏览器Alook所能实现的功能果真强大(文末有alook兑换码抽奖)...
  12. C语言实现一维多项式求值
  13. Linux操作系统原理与应用03:进程
  14. 不使用软盘加载驱动安装系统的方法--使用nLite集成驱动
  15. 《SEM长尾搜索营销策略解密》一一2.9 长尾,寻找蓝海的最好方式
  16. python内置数据结构_Python内置数据结构(一)
  17. Bootstrap入门学习(三)——简单项目
  18. 《Pro Ogre 3D Programming》读书笔记 之 第十一章 动态阴影 (转)
  19. MFC编程入门之十(对话框:设置对话框控件的Tab顺序)
  20. Java语言,基于TCP编写一个简单的Client/Server 网络应用程序。

热门文章

  1. 没有RDB也敢揽SQL活的开源金刚钻SPL
  2. 面试题--new关键字
  3. 从零实现一个在线考试系统
  4. java导出Excel并下载到本地
  5. 360-读取手机联系人
  6. 翻译 项目管理艺术 2.3
  7. 微信小程序路由跳转的方式总结
  8. 计算机科学与技术刘家豪,计算机学院“互联网+”大赛经验交流会顺利举行
  9. 深度学习-14:知名的深度学习开源架构和项目
  10. 敏捷简介:什么是敏捷开发?