漫漫运维路——网络服务之DNS

一.DNS和BIND是什么?

DNS即Domain Name Service的缩写,即为域名服务。在网络出现以后,计算机的通信就是通过IP地址加端口号等形式来进行,人对于数字的记忆往往却有限,随着连入网络的用户的不断增多,用户需要记住的IP地址越来越多,早期为了方便使用,把每一个IP地址对应为一个主机名,如:www.domainname.com对应1.1.1.1形式,并把此种对应关系统一记录于/etc/hosts(GNU/Linux下,windows则有所差异)文件中。但是后来连入网络的用户越来越多,管理hosts文件显得十分繁琐,随后伯克利便研发出了专门实现将域名自动转换为IP地址的服务,名为BIND,所以BIND是DNS的一种实现,但是由于现在DNS服务基本都是基于BIND或者使用BIND进行二次开发的软件来实现,所以BIND几乎成了DNS的代名词。

二.域以及BIND的工作方式

由于联网的用户越来越多,为了方便管理和实现,把域名又划分为多个层级,以’.’隔开,类似乎www.abcd.com这样的域名,且从左往右依次层级更高,即com>abcd>www,按照这样的等级,最右边的域一般为顶级域。然后负责管理其下一级的域名,在此约定把com称作bdcd域的父域,bdcd称为com的子域,com是一个顶级域,现在各种常见顶级域如下所示:


名称


含义


com


公司、企业、营利机构


org


组织、非营利机构


edu


教育机构


cn


国家或地区类(中国)


gov


政府单位


net


网络、通信类


mil


军事单位

BIND的工作方式:

BIND在进行域名解析时,会根据用户主机上设置的DNS服务器地址,首先找该地址,当设置的那台DNS服务器上没有用户所需要的相关记录时,如果该服务器设置可对当前主机进行递归查询,那么该服务器就会去找根服务器,在此所谓的根服务器就是放置在世界各地的十三台特殊域名服务器,他们负责管理所有的域名相关事务。然后根服务器会根据用户查询的内容反馈信息,比如要解析的是一个com域,那么根服务器就会告诉当前服务器去找负责com域的相关DNS服务器,然后当前DNS就会根据根反馈的com域的信息区找com,而如果com服务器上所负责的子域下有当前DNS要找的相关记录,则也会反馈下一级域名服务器的信息,以此类推,知道找到真正负责解析用户所给域名的服务器为止。

三.搭建自己的DNS服务器

由于要想搭建一个能在网络中用的DNS服务器需要向上级注册并得到上级的许可才行,所以在此仅搭建一个能在局域网环境中用的DNS服务器。

1.实现解析自己的域名

实验部署如下


域名


IP地址


www.linuxedu.com


192.168.2.101


dns.linuxedu.com


192.168.2.102


mail.linuxedu.com


192.168.2.103


ftp.linuxedu.com


192.168.2.101

如上所示,在当前局域网内使用域名linuxedu.com,域名内有三台主机,www、dns、mail,其中www主机有个别名,名为ftp。

步骤:

I 安装BIND编辑其主配置文件,bind所需要的安装包为bind-libs (bind库文件)bind-utils(bind其他组件)和bind.x86_64 (bind主程序包),一般来说lib和util已经默认安装,所以直接安装bind主程序即可。

[[email protected] named]# yum remove bind -y
Loaded plugins: fastestmirror, refresh-packagekit, security
Setting up Remove Process
Resolving Dependencies
--> Running transaction check
---> Package bind.x86_64 32:9.8.2-0.30.rc1.el6 will be erased
--> Finished Dependency Resolution
 
Dependencies Resolved
 
Installed:
  bind.x86_64 32:9.8.2-0.30.rc1.el6                                                                                              
......#中间信息已省略
Complete!

II 配置bind的主配置文件/etc/named.conf如下

options {
        directory "/var/named/";
};
zone "." IN {
        type hint;
        file "named.ca";
};
zone "localhost" IN {
        type master;
        file "localhost.zone";
};
zone "1.0.0.127.in-addr.arpa" IN {
        type master;
        file "1.0.0.127.in-addr.arpa.zone";
};
zone "linuxedu.com" IN {
        type master;
        file "linuxedu.com.zone";
};
zone "2.168.192.in-addr.arpa" IN {
        type master;
        file "2.168.192.in-addr.arpa.zone";
};

III 为DNS服务器提供区域文件

