linux虚拟机玩转DNS

经历过博客被关闭的风波,思绪不是那么清晰了,昨天研究了一下DNS服务,发现还挺好玩的。

声明:本文借鉴了下面两位博主的博客:

http://redking.blog.51cto.com/27212/146708

http://evolution.blog.51cto.com/3343305/643520

一、DNS的基本工作原理:

DNS是域名解析服务:domain name service

正向解析:从域名到IP的解析

反向解析:从IP到域名的解析

一次域名解析过程:

主机发出解析www.mm.com 的请求---->查找主机hosts文件的缓存记录---->查找管理本域的DNS服务器---->查找根服务器---->遍历查找----->找到www.mm.com的ip地址---->根DNS服务器把结果反馈给发出请求的下级DNS服务器---->DNS服务器将结果缓存并返回给主机---->主机把结果缓存并开始链接

世界上的十三个根DNS服务器:

一个位于荷兰负责欧洲的域名解析

一个位于日本负责亚太地区域名解析

其余的都位于美国,负责全球其他地方的域名解析

DNS服务器的多层级域名分类

DNS记录的类型:

A:Address 域名向ip地址转换的记录;

PTR:Printer ip地址向域名转换的记录;

NS:代表域内的dns服务器;

MX:代表域内的邮件服务器;

CNAME:域名的别名;

SOA:start of authority用于标示域内主DNS服务器。



配置文件:etc/hosts #当前主机上缓存下来的一些域名对应ip的记录

etc/named.conf #主配置文件,定义了所有文件存放的位置

var/named #工作目录

etc/resolv.conf #DNS服务器的缓存记录

etc/nsswitch.conf #定义了先读取hosts缓存,还是先读取resolv缓存

DNS类型:type

master主DNS

slave从DNS

forward转发DNS用于子域转发



二、搭建主DNS服务器步骤

1. 首先将主机名称修改为符合FQDN格式的名字

(1)hostname NAME

(2)echo "NAME" > /proc/sysconfig/hostname

(3)修改/etc/sysconfig/network文件

(4)修改/etc/hosts文件

2.安装named服务的rpm包bind,或者编译安装bind

3.配置主DNS的主配置文件etc/named.conf;

使用ss -tunl | grep "53" 查看53端口是不是在tcp和udp上监听

使用named-checkconf 检查主配置文件有没有语法错误

4.在/etc/named.rfc1912.zones中定义正向解析区域和反向解析区域;

5.在/var/named/目录下创建正向解析区域文件,反向解析区域文件;

