centos7 DNS服务器搭建

DNS,全称Domain Name System,即域名解析系统

DNS帮助用户在互联网上寻找路径。在互联网上的每一个计算机都拥有一个唯一的地址,称作“IP地址”(即互联网协议地址)。由于IP地址(为一串数字)不方便记忆,DNS允许用户使用一串常见的字母(即“域名”)取代。比如,您只需键入www.baidu.com,而不是“119.75.217.109”。即可访问ICANN的官方网站。DNS命名用于Internet等TCP/IP网络中,通过用户友好的名称查找计算机和服务。当用户在应用程序中输入DNS名称时,DNS服务可以将此名称解析为与之相关的其他信息,如IP地址。因为,你在上网时输入的网址,是通过域名解析系解析找到相对应的IP地址,这样才能上网。其实,域名的最终指向是IP

DNS功能

每个IP地址都可以有一个主机名,主机名由一个或多个字符串组成,字符串之间用小数点隔开。有了主机名,就不要死记硬背每台IP设备的IP地址,只要记住相对直观有意义的主机名就行了。这就是DNS协议所要完成的功能。

主机名到IP地址的映射有两种方式:

1)静态映射,每台设备上都配置主机到IP地址的映射,各设备独立维护自己的映射表,而且只供本设备使用;
2)动态映射,建立一套域名解析系统(DNS),只在专门的DNS服务器上配置主机到IP地址的映射,网络上需要使用主机名通信的设备,首先需要到DNS服务器查询主机所对应的IP地址。 

通过主机名,最终得到该主机名对应的IP地址的过程叫做域名解析(或主机名解析)。在解析域名时,可以首先采用静态域名解析的方法,如果静态域名解析不成功,再采用动态域名解析的方法。可以将一些常用的域名放入静态域名解析表中,这样可以大大提高域名解析效率。

DNS重要性

1、技术角度看
DNS解析是互联网绝大多数应用的实际寻址方式; 域名技术的再发展、以及基于域名技术的多种应用,丰富了互联网应用和协议。
2、资源角度看
域名是互联网上的身份标识,是不可重复的唯一标识资源; 互联网的全球化使得域名成为标识一国主权的国家战略资源。

DNS的工作原理

以访问www.为例说明(主机为Windows系统)

1)客户端首先检查本地c:\windows\system32\drivers\etc\host文件,是否有对应的IP地址,若有,则直接访问WEB站点,若无 2)客户端检查本地缓存信息,若有,则直接访问WEB站点,若无 3)本地DNS检查缓存信息,若有,将IP地址返回给客户端,客户端可直接访问WEB站点,若无 4)本地DNS检查区域文件是否有对应的IP,若有,将IP地址返回给客户端,客户端可直接访问WEB站点,若无, 5)本地DNS根据cache.dns文件中指定的根DNS服务器的IP地址,转向根DNS查询。 6)根DNS收到查询请求后,查看区域文件记录,若无,则将其管辖范围内.com服务器的IP地址告诉本地DNS服务器 7).com服务器收到查询请求后,查看区域文件记录,若无,则将其管辖范围内.xxx服务器的IP地址告诉本地DNS服务器 8).xxx服务器收到查询请求后,分析需要解析的域名,若无,则查询失败,若有,返回www.的IP地址给本地服务器 9)本地DNS服务器将www.的IP地址返回给客户端,客户端通过这个IP地址与WEB站点建立连接

安装DNS服务器软件

[root@CentOS7 ~]# yum install bind

配置相关配置文件

/etc/named.conf ,/etc/named.rfc1912.zones 为DNS主配置文件
/var/named/目录为DNS数据库文件存放目录,每一个域文件都放在这里。
/etc/rc.d/init.d/named 为DNS服务的服务脚本。

一 DNS正向解析

这里以linuxidc.com域为例
www.linuxidc.com 对应IP 为192.168.29.100;
ftp.linuxidc.com 对应IP为1.1.1.1 。

1 首先编辑/etc/named.conf文件

        listen-on port 53 { any; };allow-query     { any; };dnssec-enable no;dnssec-validation no;

2 编辑区域配置文件/etc/named.rfc1912.zones

zone "linuxidc.com" IN {type master;file "linuxidc.com"; };

其中zone的格式为:

    zone “ZONE_NAME  IN {type  master;file “ZONE_NAME.zone”
}

3 新建解析库文件/var/named/linuxidc.com.zone