在主配置文件中已经把BIND的工作目录定位到了/vae/named下,现在切换目录到/var/named/为DNS提供区域文件

首先生成根域文件

[[email protected] named]# dig -t NS . >named.ca

新建本地回环地址正向区域文件(localhost.zone)如下

$TTL 600
@       IN      SOA     loacalhost.     localhost. (
                        2015042501
                        2M
                        3M
                        1D
                        1D
 
                        );
        IN      NS      localhost.
localhost.      A       127.0.0.1
~                                       

为本地回环地址提供反向解析区域(1.0.0.127.in-addr.arpa.zone)文件如下

$TTL    600
@       IN      SOA     0.0.127.in-addr.arpa.   0.0.127.in-addr.arpa. (
                        2015042501
                        1M
                        5M
                        1D
                        1D
                        );
        IN      NS      localhost.
1       IN      PTR     localhost.

提供linuxedu.com域的正向解析区域文件(linuxedu.com.zone),文件内容如下

$TTL    600
$ORIGIN linuxedu.com.
@       IN      SOA     ns.linuxedu.com.        mail.linuxedu.com. (
                        2015042501
                        1M
                        5M
                        1D
                        1D
                        );
        IN      NS      ns.linuxedu.com.
        IN      MX 10   mail.linuxedu.com.
ns      IN      A       192.168.2.102
www     IN      A       192.168.2.101
ftp     IN      CNAME   www.linuxedu.com.
mail    IN      A       192.168.2.103

为linuxedu.com域提供反向解析区域文件(2.168.192.in-addr.arpa.zone)。其内容如下

$TTL    600
$ORIGIN 2.168.192.in-addr.arpa.
@       IN      SOA     ns.linuxedu.com.        mail.linuxedu.com. (
                        2015042501
                        1M
                        5M
                        1D
                        1D
                        );
        IN      NS      ns.linuxedu.com.
        IN      MX 10   mail.linuxedu.com.
2       IN      PTR     ns.linuxedu.com.
1       IN      PTR     www.linuxedu.com.
ftp     IN      CNAME   www.linuxedu.com.
3

修改主配置文件和区域文件的属组为named组并修改其权限为640

 [[email protected] named]# chown :named /etc/named.conf /var/named/*;chmod 640 /etc/named.conf /var/named/*

检查主配置文件和区域文件是否有语法错误

[[email protected] named]# named-checkconf 
[[email protected] named]# named-checkzone "linuxedu.com" /var/named/linuxedu.com.zone 
zone linuxedu.com/IN: loaded serial 2015042501
OK
[[email protected] named]# named-checkzone "2.168.192.in-addr.arpa" /var/named/2.168.192.in-addr.arpa.zone 
zone 2.168.192.in-addr.arpa/IN: loaded serial 2015042501
OK

重启服务器并测试

[[email protected] named]# dig -t A www.linuxedu.com @127.0.0.1
 
; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.30.rc1.el6 <<>> -t A www.linuxedu.com @127.0.0.1
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 10358
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 1
 
;; QUESTION SECTION:
;www.linuxedu.com.INA
 
;; ANSWER SECTION:
www.linuxedu.com.600INA192.168.2.101
 
;; AUTHORITY SECTION:
linuxedu.com.600INNSns.linuxedu.com.
 
;; ADDITIONAL SECTION:
ns.linuxedu.com.600INA192.168.2.102
 
;; Query time: 1 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Sun Apr 26 05:54:02 2015
;; MSG SIZE  rcvd: 83

测试反向解析

[[email protected] named]# dig -x 192.168.2.101 @127.0.0.1 
; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.30.rc1.el6 <<>> -x 192.168.2.101 @127.0.0.1
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 36267
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 1
 
;; QUESTION SECTION:
;101.2.168.192.in-addr.arpa.INPTR
 
;; ANSWER SECTION:
101.2.168.192.in-addr.arpa. 600INPTRwww.linuxedu.com.
 
;; AUTHORITY SECTION:
2.168.192.in-addr.arpa.600INNSns.linuxedu.com.
 
;; ADDITIONAL SECTION:
ns.linuxedu.com.600INA192.168.2.102
 
;; Query time: 0 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Sun Apr 26 05:58:50 2015
;; MSG SIZE  rcvd: 107

到此本实验成功

2.使用DNS实现主从同步