使用named-checkzone "区域" /var/named/*zone检查区域文件有没有语法错误

6.启动named服务 service named start



三、主DNS配置文件:

1.主配置文件的定义

listen-on port 53 { 172.16.13.100; };主DNS服务器IP地址53端口

directory  "/var/named";             定义zone的工作目录

recursion yes;                       定义允许递归查询

allow-query { any; };                定义白名单(谁可以通过此DNS解析)

logging       file "data/named.run";        日志文件

zone "." IN {

type hint;                              定义根DNS,必须定义

file "named.ca";

};

include "/etc/named.rfc1912.zones";       将所有的zone集中在此文件配置

2./etc/named.rfc1912.zones的定义

在此文件里我们只需定义两个解析区域即可

(1)正向解析区域 wuhf.com

(2)方向解析区域 13.16.172.in-addr.apra  (此为方向解析区域的固定格式)

3.创建并编辑正向解析区域文件/var/named/wuhf.com.zone

这里我们要注意文件的格式 $TTL 1200 宏定义1200秒更新一次

$ORIGIN 定义wuhf.com.字段,下面可以省略以此结尾的名字

2015042404是版本号,日过此号增加一位,就会通知从服务器过来更新版本

30M 定义从服务器30分钟过来同步一次数据

10M 定义如果从服务器同步失败后,多久过来再次尝试连接主服务器

1W  定义从服务器如果1周内都没有接连到主服务器的话就宣布自己的数据作废

3H  定义如果解析失败的话,这个失败的结果放在缓存中,3小时候缓存失效

4.创建并编辑反向解析记录区域文件/var/named/172.16.zone

5.检查这些文件有没有语法错误

6.开启named的服务  service named start

重读配置文件  rndc reload

7.使用dig工具测试正方向解析成不成功

正向解析

反向解析



三、搭建从DNS服务器,实现主从同步

1.在主服务器的解析区域里添加从服务器的名字和A记录(ip)

2.在新的虚拟机里装bind工具

3.新虚拟机,ip地址为172.16.13.101,在此主机上编辑配置文件/etc/named.conf

4.编辑区域文件/etc/named.rfc1912.zones

5.使用named-checkconf检查配置文件语法错误

6.使用service named start,开启named服务

7.使用rndc reload从主服务器上更新正反向解析文件到本地/var/named/slaves/



四 、搭建子DNS服务器,实现子域查询

1.在主服务器的解析区域里添加子服务器的名字和A记录(ip)

2.在新的虚拟机里装bind工具

yum install bind

3.新虚拟机,ip地址为172.16.12.20,在此主机上编辑配置文件/etc/named.conf

4.编辑区域文件/etc/named.rfc1912.zones

5.创建/var/named/目录下的正反向解析文件

6.使用named-checkconf检查配置文件语法错误

使用named-checkzone命令 检查正反向解析文件有没有语法错误

7.使用service named start,开启named服务

8.使用dig命令尝试子域解析父域,父域解析子域

说明:子DNS服务器搭建与父DNS服务器搭建是一样的步骤,只不过要在/etc/named.conf下的option选项定义全局转发,或者在/etc/named.rfc1912.zones中添加一个转发区域实现区域转发,这样就可以实现在子域中解析父域的地址不用去寻找根了。

完全转发:只要DNS server无法解析的请求就统统转发到option中定义的forwarders上

option { forward first|only;

forwarders { 父域地址;}; };

部分转发:只转发已经在声明type forward; 所对应域的解析请求,对于其他域的解析请求按常规方法处理

zone "wuhf.com" IN {

type forward;

forward first|only;

forwarders { 父域地址; };  };

first:先请求递归,若没有予以响应,使用迭代去找根

only:如果想forwarders转发的请求没有的得到相应,就放弃解析并返回错误结果。



五、视图VIEW

将内网与外网分隔开,实现内网用户访问域名www.bai.com 将引导至内网的主机地址,外网用户要访      问 www.bai.com  将被引导至不一样的外网地址

实现内网用户与外网用户访问同样的域名,被视图解析到不同的地址上。

在国内,像某宝的网站,每个省得用户访问的域名就是被解析到用户所在省份的服务器上,可能还会细分到联通、电信网段的用户,根据省份网段不同,被分配到不一样的服务器上。如:河南省联通用户输入某宝的域名后,会被解析到河南省联通机房的某宝服务器上。

实现步骤:

1.创建具有视图功能的主配置文件

在/etc/named.conf中定义内外网的区域,使用 val 访问控制定义

定义内网段       acl internal {

192.168.0.0/24;

127.0.0.1/8;

};

定义外网段       acl external {

172.16.0.0/16;

};

定义工作目录     options {

directory "/var/named";

recursion yes;

};

在/etc/named.rfc1912zones中创建view视图

定义内网view      view "inter" {

match-clients { internal; };

recursion yes;

zone "." IN {

type hint;

file "named.ca";

};

zone "wuhf.com" IN {

type master;

file "wuhf.inter.zone";

};

};

定义外网view

view "exter" {

match-clients { external; };

recursion yes;

zone "." IN {

type hint;

file "named.ca";

};

zone "wuhf.com" IN {

type master;

file "wuhf.exter.zone";

};

};

2.在每个视图中定义相同的区域,在相同的区域中创建不同的区域文件,区域文件中相同的域名,解析     成不同的地址

vim /var/named/wuhf.inter.zone

$TTL 1200

$ORIGIN wuhf.com.

@           IN   SOA     ns1.wuhf.com.   admin.wuhf.com. (

2015042701

30M

10M

7D

1H   )

IN   NS        ns1

ns1        IN   A         192.168.0.103

www        IN   A         192.168.0.123

vim /var/named/wuhf.exter.zone

$TTL 1200

$ORIGIN wuhf.com.

@           IN   SOA     ns1.wuhf.com.   admin.wuhf.com. (

2015042701

30M

10M

7D

1H   )

IN   NS        ns1

ns1        IN   A         172.16.12.12

www        IN   A         172.16.12.123

3.测试,在一台属于内网的主机和一台属于外网的主机上使用dig测试能不能正向解析

还有另一个测试办法,一台虚拟机配置两块网卡,一个设置为192.168.0.0/24网段地址,一个设置为172.16.0.0/16网段地址

先在虚拟机上添加一块网卡,然后再/etc/sysconfig/network-scripts/目录下,cp ifcfg-eth0 ifcfg-eth1,修改eth1里面的配置文件,设定eth0地址为172.16.12.20,设定eth1地址为192.168.13.13

(1)使用ip link set eth1 down,关闭eth1,使用dig www.wuhf.com @172.16.12.12测试,结果被视图解析到外网网段172.16.0.0

(2)使用ip link set eth0 down,关闭eth1,使用ip link set eth1 up,开启eth1;使用dig www.wuhf.com @172.16.12.12测试,结果被视图解析到内网网段192.168.0.0
    注意:这里测试内网的dig命令却指向172.16.12.12,没有使用 dig www.wuhf.com @192.168.0.103,是因为我们的测试服务器没有陪双网卡,只有一个外网的地址,所以......将就一下吧。



六、DNS配置所需其他知识

关于DNS的安全访问控制指令:

将它们写在配置文件的options中实现访问控制:

allow-query {}: 允许查询的主机;白名单;

allow-transfer {}:允许区域传送的主机;白名单;

allow-recursion {}: 允许递归的主机;

allow-update {}: 允许更新区域数据库中的内容;

关于测试命令dig、nslookup、host:

(1)dig命令

dig [-t type] name [@SERVER] [query options]

dig用于测试dns系统,因此,不会查询hosts文件进行解析;

查询选项:

+[no]trace:跟踪解析过程

+[no]recurse:进行递归解析

测试反向解析:

dig -x IP @SERVER

模拟区域传送:

dig -t axfr ZONE_NAME @SERVER

例如:dig -t axfr magedu.com @172.16.100.11

(2)host命令:

host [-t type] name [SERVER]

(3)nslookup命令:

nslookup [-option] [name | -] [server]

交互式模式:

nslookup>

server IP: 指明使用哪个DNS server进行查询;

set q=RR_TYPE: 指明查询的资源记录类型;

NAME: 要查询的名称;

关于数据同步命令rndc

rndc:

rndc --> rndc (953/tcp)

rndc COMMAND

COMMAND:

reload: 重载主配置文件和区域解析库文件

reload zone: 重载区域解析库文件

retransfer zone: 手动启动区域传送过程,而不管序列号是否增加;

notify zone: 重新对区域传送发通知;

reconfig: 重载主配置文件

querylog: 开启或关闭查询日志;

trace: 递增debug级别;

trace LEVEL: 指定使用的级别;

时间: 2024-10-11 03:43:05

linux虚拟机玩转DNS的相关文章

Windows和linux虚拟机之间联网实现SSH远程连接以及VMware的3种网络模式[NAT、桥接和Host-only]

Windows和linux虚拟机之间联网实现SSH远程连接以及VMware的3种网络模式[NAT.桥接和Host-only] 作者:天齐 一.Windows和linux虚拟机之间联网实现SSH远程连接 假如我们要给主机名为mini1的虚拟机配置ip地址,需要以下几个步骤: 在linux上查看ip地址,如果linux服务器有ip地址,让它的ip地址和windows的ip地址在同一个网段,它们之间才能联网.在linux上查看ip地址的命令为"ifconfig": 发现eth0网卡没有配置i

新手关于Linux虚拟机的配置

新手关于Linux虚拟机的配置 对于学习linux的新手来说,虚拟机的配置以及与主机之间的网络连接是非常重要的.在课堂上,也许这些配置老师都已经做好了,自己安心使用即可.但是回到家,如果不配置好的话,就无法自己练习.因为自己也是新手,深有体会,所以把自己配置虚机的方法总结出来,希望对大家有所帮助. 我自己使用的主机是redhat7.0的,因为学习的需要安装的虚拟机是redhat6.5的. 虚拟机使用的镜像:rhel-server-6.5-x86_64-dvd.iso 镜像一定要保证完整性,不然会

Linux Red hat 5 DNS服务器搭建(一)域名缓存服务器

Linux Red hat 5 DNS服务器多实验详细搭建 所需软件包: ? bind-9.3.3-7.el5.i386.rpm ? 提供主要程序及相关文件 ? bind-utils-9.3.3-7.el5.i386.rpm ? 提供对dns服务器的测试工具(如nslookup.dig等) ? bind-chroot-9.3.3-7.el5.i386.rpm ? 提供一个伪装的根目录以增强其安全性(var/named/chroot/) ? caching-nameserver-9.3.3-7.e

VMWare中Linux虚拟机设置静态IP上网的设置方法

VMWare中Linux虚拟机设置静态IP上网的设置方法 标签: vmwareLinux虚拟机securecrt静态IP上网 2016-05-18 02:30 702人阅读 评论(0) 收藏 举报  分类: Linux 版权声明:本文为博主原创文章,未经博主允许不得转载. 目录(?)[+] 现在大部分人的家庭网络环境都是通过无线路由器为家里的电脑和手机提供网络. 在使用VMware安装Linux之后,默认使用的是DHCP连接网络. 但是如果使用类似 SecureCRT以SSH方式连接到虚拟机上的

使用WMware新建linux虚拟机

使用WMware安装linux虚拟机的时候很多人搞不清楚使用什么适配器. 平时也看到很多误人子弟的观点,这里用事实说话. VMWare提供了三种工作模式,它们是bridged(桥接模式).NAT(网络地址转换模式)和host-only(主机模式).要想在网络管理和维护中合理应用它们,你就应该先了解一下这三种工作模式. 1.bridged(桥接模式) 在这种模式下,VMWare虚拟出来的操作系统就像是局域网中的一台独立的主机,它可以访问网内任何一台机器.在桥接模式下,你需要手工为虚拟 系统配置IP

Linux内网环境DNS修改域名指向,JAVA应用程序能否实时切换的问题总结

公司内网环境中许多调用资源(数据库.web接口等)都是通过内网DNS服务来进行域名-IP的映射. 但经常出现DNS映射修改完毕后,应用中连接的资源迟迟没有变更. 以前一直笼统的认为是linux的dns缓存导致,今天做了一次完整的分析,结果如下: 1.Linux系统的本地DNS的缓存 CentOS系统本身并不包含DNS的缓存机制,除非安装并启动了nscd服务(name server cache daemon). nscd服务启动后会默认为本地的所有dns解析做一层缓存,过期时间默认为3600秒,重

Linux系统上的DNS中正反向解析与主从服务器配置详解

我想对于DNS的一些功能,大家应该并不陌生吧.下面是我为大家演示的是在Linux系统上安装DNS域名解析服务,从DNS的正向解析到DNS的反向解析以及最后的主从服务器.也是这个实验的重点.在显示生活中呢,DNS反向解析一般很少用,不要求会但可以了解一下.这样如果被别人问起来,至少你是会的.懂得. 实验环境:两台Linux6.0版本操作系统的虚拟机(注意这里使用的6.0版本的Linux系统) 实验目的:实现DNS的正向解析.反向解析及主从服务器配置 正向解析 首先都是进行光盘挂载,两台Linux都

linux 虚拟机 yum

当在linux虚拟机中用yum安装软件包是 报这样的错误,可以试试将本地的虚拟网卡的dns配置成手动的 Downloading Packages:http://centos.mirror.cdnetworks. ... 3-9.1.el6.i686.rpm: [Errno 14] PYCURL ERROR 6 - "Couldn't resolve host 'centos.mirror.cdnetworks.com'"Trying other mirror.

virtualbox linux虚拟机相关

linux虚拟机设置为静态IP 在virtualbox中安装好linux虚拟机后,如果采用的是NAT方式的话,linux虚拟机默认采用dhcp方式自动上网,而且用的是NetworkManager服务而不是network.此时查看当前通信网卡的mac地址.ip地址.以及默认路由.网关,并将这些信息记录下来. 首先通过systemctl stop NetworkManager; systemctl disable NetworkManager;来停止和禁用NetworkManager服务,然后在卸载