Linux网络实战 (一) —— DNS配置
Linux 本机DNS配置
??无论在局域网还是Internet 上,每台主机都有一个IP 地址,是为了区分此台主机和彼台主机,也就是说IP 地址就是主机的门牌号。但IP 地址不方便记忆,所以又有了域名(Domain )。域名只是在公网(internet )中存在,每个域名都对应一个IP 地址,但一个IP 地址可以对应多个域名。
??在一个局域网中,每台机器都有一个主机名(hostname ),为了便于主机与主机之间的区分,就可以为每台机器设置主机名,以容易记忆的方法来相互访问。
??主机名(hostname )和域名(Domain )的区别:主机名的含义是机器本身的名字,域名是方便记录IP地址才做的一种IP映射;二者有共性:都能对应到一个唯一的IP 上,从应用场景上可以这么简单理解二者的区别:主机名用于局域网中;域名用于公网中。 ??
Linux主机名配置文件
??大多数Linux 系统的主机名的配置文件是/etc/hosts ,hosts - The static table lookup for Linux hostname (主机名查询静态表);由于 Linux 发行版本众多,与主机名相关的配置文件有时也有所不同。
??/etc/hosts 配置文件是用来把主机名字映射到IP 地址的方法,这种方法比较简单。但这种映射只是本地机器的映射,也就是说每台机器都是独立的,所有的计算机都不能相互通过Linux hostname 来访问。
/etc/hosts 文件里存放的内容:
??可以看到/etc/hosts 文件中的每行分为两部分内容,第一部分表示IP 地址,第二部分表示该IP 地址对应的主机名,可以看到第一行的内容是127.0.0.1 localhost ,现在明白了为什么输入localhost 也可以访问本机,正是因为在/etc/hosts 文件中配置了该项,所以在使用localhost 访问本地也就相当于使用127.0.0.1 访问,知道IP 地址以127 开头的都是表示本机。
??通过以上配置文件的内容还知道,也可以使用ubuntu 去访问本地,也就是说localhost 和ubuntu 都是该主机的名称。 ??
添加一个新的主机名映射
案例演示:通过修改/etc/hosts 文件,新添加一条映射记录,新的主机名为test ,其对应的IP 地址为127.0.0.1 ,具体使用如下步骤:
追加一行 127.0.0.1 test (sudo vim /etc/hosts)ping -c 5 test
添加一行新记录:
验证:
??可以看到此刻也可以通过test 来访问127.0.0.1 了。其中ping -c 5 test 命令表示向test 主机发生5 个 ICMP 数据包。 ??
删除一个主机名映射
??案例演示:通过修改/etc/hosts 文件,删除一条映射记录,例如将上个实例中新添加的记录删除掉或者注释起来,具体使用如下步骤:
删除127.0.0.1 test 行(sudo vim /etc/hosts)ping -c 5 test
注释一行记录:
验证:
??可以看到是无法访问test 主机的,一共发生了5 个数据包,这5 个数据包都丢失,也就是说对方主机是不可访问的。
实例
配置本地主机名与IP 地址的映射
-
新添加一条映射记录127.0.1.1 --> newLocalhost ; -
新添加一条映射记录127.1.1.1 --> www.baidu.com ; 1. vim /etc/hosts
2. 127.0.1.1 newLocalhost
3. 127.1.1.1 www.baidu.com
4. Ctrl + c
5. :w
6. :exit
安装DNS服务软件
?? BIND (Berkeley Internet Name Domain )是Domain Name System (DNS ) 协议的一个实现,提供了DNS 主要功能的开放实现,包括:
-
域名服务器 (named ); -
DNS 解析库函数; -
DNS 服务器运行调试所用的工具。
??BIND 是一款开放源码的DNS 服务器软件,由美国加州大学Berkeley 分校开发和维护的,按照ISC 的调查报告,BIND 是世界上使用最多最广泛的域名服务系统。
??Linux 系统安装软件和Windows 系统上安装软件不太一样,在Windows 上只需要下载需要安装的软件二进制文件(常见的格式是.exe ),然后双击即可进行安装。而Linux 系统上安装软件的常见方式有如下几种:
-
源码编译安装 源码安装步骤是下载源码到本机,然后对源码进行编译,生成可执行文件,然后将生成的可执行文件拷贝到对应的安装目录即可,常见的软件源码包格式为.tar.gz 、.tar.bz2 等; -
软件包安装 软件包安装步骤是下载好已经编译好的可执行文件包,然后使用对应的包管理工具进行安装,不同的Linux 系统使用不同的包管理工具,常见包管理工具如下所示:
-
在线安装 在线安装是指不需要用户亲自下对应软件的包,但是需要对应系统能够访问互联网,不同的Linux 系统使用不同的工具进行在线安装软件,常见的在线安装软件的工具如下所示:
??建议使用在线安装软件,离线安装软件常见的问题是软件间的依赖问题,如果离线安装软件,则必须要手动安装依赖的库,而在线安装则只需要一条命令完成所有的操作,在线安装会自动去安装依赖库; ??
源码安装BIND
??bind 软件依赖 openssl-1.0.0e.tar.gz 软件包,所以在安装bind 软件前,需要先安装openssl 软件。
安装openssl 依赖包步骤如下所示:
1. 解压源码包:tar zxvf openssl-1.0.0e.tar.gz
2. 进入源码文件夹:cd openssl-1.0.0e/
3. 配置(生成Makefile):./config --prefix=/usr/local/
4. 依赖分析:make depend
5. 编译源码:make
6. 安装源码:sudo make install
[配置成功执行结果(./config --prefix=/usr/local/ )]
[make depend 成功执行结果]
[sudo make install 成功执行结果]
下载bind 源码包,此处使用的是 bind-9.9.2.tar.gz 。
具体安装步骤如下所示:
1. 解压源码包:tar zxvf bind-9.9.2.tar.gz
2. 进入源码文件夹:cd bind-9.9.2/
3. 配置(生成Makefile):./configure --sysconfdir=/etc/bind
4. 编译源码:make
5. 安装源码:sudo make install
[配置成功执行结果(./configure --sysconfdir=/etc/bind )]
[sudo make install 成功执行结果]
??
在线安装BIND
本实验环境使用的系统是Ubuntu ,所以使用apt-get 工具来在线安装软件,具体步骤如下所示:
更新软件源:sudo apt-get update
安装httpd:sudo apt-get install bind9
如果安装成功则会出现如下界面:
注意:如果当前用户是root ,则执行以上安装命令时不需要加sudo 。
DNS服务器启动/关闭
??当安装成功bind 软件后,ubuntu12.04 系统下默认bind 服务是开启的,但是本平台的测试环境默认是关闭的。
??本实验环境使用的系统是Ubuntu ,当使用apt-get 在线安装软件后,通常会在/etc/init.d/ 目录下生成一个启动该服务软件的脚本,例如,使用apt-get 安装bind 软件后,可以看到在/etc/init.d/ 目录下生成一个名为bind9 的脚本文件,该脚本可以用来控制bind 服务的启动与关闭等信息。
[bind 服务脚本文件]
??
Linux service 命令
Linux 系统中使用service 命令来控制系统服务,它可以启动、停止、重新启动和关闭系统服务,还可以显示所有系统服务的当前状态。
service 命令的使用格式:
service 服务名 控制命令
- 服务名:自动要控制的服务名,即
/etc/init.d 目录下的脚本文件名; - 控制命令:系统服务脚本支持的控制命令。
常见的控制命令:
1. start:
2. 启动该服务;
3. stop:关闭该服务;
4. restart:重新启动该服务;
5. status:查看该服务状态;
注意并不是所有的服务都支持以上4 种控制命令,不同的服务提供不同的控制命令,大多数服务都支持以上4 种常用的控制命令。 ??
bind服务管理
当成功安装bind 后,接下来,使用service 命令来管理bind 服务。
将在以下案例演示中分别介绍如何启动、关闭、重新启动bind 服务,以及查看bind 服务状态。
实例1 :
查看bind 服务状态,可以使用如下命令:
sudo service bind9 status
可以看到当前bind 服务处于running 状态,也就是运行状态。
实例2 :
关闭bind 服务并且查看是否关闭成功,可以使用如下命令:
sudo service bind9 stopsudo service bind9 status
可以看到首先将bind 服务的进程ID (9841 )关掉,然后查看bind 的状态可以看到找不到对应的bind 服务对应的进程,也就是说bind 没有运行。
实例3 :
重新启动bind 服务并且查看是否重新启动成功,可以使用如下命令:
sudo service bind9 restartsudo service bind9 status
可以看到当前bind 服务被重新启动,其实重新启动就是先执行stop 然后执行start ,上图可以看到在stop 的时候显示failed ,原因是当前的bind 服务是没有启动的。
注意:如果当前用户是root ,则执行以上命令时不需要加sudo 。
DNS服务器配置
??域名:Internet 上某一台计算机或计算机组的名称,是IP 地址的映射。域名解析实际上就是把域名映射回IP 地址。
??域名解析的过程:当一个浏览者在浏览器地址框中打入某一个域名,或者从其他网站点击了链接来到了这个域名,浏览器向这个用户的上网接入商发出域名请求,接入商的DNS 服务器要查询域名数据库,看这个域名的DNS 服务器是什么。然后到DNS 服务器中抓取DNS 记录,也就是获取这个域名指向哪一个IP 地址。在获得这个IP 信息后,接入商的服务器就去这个IP 地址所对应的服务器上抓取网页内容,然后传输给发出请求的浏览器。
??Linux 中/etc/resolv.conf 文件是DNS 客户机配置文件,用于设置DNS 服务器的IP 地址及DNS 域名,还包含了主机的域名搜索顺序。
??
正解与反解的Zone意义
??DNS 系统最主要的功能就是互查主机名与IP ,由于计算机在网络上只认识IP 地址,所以,一般来说,称由主机名查找IP 的过程为正解,由IP 查询得到主机名为反解。
??Zone (区域):一个正解或反解的设置就是一个zone ,通常一个配置文件就是一个zone 。
??
Bind配置文件介绍
bind9 配置文件被保存在/etc/bind/ 目录下
[bind9 配置文件]
常见配置文件说明:
1. named.conf:Bind主配置文件;
2. named.conf.options:全局选项;
3. named.conf.default-zones:配置zone文件;
4. db.root:根服务器指向文件;
5. db.local:localhost正向区文件,用于将名字localhost转换为本地回送IP地址 (127.0.0.1);
6. db.127:localhost反向区文件,用于将本地回送IP地址(127.0.0.1)转换为名字localhost。
实例1 :
假设有域名: test.ubuntu.com ,如何配置其对应的IP 为: 10.70.110.40 ,具体使用如下步骤:
- 向文件
/etc/bind/named.conf.default-zones 添加如下内容;
zone "test.ubuntu.com"{
type master;
file "/etc/bind/db.test.ubuntu.com";
};
zone "110.70.10.in-addr.arpa"{
type master;
file "/etc/bind/db.10";
};
[修改/etc/bind/named.conf.default-zones 文件]
- 新建文件
/etc/bind/db.test.ubuntu.com 并添加如下内容(可以拷贝db.local,在其基础上进行修改);
;
; BIND data file for local loopback interface
;
$TTL 604800
@IN SOA test.ubuntu.com. root.test.ubuntu.com. (
2 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TTL
;
@ IN NS test.ubuntu.com.
@ IN A 10.70.110.40
[新建/etc/bind/db.test.ubuntu.com 文件]
- 新建文件
/etc/bind/db.10 并添加如下内容(可以拷贝db.127,在其基础上进行修改);
;
; BIND reverse data file for local loopback interface
;
$TTL 604800
@ IN SOA test.ubuntu.com. root.test.ubuntu.com. (
1 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TTL
;
@ IN NS test.ubuntu.com.
40 IN PTR test.ubuntu.com.
[新建/etc/bind/db.10 文件]
- 修改
DNS 服务器搜索顺序,将本地作为DNS 搜索的第一搜索目录(sudo vim /etc/resolv.conf );
[修改/etc/resolv.conf 配置文件]
- 重新启动
bind 服务器,然后使用host 命令去查询test.ubuntu.com 域名与IP 10.70.110.40 是否关联起来。
sudo service bind9 restart
host test.ubuntu.com
host 10.70.110.40
?
[查询结果] :
**注意:**如果没有host 命令则需要进行单独安装host 命令(sudo apt-get install host )
可以看到test.ubuntu.com 域名与10.70.110.40 IP地址已经绑定在一起了。
完了
|