在现实生产环境中,一台DNS往往是不够的,因为要考虑其宕机的情景,所以至少得有一台为备用,在此在局域网环境内实现两台DNS服务器,并实现主从同步。

以实验1的域名为例,并且新增一台DNS,其ip地址为192.168.1.121,设置其为从服务器。

按照上实验步骤安装好bind程序后,修改其主配置文件(/etc/named.conf),改其内容如下所示

options {
        directory "/var/named";
};
zone "." IN {
        type hint;
        file "named.ca";
        };
zone "linuxedu.com" IN {
        type slave;
        masters { 192.168.2.120; };
        file "slaves/linuxedu.com.zone";
 
};
zone "2.168.192.in-addr.arpa" IN {
        type slave;
        masters { 192.168.2.120; };
        file "slaves/2.168.192.in-addr.arpa.zone";
};

由于其为从服务器,其区域文件从主服务器上传输过来,所以不需要为其提供区域配置文件。接下来修改主服务器配置

Zone内部添加如下一条

allow-transfer { 192.168.2.121; };#:此意味允许从服务器进行区域传输注,根zone不能进行区域传输

重启服务器并测试

[[email protected] slaves]# ll
total 0
[[email protected] slaves]# service named restart
Stopping named: .                                          [  OK  ]
Starting named:                                            [  OK  ]
[[email protected] slaves]# ll
total 8
-rw-r--r--. 1 named named 463 Apr 26 06:23 2.168.192.in-addr.arpa.zone
-rw-r--r--. 1 named named 412 Apr 26 06:23 linuxedu.com.zone

由上可以看到,两个区域文件已经传送过来了。

解析测试

正向解析

ns.linuxedu.com.600INA192.168.2.102
 
;; Query time: 1 msec
;; SERVER: 192.168.2.121#53(192.168.2.121)
;; WHEN: Sun Apr 26 06:24:33 2015
;; MSG SIZE  rcvd: 83

反向解析

[[email protected] slaves]# dig -x 192.168.2.103 @192.168.2.121
 
; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.30.rc1.el6 <<>> -x 192.168.2.103 @192.168.2.121
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 12803
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 1
 
;; QUESTION SECTION:
;103.2.168.192.in-addr.arpa.INPTR
 
;; ANSWER SECTION:
103.2.168.192.in-addr.arpa. 600INPTRmail.linuxedu.com.
 
;; AUTHORITY SECTION:
2.168.192.in-addr.arpa.600INNSns.linuxedu.com.
 
;; ADDITIONAL SECTION:
ns.linuxedu.com.600INA192.168.2.102
 
;; Query time: 2 msec
;; SERVER: 192.168.2.121#53(192.168.2.121)
;; WHEN: Sun Apr 26 06:24:52 2015
;; MSG SIZE  rcvd: 108

3.正向区域授权

域名是有等级的,因为域名是按一层层实现查找,所以下级域名要想起作用就得上级域名服务器对其授权。

在此以上个实验做slave的服务器来做子域,其域名为net.linuxedu.com,然后使用上个实验的master做父域,对其授权。子域IP地址规划如下:


主机


IP地址


www


172.16.35.1


mail


172.16.35.3


ns


172.16.35.2


ftp


172.16.35.1

首先编辑父域dns的linuxedu.com域,添加如下新条目,

net     IN      NS      ns.net.linuxedu.com.

ns.net  IN      A       192.168.2.121

在父域dns的主配置文件的全局配置段options内添加两天选项

dnssec-enable no;

dnssec-validation yes;

然后编辑子域服务,首先编辑其主配置文件

options {

directory "/var/named";

};

zone "." IN {

type hint;

file "named.ca";

};

zone "net.linuxedu.com" IN {

type master;

file "net.linuxedu.com.zone";

};

编辑子域区域文件内容(net.linuxedu.com.zone ),内容如下

$ORIGIN .

$TTL 600        ; 10 minutes

net.linuxedu.com                IN SOA  ns.linuxedu.com. mail.linuxedu.com. (

2015042501 ; serial

60         ; refresh (1 minute)

300        ; retry (5 minutes)

86400      ; expire (1 day)

86400      ; minimum (1 day)

)

NS      ns.linuxedu.com.

MX      10 mail.linuxedu.com.

$ORIGIN net.linuxedu.com.

ftp                     CNAME   www

mail                    A       172.16.35.3

ns                      A       172.16.35.2

www                     A       172.16.35.1

~检查语法错误确定无误后重启服务解析测试