[root@CentOS7 ~]# vim /var/named/linuxidc.com.zone
$TTL 1D
$ORIGIN linuxidc.com.
@   IN SOA linuxidc.com. admin.linuxidc.com. ( 20170526; serial 1D ; refresh 1H ; retry 1W ; expire 3H ) ; minimum linuxidc.com. IN NS ns1.linuxidc.com. ns1 IN A 192.168.29.100 www IN A 172.16.254.13 ftp IN A 1.1.1.1

4 修改解析库文件权限

[root@CentOS7 ~]# chgrp named /var/named/linuxidc.com.zone 

5检查 配置语法

(1)检查配置文件语法

[root@CentOS7 ~]# named-checkconf

(2)检查域配置文件语法

[root@CentOS7 ~]# named-checkzone linuxidc.com  /var/named/linuxidc.com.zone
zone linuxidc.com/IN: loaded serial 20170526
OK

6 启动named服务

[root@CentOS7 ~]# systemctl start   named

7 测试

注意:要配置DNS服务器为本DNS服务器IP地址
或者使用dig命令则不需要修改DNS服务器

[root@CentOS7 ~]# nslookup  www.linuxidc.com Server: 127.0.0.1 Address: 127.0.0.1#53 Name: www.linuxidc.com Address: 172.16.254.13 [root@CentOS7 ~]# nslookup ftp.linuxidc.com Server: 127.0.0.1 Address: 127.0.0.1#53 Name: ftp.linuxidc.com Address: 1.1.1.1

测试成功,正向解析成功!!

二 DNS反向解析

这里以linuxidc.com域为例
IP地址192.168.29.100/24对应域名为www.linuxidc.com;
192.168.29.200/24对应域名为ftp.linuxidc.com;

1 首先编辑/etc/named.conf文件

        listen-on port 53 { any; };allow-query     { any; };dnssec-enable no;dnssec-validation no;

2 编辑区域配置文件/etc/named.rfc1912.zones

zone "29.168.192.in-addr.arpa" IN {type master;file "name.29.168.192"; };

格式为:

zone "NET_IP.in-addr.arpa" IN { #NET_IP 为反向解析的IP 网段type master;file "NAME_ZONE";       #NAME_ZONE为反向解析库配置文件名称 };

3 新建解析库文件

$TTL 1D
$ORIGIN 29.168.192.in-addr.arpa. @ IN SOA linuxidc.com. admin.linuxidc.com. ( 20170526; serial 1D ; refresh 1H ; retry 1W ; expire 3H ) ; minimum IN NS linuxidc.com. 100 IN PTR www.linuxidc.com. 200 IN PTR ftp.linuxidc.com.

4 修改解析库文件所属组

[root@CentOS7 ~]# chgrp named name.29.168.192

5 语法检查

(1)检查配置文件语法

[root@CentOS7 ~]# named-checkconf

(2)检查域配置文件语法

 [root@CentOS7 ~]# named-checkzone 29.168.192.in-addr.arpa /var/named/name.29.168.192 zone 29.168.192.in-addr.arpa/IN: loaded serial 20170526 OK

6 启动named服务

[root@CentOS7 ~]# systemctl start   named

7 测试

 [root@CentOS7 ~]# dig -x 192.168.29.200 @192.168.29.100 ; <<>> DiG 9.9.4-RedHat-9.9.4-37.el7 <<>> -x 192.168.29.200 @192.168.29.100 [……] 200.29.168.192.in-addr.arpa. 86400 IN PTR ftp.linuxidc.com. [root@CentOS7 ~]# dig -x 192.168.29.100 @192.168.29.100 [……] ;; ANSWER SECTION: 100.29.168.192.in-addr.arpa. 86400 IN PTR www.linuxidc.com. ;; AUTHORITY SECTION: 29.168.192.in-addr.arpa. 86400 IN NS linuxidc.com.

测试成功!!!

三 主从DNS

这里主DNS服务器IP地址为192.168.29.100/24
从DNS服务器IP地址为192.168.29.3/24
www.linuxidc.com 对应IP 为192.168.29.100;
ftp.linuxidc.com 对应IP为1.1.1.1

1首先编辑主服务器/etc/named.conf文件

    listen-on port 53 { any; };allow-query     { any; };recursion yes;dnssec-enable no;dnssec-validation no;

2 编辑主服务器的区域配置文件/etc/named.rfc1912.zones

zone "linuxidc.com" IN {type master;file "linuxidc.com.zone";allow-transfer {192.168.29.3; }; ##192.168.29.3位从服务器的ip地址。 };

3 新建主服务器解析库文件vim /var/named/linuxidc.com.zone

$TTL 1D
$ORIGIN linuxidc.com.
@   IN SOA  linuxidc.com. admin.linuxidc.com. (20170526; serial 1D ; refresh 1H ; retry 1W ; expire 3H ) ; minimum linuxidc.com. IN NS ns1.linuxidc.com. mytest.com. IN NS slave.linuxidc.com. ###添加从服务器的NS解析记录。 ns1 IN A 192.168.29.100 slave IN A 192.168.29.3 ###指定从服务器的IP地址。 www IN A 172.16.254.13 ftp IN A 1.1.1.1

4 编辑从服务器/etc/named.conf文件

    listen-on port 53 { any; };allow-query     { any; };recursion yes;dnssec-enable no;dnssec-validation no;

5 配置从服务器的区域配置文件/etc/named.rfc1912.zones

zone "linuxidc.com" IN {type slave; ##表明本机是从服务器file "slaves/linuxidc.com";   ##将同步后的文件放置在哪里,这里是相对路径,实际路径为/var/named/slaves/linuxidc.com masters {192.168.29.100; }; ##指定主服务器的ip地址 };

6 语法检查

在主从两个服务器上都进行语法检查

[root@CentOS7 ~]# named-checkconf

7 在主从两个服务器上开启服务

[root@CentOS7 ~]# systemctl start named

8 测试

(1)查看从服务器已经取得解析数据库文件

[root@centos7 ~]# ll  /var/named/slaves/
total 4
-rw-r--r--. 1 named named 348 May 26 15:22 linuxidc.com

(2)用从服务器解析www.linuxidc.com

[root@centos7 ~]# dig -t A www.linuxidc.com @192.168.29.3 [……] ;; ANSWER SECTION: www.linuxidc.com. 86400 IN A 172.16.254.13 ;; AUTHORITY SECTION: linuxidc.com. 86400 IN NS slave.linuxidc.com. mytest.com. 86400 IN NS ns1.linuxidc.com. ;; ADDITIONAL SECTION: ns1.linuxidc.com. 86400 IN A 192.168.29.100 slave.linuxidc.com. 86400 IN A 192.168.29.3 ;; Query time: 2 msec ;; SERVER: 192.168.29.3#53(192.168.29.3) ;; WHEN: Fri May 26 15:37:13 CST 2017 ;; MSG SIZE rcvd: 129

可以看到解析成功。说明从服务器已生效。

四 子域授权

这里子域服务器为192.168.29.110

1 在linuxidc.com.域的服务器上修改区域数据库文件

[root@CentOS7 ~]# cat /var/named/linuxidc.com.zone 
$TTL 1D
$ORIGIN linuxidc.com.
@   IN SOA linuxidc.com. admin.linuxidc.com. ( 20170526; serial 1D ; refresh 1H ; retry 1W ; expire 3H ) ; minimum linuxidc.com. IN NS ns1.linuxidc.com. mytest.com. IN NS slave.linuxidc.com. haha.linuxidc.com. IN NS ns2.haha.linuxidc.com. ###新添加的行 ns1 IN A 192.168.29.100 slave IN A 192.168.29.3 www IN A 172.16.254.13 ftp IN A 1.1.1.1 ns2.haha.linuxidc.com. IN A 192.168.29.110 ###新添加行,指明子域服务器IP地址。

2 修改子域服务器的主配置文件/etc/named.conf

[root@CentOS7 ~]# vim  /etc/named.conflisten-on port 53 { any; };allow-query     { any; };recursion yes;dnssec-enable no; dnssec-validation no;

3 编辑子域服务器的区域配置文件/etc/named.rfc1912.zones

[root@CentOS7 ~]# vim  /etc/named.rfc1912.zones
zone "haha.linuxidc.com" IN {type master;file "haha.zone"; allow-transfer {192.168.29.0/24; }; };

4 新建主服务器解析库文件/var/named/haha.zone

域名www.haha.linuxidc.com 对应IP 172.16.11.11
域名ftp. haha.linuxidc.com 对应IP 2.2.2.2

[root@CentOS7 ~]# vim /var/named/haha.zone
$TTL 1D
$ORIGIN haha.linuxidc.com.
@       IN SOA haha.linuxidc.com. admin.haha.linuxidc.com. ( 20170528; serial 1D ; refresh 1H ; retry 1W ; expire 3H ) ; minimum haha.linuxidc.com. IN NS ns2.haha.linuxidc.com. ns2 IN A 192.168.29.110 www IN A 172.16.11.11 ftp IN A 2.2.2.2

5 语法检查

在两个服务器上都进行语法检查

[root@CentOS7 ~]# named-checkconf

6 在两个服务器上开启服务

[root@CentOS7 ~]# systemctl start named

7测试

[root@centos7 ~]# dig -t A  www.haha.linuxidc.com @192.168.29.100 ; <<>> DiG 9.9.4-RedHat-9.9.4-37.el7 <<>> -t A www.haha.linuxidc.com @192.168.29.100 […….] ;www.haha.linuxidc.com. IN A ;; ANSWER SECTION: www.haha.linuxidc.com. 86400 IN A 172.16.11.11 ;; AUTHORITY SECTION: haha.linuxidc.com. 86400 IN NS ns2.haha.linuxidc.com. ;; ADDITIONAL SECTION: ns2.haha.linuxidc.com. 86400 IN A 192.168.29.110

可以看到,已经可以成功解析

转载于:https://www.cnblogs.com/key-l731/p/9557520.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/397050.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

lisp中怎样调取图形_CAD的lisp程序已加载,怎样绘图?

回答&#xff1a;1.计算所有线段总长度(加载后只需框选所有线段便可得出这些线段的总长度)(defun c:LL ()(setvar "cmdecho" 1)(setq en (ssget(list (0 . "spline,arc,line,ellipse,LWPOLYLINE"))))(setq i 0)(setq ll 0)(repeat (sslength en)(setq ss (…

Java Web的web.xml文件作用及基本配置(转)

其实web.xml就是asp.net的web.config一个道理。 说明&#xff1a; 一个web中完全可以没有web.xml文件&#xff0c;也就是说&#xff0c;web.xml文件并不是web工程必须的。 web.xml文件是用来配置&#xff1a;欢迎页、servlet、filter等的。当你的web工程没用到这些时&#xff0…

stand up meeting 12/21/2015

part组员 工作 工作耗时/h明日计划工作耗时/h UI冯晓云 完成PDF UI主页面的页面切换功能&#xff0c;待完善 4 完善页面切换&#xff0c;修补弹窗bug 4foxit PDF Reader朱玉影 修改了对pdf中文本进行搜索的代码&#xff0c;使其更加robust 4 pdf…

python快速检测视频跳过帧_使用Python实现跳帧截取视频帧

本文实例为大家分享了Python跳帧截取视频帧的具体代码&#xff0c;供大家参考&#xff0c;具体内容如下 可以自由设定时长来截取视频&#xff0c;经实测效果理想。期间遇到的一个麻烦是我的视频文件在D:盘&#xff0c;在原视频D盘目录上不能保存截取的图片文件&#xff0c;后改…

BZOJ3999: [TJOI2015]旅游

BZOJ3999: [TJOI2015]旅游 Description 为了提高智商&#xff0c;ZJY准备去往一个新世界去旅游。这个世界的城市布局像一棵树。每两座城市之间只有一条路径可以互达。每座城市都有一种宝石&#xff0c;有一定的价格。ZJY为了赚取最高利益&#xff0c;她会选择从A城市买入再转手…

一张图看懂单机/集群/热备/磁盘阵列(RAID)

单机部署(Standalone) 只有一个饮水机提供服务器&#xff0c;服务只部署一份 集群部署(Cluster) 多个饮水机同时提供服务&#xff0c;服务冗余部署&#xff0c;每个冗余的服务都对外提供服务&#xff0c;一个服务挂掉时依然可用 热备部署(Hot-swap) 只有一个桶提供服务&#xf…

typescript vuex_Vue3+TypeScript完整项目上手教程

作者&#xff1a;TinssonTaihttps://juejin.im/post/6875713523968802829一个完整的Vue3Ts项目,支持.vue和.tsx写法 项目地址&#xff1a;https://github.com/vincentzyc/vue3-demo.gitTypeScript 是JS的一个超集&#xff0c;主要提供了类型系统和对ES6的支持&#xff0c;使用 …

JS中window.showModalDialog()详解

window.showModalDialog()方法用来创建一个显示HTML内容的模态对话框。 window.showModelessDialog()方法用来创建一个显示HTML内容的非模态对话框。 使用方法&#xff1a; vReturnValue window.showModalDialog(sURL [, vArguments] [,sFeatures]) vReturnValue window.show…

一个简单的javascript节流器实现

节流器 javascript的节流器主要用于延缓某些动作的执行&#xff0c;比如ajax请求&#xff0c;如果input框注册了input事件&#xff0c;那么当用户输入时就会持续的触发这个事件&#xff0c;如果回调函数中持续的通过ajax调用后台的接口&#xff0c;就会对服务器产生一定压力。这…

一些会用到的知识

为什么80%的码农都做不了架构师&#xff1f;>>> HtmlAgilityPack 用来解析HTML代码 microsoft.mshtml CsQuery 解析HTML代码 转载于:https://my.oschina.net/uwith/blog/813725

eclipse怎么升级到java ee,如何为Java EE开发人员升级Eclipse?

Is there any non-painful way to upgrade an Eclipse installation? I have tried browsing the eclipse site but I cannot find an useful description.解决方案Add the update URL to your available sites:Window > Preferences > Install/Update > Available S…

LeetCode 7 Reverse Integer(反转数字)

题目来源&#xff1a;https://leetcode.com/problems/reverse-integer/ Reverse digits of an integer. Example1: x 123, return 321Example2: x -123, return -321 解题思路&#xff1a; 其实这道题看起来非常简单&#xff0c;要实现也是几行代码的事。但是有个小问题容易被…

各种蕴含算法思想的DP - 3

内容中包含 base64string 图片造成字符过多&#xff0c;拒绝显示转载于:https://www.cnblogs.com/cmyg/p/9566723.html

python图像对比_用python实现对比两张图片的不同

from PIL import Image from PIL import ImageChops def compare_images(path_one, path_two, diff_save_location): """ 比较图片&#xff0c;如果有不同则生成展示不同的图片 参数一: path_one: 第一张图片的路径 参数二: path_two: 第二张图片的路径 参数三:…

Kafka 分布式环境搭建

这篇文章将介绍如何搭建kafka环境&#xff0c;我们会从单机版开始&#xff0c;然后逐渐往分布式扩展。单机版的搭建官网上就有&#xff0c;比较容易实现&#xff0c;这里我就简单介绍下即可&#xff0c;而分布式的搭建官网却没有描述&#xff0c;我们最终的目的还是用分布式来解…

Docker Machine搭建并加入节点

对于集群服务器来讲&#xff0c;要在每台机器上手动安装Docker是一件及其痛苦的事情&#xff0c;还好有Docker Machine这一工具&#xff0c;Docker三剑客中的一角. 一、Docker Machine介绍 这个工具已经出了比较久了&#xff0c;Docker Machine官方介绍&#xff1a;https://doc…

ASPNET5的依赖注入

ASP.NET5设计的时候就是以DI为基础的&#xff0c;它可以利用内建的框架在Startup类的方法中&#xff0c;把依赖注入进去。应用服务也可以被配置的注入。默认的服务容器提供一些基本的功能&#xff0c;它并不打算代替现代主流的DI框架。 1. 什么是Dependency Injection? DI的概…

java 权限控制 demo_Java-访问控制权限

Java面向对象-访问控制权限Java中&#xff0c;可以通过一些Java关键字&#xff0c;来设置访问控制权限&#xff1b;主要有 private(私有)&#xff0c; package(包访问权限)&#xff0c;protected(子类访问权限)&#xff0c;public(公共访问权限)privatepackageprotectedpublic同…

《未来世界的幸存者》笔记

https://ruanyf.github.io/survivor/ 这两天一直在上下班途中&#xff0c;读阮一峰的这本书 《未来世界的幸存者》。还是有不少感慨的。做一下记录。 未来人类社会的形态&#xff0c;将发生颠覆性的变化。旧的社会结构已经在崩溃了&#xff0c;但社会底层的机会变得更少了&…

python类中没有属性_如何在python语言中在类中删除属性和添加属性

在python语言中的类&#xff0c;可以使用class定义类&#xff0c;调用__init__方法进行初始化&#xff1b;默认传入self&#xff0c;可以在后面在添加几个属性。可以使用setattr()添加属性&#xff0c;也可以使用delattr()删除属性。下面利用几个实例说明这两个方法的用法&…