Linux下DNS服务器搭建详解
Linux下DNS服务器搭建详解
DNS 即Domain Name System(域名系统)的缩写,它是一种将ip地址转换成对应的主机名或将主机名转换成与之相对应ip地址的一种机制。其中通过域名解析出ip地址的叫做正向解析,通过ip地址解析出域名的叫做反向解析。
下面对DNS的工作流程及原理进行简要说明
DNS的查询流程:需要解析服务的Client先查看本机的/etc/hosts;若无结果,则client查看本地的DNS缓存服务器;若无结果,则查找所属域的首选DNS服务器;若此时本地首选DNS服务器仍无法解析,则会想根域名服务器进行查询或选择转发解析请求。
DNS 的查询规则:递归式查询,即client向支持递归查询的DNS Server发出解析请求,则自DNS服务器不论是自身直接解析还是无法解析想根发出请求,总会由其向client返回一个结果;迭代式查询,即接收 client解析请求的DNS Server,若其能够解析则直接返回结果,若其不能解析将把解析请求交给其他DNS服务器,而不是自己亲自将解析过程完成。
所谓的“根”服务器:根 服务器主要用来管理互联网的主目录,全世界只有13台。1个为主根服务器,放置在美国。其余12个均为辅根服务器,其中9个放置在美国,欧洲2个,位于英 国和瑞典,亚洲1个,位于日本。所有根服务器均由美国政府授权的互联网域名与号码分配机构ICANN统一管理,负责全球互联网域名根服务器、域名体系和 IP地址等的管理。
DNS记录的类型:
A:Address 域名向ip地址转换的记录;
PTR:Printer ip地址向域名转换的记录;
NS:代表域内的dns服务器;
MX:代表域内的邮件服务器;
CNAME:域名的别名;
SOA:start of authority用于标示域内主DNS服务器。
提供DNS服务的软件:BIND即Berkeley Internet Name Domain有加州大学伯克利分校研发是当今提供dns服务应用最广的软件。
下面让我们进入正题,以下内容包括:DNS的缓存服务器、主/从服务器、子域授权、转发以及视图的配置步骤。
DNS缓存服务器
Ps:为了更好的体会和理解dns的配置文件和域解析文件,作者在此只安装bind包,以手动编辑的方式生成这几个必须的文件。
1.安装bind包
- yum install bind
2.创建住配置文件/etc/named.conf
- options {
- directory "/var/named"; #告知工作目录
- };
- zone “.” IN {
- type hint; #声明根域
- file "named.ca"; #根信息存放文件
- };
- zone "localhost" IN { #本地正解定义
- type master; #类型为master
- file "localhost.zone"; #正解文件名
- };
- zone "0.0.127.in-addr.arpa" IN { #本地反解定义
- type master;
- file "named.local"; #反解文件名
- };
- chown :named /etc/named.conf
- #修改属组给named
3.创建3个解析文件
named.ca
- dig -t NS . > /var/named/named.ca
- #向跟服务器发起查询并重定向到目标文件
localhost.zone
- vim localhost. zone
- $TTL 86400
- #默认的ttl值
- @ IN SOA localhost. admin.localhost. (
- #主DNS服务器localhost.
- 2011081601
- #时间+序列号01
- 1H
- #刷新时间:每隔多久来master查询更新
- 10M
- #重试时间间隔
- 7D
- #过期时间,如果7天仍找不到master,slave停止服务
- 1D
- #否定答案ttl值,表示查询不到再次查询需要时间
- )
- @ IN NS localhost.
- #当前域的DNS服务器是localhost.
- localhost. IN A 127.0.0.1
named.local
- vim named.local
- $TTL 86400
- @ IN SOA localhost. admin.localhost. (
- 2011081601
- 1H
- 10M
- 7D
- 1D
- )
- @ IN NS localhost.
- 1 IN PTR localhost
4.检测配置文件语法
- named-checkconf
- named-checkzone “localhost” /var/named/localhost.zone
- named-checkzone “0.0.127.in-addr.arpa” /var/named/named.local
5.开启服务并测试
- service named start
- dig -t A 域名 #测试正解
- dig -x ip地址 #测试反解
主DNS服务器配置
1.修改主配置文件
- vim /etc/name.conf
- zone "a.org" IN {
- type master;
- file "a.org.zone";
- };
- zone "0.168.192.in-addr.arpa" IN {
- type master;
- file "192.168.zone";
- };
2.生成解析文件
/var/named/a.org.zone
- $TTL 1200
- @ IN SOA ns1.a.org. admin.a.org. (
- 2011081601
- 1H
- 10M
- 7D
- )
- IN NS ns1.a.org. #NS包括主从两台服务器
- IN NS ns2.a.org.
- IN MX 10 mail.a.org.
- ns1.a.org. IN A 192.168.0.72 #两台服务器的ip的ip地址,否则主服务器无法向从服务器同步数据
- ns2.a.org. IN A 192.168.0.71
- www.a.org. IN A 192.168.0.73
- bbs.a.org. IN CNAME www.a.org.
- ftp.a.org. IN A 192.168.0.74
/var/named/192.168.zone
- $TTL 1200
- @ IN SOA ns1.a.org. admin.a.org. (
- 2011081601
- 1H
- 10M
- 7D
- 1D
- )
- @ IN NS ns1.a.org.
- IN NS ns2.a.org.
- 72 IN PTR ns1.a.org.
- 71 IN PTR ns2.a.org.
- 73 IN PTR www.a.org.
- 74 IN PTR ftp.a.org.
从DNS服务器配置
1.安装bind包
- yum install bind
2.复制named.conf、localhost.zone和named.local到本地对应目录
- scp 192.168.0.72:/etc/named.conf /etc/named.conf
- scp 192.168.0.72:/var/bind/localhost.zone /var/bind/localhost.zone
- scp 192.168.0.72:/var/bind/named.local /var/bind/named.local
3.修改主配置文件/etc/named.conf
- options {
- directory "/var/named";
- };
- zone “.” IN {
- type hint;
- file "named.ca";
- };
- zone "localhost" IN {
- type master;
- file "localhost.zone";
- };
- zone "0.0.127.in-addr.arpa" IN {
- type master;
- file "named.local";
- };
- zone "a.org." IN {
- type slave; #声明从服务器
- file "slaves/a.org.zone"; #同步文件保存路径
- masters { 192.168.0.72; }; #主服务器ip
- };
- zone "168.192.in-addr.arpa" IN {
- type slave;
- file "slaves/192.168.zone";
- master { 192.168.0.72; };
- };
4.启动服务
- service named start
ps:服务正常启动,且同步成功后/var/named/slaves/下会生成从主服务器同步过来的两个解析文件
子域授权
所谓子域授权就是在原有域下声明子域DNS。
当前位置:Master DNS Server
在a.org这个域中加入子域DNS服务器,tech.a.org.com
修改/var/named/a.org.zone内容
- $TTL 1200
- $ORIGIN .a.org.
- @ IN SOA ns1.a.org. admin.a.org. ( #在父域中声明
- 2011081701
- 1H
- 10M
- 7D
- 1D
- )
- IN NS ns1.a.org.
- IN NS ns2.a.org.
- IN MX 10 mail.a.org.
- ns1 IN A 192.168.0.72
- ns2 IN A 192.168.0.71
- www IN A 192.168.0.73
- bbs IN CNAME www.a.org.
- ftp IN A 192.168.0.74
- tech.a.org. IN NS ns1.tech.a.org. #声明子域DNS server的域名
- ns1.tech.a.org. IN A 192.168.0.71 #声明子域DNS server的ip
创建子域DNS
1.先创建一个缓存DNS服务器,具体步骤见上文
2.创建/var/named/tech.a.org
- $TTL 1200
- $ORIGIN tech.a.org.
- @ IN SOA ns1.tech.a.org. admin.a.org. (
- 2011081701
- 1H
- 10M
- 7D
- 1D
- )
- IN NS ns1.tech.a.org.
- IN NS ns2.tech.a.org.
- IN MX 10 mail.tech.a.org.
- ns1 IN A 192.168.0.71
- ns2 IN A 192.168.0.73
- mail IN A 192.168.0.74
- www IN A 192.168.1.75
- ftp IN A 192.168.1.76
3.测试
- dig -t A ns1.tech.a.org @192.168.0.72
- #通过父域解析子域是可以实现的
- dig -t A ns1.tech.a.org @192.168.0.71
- #通过子域解析自己的也可以实现
- dig -t A ns1.a.org @192.168.0.71
- #此时通过子域解析父域就解析不到了
要实现此功能就要依赖转发实现了。
DNS转发
完全转发:只要DNS server无法解析的请求就统统转发到option中定义的forwarders上。
部分转发:只转发已经在声明type forward; 所对应域的解析请求,对于其他域的解析请求按常规方法处理。
forward {only|first} 选项only:如果不能完成解析请求就向forwarder进行转发,且进行递归式转发(即不成功不停止);选项first:先请求递归,若没有予以响应,使用迭代去找根;
配置完全转发
- vim /etc/named.conf
- options { #定义在option则是完全转发
- directory "/var/named";
- forward first; #转发模式使用first
- forwarders { 192.168.0.72; }; #转发到192.168.0.72(转发至父域DNS server)
- };
配置部分转发
- vim /etc/named.conf
- zone "a.org" IN { #声明一个区域
- type forward; #定义此区域是一个转发域,即域名匹配a.org就果断转发至192.168.0.72的forwarders上
- forwarders { 192.168.0.72; };
- };
视图View
实现:内网用户一套地址解析,外网访问一套地址解析;来自不同的网络的用户,根据我们的部署返回不同网络的主机。
目的:实现内网用户与外网用户通过视图DNS对应两套不同的解析策略
1.创建具有视图功能DNS服务器的主配置文件/etc/named.conf
- acl internal { #声明内网网段
- 192.168.0.0/24;
- 127.0.0.0/8;
- };
- acl external { #声明外网网段
- 172.16.0.0/16;
- };
- options {
- directory "/var/named";
- recursion yes;
- };
- view "INNET" { #在试图中定义内网
- match-clients { internal; }; #定义匹配的client
- recursion yes; #是否递归(默认是允许)
- zone "." IN {
- type hint;
- file "named.ca";
- };
- zone "a.org"{
- type master;
- file "a.org.internal"; #使用解析内网的文件
- };
- };
- view "EXNET" { #在试图中定义外网
- match-clients { external; }; #定义匹配的client
- recursion yes; #是否递归(默认是允许)
- zone "." IN {
- type hint;
- file "named.ca";
- };
- zone "a.org"{
- type master;
- file "a.org.external"; #使用解析外网的文件
- };
- };
2.编辑两套不同的解析文件
内网:
- vim /var/named/a.org.internal
- $TTL 1200
- $ORIGIN .a.org.
- @ IN SOA ns1.a.org. admin.a.org. (
- 2011081701
- 1H
- 10M
- 7D
- 1D
- )
- IN NS ns1.a.org.
- IN NS ns2.a.org.
- IN MX 10 mail.a.org.
- ns1 IN A 192.168.0.72
- ns2 IN A 192.168.0.71
- www IN A 192.168.0.73
- bbs IN CNAME www.a.org.
- ftp IN A 192.168.0.74
外网:
- vim /var/named/a.org.external
- $TTL 1200
- $ORIGIN .a.org.
- @ IN SOA ns1.a.org. admin.a.org. (
- 2011081701
- 1H
- 10M
- 7D
- 1D
- )
- IN NS ns1.a.org.
- IN NS ns2.a.org.
- IN MX 10 mail.a.org.
- ns1 IN A 172.16.100.72
- ns2 IN A 172.16.100.71
- www IN A 172.16.100.73
- bbs IN CNAME www.a.org.
- ftp IN A 172.16.100.74
反解文件编辑与主从DNS反解文件相同,在此不再赘述。
3.测试
作者使用VMware虚拟机,在另一台虚拟机中配置两块虚拟网卡分别是192.168.0.0和172.16.100.0网段。
- dig -t A www.a.org @192.168.0.71
- dig -t A www.a.org @172.16.100.71
- #分别测试两网段的DNS解析
能够返回两套不同的解析结果,说明配置成功。
Linux下DNS服务器搭建详解的更多相关文章
- Linux下dns服务器搭建
Linux下dns服务器搭建1-环境Red Hat Enterprise Linux Server release 6.7 (Santiago)2-配置本地yum源安装dns相关包yum -y ins ...
- linux下DNS服务器搭建,正反向解析配置
dns服务器之前自己搭建玩过,一段时间不搞,加上当时没写文档,基本忘光光了,这次老实了,写个文档记下来,方便以后查阅. 1.服务器准备 为了避免不必要的问题,关闭防火墙,关闭selinux,hosts ...
- linux下samba共享服务器搭建详解
这两天业务需求搭了一台服务器.要求samba共享文件. 葡萄美酒月光杯的前戏就省了,我们直接上干货. 1.yum方式安装samba yum -y install samba 2.将/etc/sam ...
- linux下的服务器搭建集成环境
linux下的服务器搭建集成环境 ——写给初学者的我们 1.准备工具 1.1 SecureCRT SecureCRT是一款支持SSH(SSH1和SSH2)的终端仿真程序,简单地说是Windows下登录 ...
- Linux下tomcat的安装详解
Linux下tomcat的安装详解 来源: ChinaUnix博客 日期: 2007.01.21 22:59 (共有0条评论) 我要评论 一,安装前的准备:1,Linux版本:我的是企业版.(至于红帽 ...
- Linux下的文件目录结构详解
Linux下的文件目录结构详解 / Linux文件系统的上层根目录 /bin 存放用户可执行的程序 /boot 操作系统启动时所需要的文件 /dev 接口设备文件目录,例如:had表示硬盘 /etc ...
- Linux下SVN服务器搭建配置
Linux下SVN服务器搭建配置 1.SVN服务安装 yum install subversion 2.创建SVN代码仓库 mkdir /data/svn svnadmin create /data/ ...
- 《Linux下FTP服务器搭建及FTP使用》
.LOGAndy:mxtd114 <Linux下FTP服务器搭建> 0.root登录 1.安装ftp # yum -y install ftp 2.安装vsftpd # yum -y in ...
- Linux下find命令用法详解
Linux下find命令用法详解 学神VIP烟火 学神IT教育:XueGod-IT 最负责任的线上直播教育平台 本文作者为VIP学员 烟火 第一部分:根据文件名查找 1.在当前目录 ...
随机推荐
- 0xC0000005;Access Violation(栈区空间很宝贵, linux上栈区空间默认为8M,vc6下默认栈空间大小为1M)
写C/C++程序最怕出现这样的提示了,还好是在调试环境下显示出来的,在非调试状态就直接崩溃退出. 从上述汇编代码发现在取内存地址 eax+38h 的值时出错, 那说明这个地址非法呗, 不能访问, 一般 ...
- USACO 1.4 Mother's Milk
Mother's Milk Farmer John has three milking buckets of capacity A, B, and C liters. Each of the numb ...
- DB-SQL-MySQL-杂项-调优:Mysql千万以上数据优化、SQL优化方法
ylbtech-DB-SQL-MySQL-杂项-调优:Mysql千万以上数据优化.SQL优化方法 1.返回顶部 1. 1,单库表别太多,一般保持在200以下为宜 2,尽量避免SQL中出现运算,例如se ...
- java格式化时间到毫秒
转自:https://blog.csdn.net/iplayvs2008/article/details/41910835 java格式化时间到毫秒: SimpleDateFormat formatt ...
- 深度理解Jquery 中 scrollTop() 方法
这是工作遇到scrollTop() 方法.为了强化自己,把它记录在博客园当中. 下面就开始scrollTop 用法讲解: scrollTop() 定义和用法 scrollTop() 方法设置或返回被选 ...
- Qt-信号和槽-1对1
前言:信号和槽是Qt的核心机制,窗体和控件对象之间的沟通一般都使用信号和槽. 对于部件有哪些信号和槽,可以查看help文档. 一.使用自定义槽 1.1 新建工程 新建工程,新建Widget类(基于QW ...
- VS自动注释——GhostDoc
直接上图片,使用步骤是按顺序来的: 安装就不多说了,直接下一步,下一步.直接讲讲如何自定义注释规则 软件下载链接:http://pan.baidu.com/s/1dF5TSel 密码:peuz 链接: ...
- Android WebView访问网站携带登录认证Cookies和动态自定义的cookies
最近项目几个页面要复用微信程序的网页.但是需要调用微网站登录接口,返回Cookies,webview访问需要的网页的时候携带. 并且还需要几个其他的动态改变的cookie,目的是根据这几个动态自定义c ...
- ajax的post提交方式和传统的post提交方式哪个更快?
如果同时用ajax和post提交先执行哪个呢?是ajax返回后再执行post呢还是同时执行? ajax的post提交方式和传统的post提交方式哪个更快? >> php这个答案描述的挺清楚 ...
- JAVA在线观看视频教程完整版
今天给大家介绍一下JAVA在线观看视频教程完整版,我们知道Java是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由Sun Microsystems公司于1995年5月推出的Java程序设计语 ...