解析测试

4.使用ACL及view实现针对客户端的智能DNS解析

在生产环境中,有时需要把来自不同客户端的解析请求解析为不同的IP地址,此时就可以使用ACL加view实现对来自客户端的请求加以控制。

首先来说ACL,ACL即Access Countrol List的缩写,在bind中可以将不同的网络地址归到一个ACL列表里,然后直接对该表实现设置访问控制权限即可,BIND中的访问控制列表默认有四个分别为:

any;:任何人

none;:任何人都不能

localhost;:本机

localnets;:本机所在网络

例1:定义个访问控制列表,控制只响应来自192.168.2.121的主机对linuxedu.com域的解析请求

修改配置文件,在主机192.168.2.120中添加访问控制列表,内容如下

acl bxy {
        192.168.2.121;
};

然后在zone内添加如下图所示内容

重启服务器测试

例2:使用视图实现将来自不同主机的同一个解析请求解析为不同的地址

以上述搭建好的环境为例,以192.168.2.120做服务器,然后让来自192.168.2.120解析linuxedu.com解析为192.168.2网段,让来自192.168.2.107的主机解析linuxedu.com解析为192.168.1网段。

修改服务器主配置文件,主配置文件内容如下

options {
        directory "/var/named/";
};
acl liebiao1 {
        192.168.2.121;#
};
acl liebiao2 {
        192.168.2.107;
};
view jiexi1 {   #视图1 用来定义acl liebiao1中主机解析的请求去向
match-clients { liebiao1; };
zone "." IN {
        type hint;
        file "named.ca";
};
zone "localhost" IN {
        type master;
        file "localhost.zone";
};
zone "1.0.0.127.in-addr.arpa" IN {
        type master;
        file "1.0.0.127.in-addr.arpa.zone";
};
zone "linuxedu.com" IN {
        type master;
        file "linuxedu.com.zone";
};
zone "2.168.192.in-addr.arpa" IN {
        type master;
        file "2.168.192.in-addr.arpa.zone";
 
};
};

view jiexi2 { #视图2 用来控acl liebiao2中的主机的解析去向

match-clients { liebiao2; };
zone "." IN {
        type hint;
        file "named.ca";
};
zone "localhost" IN {
        type master;
        file "localhost.zone";
};
zone "1.0.0.127.in-addr.arpa" IN {
        type master;
        file "1.0.0.127.in-addr.arpa.zone";
};
zone "linuxedu.com" IN {
        type master;
        file "linuxedu.com.zone.1";
};
zone "1.168.192.in-addr.arpa" IN {
        type master;
        file "1.168.192.in-addr.arpa.zone";
 
};
};

测试:

使用192.168.2.107解析

使用192.168.2.121解析

总算写完了,虽然还要编译啥的没写 不过来不及了,明天还得上课。。

时间: 2024-10-24 10:00:27

漫漫运维路——网络服务之DNS的相关文章

漫漫运维路——文件服务系列之VSFTP

在Linux中,用于实现文件传输和共享的服务比较多,VSFTP就是其中被使用较多的一个文件服务,而说到VSFTP就不得不说一个话题,那就是FTP. FTP即File Transfer Procotol的首字母缩写,是一个用于控制Internet上文件传输的协议,FTP协议一般采用明文进行数据传输,虽然较之安全性不如HTTPS,设置HTTP,但是其建立连接的过程比较简单,所以其传输速率就更快. FTP在完成数据传输之前就需要建立连接,而传输数据的时候又要建立专门的数据传输连接,由此可把FTP连接分

漫漫运维路——基于CentOS6平台软件包管理2

上文(http://7703592.blog.51cto.com/7693592/1631539)已经介绍过使用rpm对CentOS6上的软件包进行管理,之所以强调是在CentOS6之上,是因为在新出的CentOS7上部分操作还可以更简化,而对于Linux运维工程师来说,掌握CentOS6上的使用方式,在CentOS7上就不成问题了,而接下来要谈的是另外一个软件包管理工具,或者说是rpm的前端工具--yum. 为什么要用yum 来聊一个话题,那就是Linux的特性之一:组合小程序完成复杂任务,在

漫漫运维路——基于CentOS6平台软件包管理1

对于Linux运维人员来说,软件包管理无疑是一份非常重要的日常工作,只有轻车熟路的管理好软件包,日常运维工作才能得以进行.在基于CentOS6或者红帽6的平台上,熟练运用RPM和yum来进行服务器软件包管理,有着重要的意义.  利用rpm包管理器管理软件  什么是rpm? rpm是红帽自主研发的一款软件包管理器,早起的rpm被称为Red hat package Manager,而后成为了Linux界软件包管理器的标准,所以现在的rpm是由RPM Package Manager的递归缩写,现在不止

漫漫运维路——进程基本概念及管理相关工具介绍

进程的概念     进程是系统进行资源分配的基本单位,当一个应用程序启动时就向内核发起请求,然后由进程创建出新的进程,此时应用程序就启动了.创建进程的进程此时被称作父进程,而被创建出来的进程被称为子进程,此外子进程不可脱离父进程而存在,当一个父进程被销毁时,其子进程也会一并被销毁. 在Linux中,进程被内核所管理,内核为每一个进程虚拟处一块内存空间,所以当进程被调度到内存中执行时,只能看到自己和内核,从而避免进程之间发生冲突,影响其他进程的运行.但是进程独立并不代表其不能互相通信,当进程之间需

漫漫运维路——各种加密方式介绍及基于OpenSSL实现HTTPS

一.为什么要加密 在网络中通信有时通信双方会发送一些比较敏感的信息,如果直接明文在网上传输,就可能被居心叵测的人截获,从而达到其非法的目的.为保证通信双方信息传输不被第三方所知晓,使用加密技术把双方传输的数据进行加密,即使数据被第三方所截获,那么第三方也不会知晓其数据的真实含义.在此,通信双方所交换的信息中,未被加密的数据称为明文,而加密后的数据称为密文,加密采用的方式称作加密密钥. 二.常见加密方式以及其用途 对称加密 对称加密是指在加密通信过程中,把明文加密为密文的密钥和把密文解密为明文的密

漫漫运维路——使用NFS构建出共享存储的LAMP平台,实现Wordpress论坛的数据同步

假设现在需要构建一个Wordpress论坛站点,为了减轻站点压力,使用两台主机用于Apache服务器,对外提供WEB服务.且此两台主机都有独立IP地址.要求用MariaDB和NFS实现两个站点之间的数据同步. 拓扑如下 如上图所示.SERVER1有两块网卡,一块负责和外网通信,一块通过S1和内网中的SERVER2和SERVER3交互.以下是各主机的地址规划 主机 地址 用途 SERVER1 Eth0:192.168.252.10 配置两台虚拟主机,都安装上Wordpress Eth1:192.1

漫漫运维路——集群基础知识

集群的基本概念 随着计算机科学的发展,对计算机的性能要求越来越高,比如在很多流量比较大的门户网站以及科学实验环境中需要海量计算的环境,这时候就迫切需要后端的服务器性能有提升.而对于提升后端服务器性能所采用的方式有两种,其一为提升服务器本身的性能,即向上扩展,通过增加服务器的内存,CPU核心数等来实现:其二就是向外扩展,一台服务器不能完成的任务就使用两台.三台甚至更多.在此,以不同的方式把许多服务器组合起来的服务器组就是集群. 集群的分类 按照集群功能的不同,可以把集群分为以下三类: LB集群 L

漫漫运维路——基于rpm包安装实现LAMP

LAMP早期即为Linux+Apache+MySQL+PHP,以基于Linux平台的三个软件搭建出动态网页站点,而现在的LAMP不仅仅代表以上几个软件,因为现在的开源软件种类较多,网站的构建人员的选择也较多,所以现在的M可以为MySQL,也可以为maria DB或者是其他的数据库管理系统.而P则也不仅可代表PHP,在实际应用中还可能是Python.Perl.JSP等语言. 本文将基于rpm包安装的形式实现Linux+Apache+MySQL+PHP的LAMP平台,并且实现以下功能: 1.创建两个

漫漫运维路——基于fpm的LAMP平台的构建

构建LAMP平台,可以把PHP编译为apache的一个模块或者直接把PHP编译为一个单独的服务,然后独立运行,当apache需要和PHP通信时,apache就变为了一个客户端,向PHP发起请求,然后由PHP把apache发去的代码解释后发回apache,最后由apache返回给客户端. 要编译实现fpm模式的LAMP平台,可以使用两台或者三台虚拟机,分别在虚拟机上编译出apache和PHP和MariaDB,在此我使用两台虚拟机.一台独立运行MariaDB,另一台运行apache和PHP.规划如下