`

LINUX-DNS配置

阅读更多
DNS服务的配置
DNS的简介:
DNS和BIND的关系:DNS是一种网络通信的名称。BIND是提供DNS服务的软件。DNS使用TCP和UDP的53号端口,一般情况下为了查询速度使用的是UDP53端口。正向解析就是输入域名解析到IP地址,反向解析就是输入IP 地址解析到域名。正向解析和反向解析一般不需要配套配置,也就是说有一个正向解析不一定非要一个反向解析。事实上,需要正反解析成对的仅有邮件服务器。
DNS的搜索流程:
当我们在浏览器中输入一个网址时,计算机是怎样查找到一个IP地址的呢?首先,计算机会查找缓存,如果缓存没有,那么查找hosts文件(linux中这个文件对应的是/etc/hosts),如果hosts文件也没有的话,那么就向顶域查找(根域),如果根域没有就会向该主机提供二级域的IP地址,然后主机再向二级域查找,如果二级域还不能查到,二级域就会向主机提供三级域的IP地址,然后主机再向三级域查找……,直到查找完成。当查找到后,主机会把该域名和IP地址的映射关系存入到缓存中,以便下一次对同一主机名称的查询请求,默认会在缓存中保留24小时。
DNS基本配置:
第一步:安装软件:
[root@localhost ~]# rpm -ivh /misc/cd/Server/bind-9.3.4-10.P1.el5.i386.rpm
DNS服务器的主程序。
[root@localhost ~]# rpm –ivh /misc/cd/Server/bind-chroot-9.3.4-10.P1.el5.i386.rpm
将bind目录关在一个目录里面在。
[root@localhost ~]# rpm -ivh /misc/cd/Server/bind-utils-9.3.4-10.P1.el5.i386.rpm
DNS服务的工具包。
[root@localhost ~]# rpm -ivh /misc/cd/Server/caching-nameserver-9.3.4-10.P1.el5.i386.rpm
DNS缓存。
第二步:编辑配置文件:
[root@localhost ~]# vi /var/named/chroot/etc/named.caching-nameserver.conf
修改如下内容:(一个IP,三个any。)
        listen-on port 53 { 192.168.100.200; }; //修改为本机IP地址。
        allow-query     { any; }; //允许所有人查询。
        match-clients      { any; }; //允许任意客房端。
        match-destinations { any; }; //允许任意目标。

编辑区域文件:
[root@localhost ~]# vi /var/named/chroot/etc/named.rfc1912.zones

新建一个正向rhel.com区域:
zone "rhel.com" IN {
        type master; //设置主从。
        file "rhel.com.zone"; //配置文件的名称。
        allow-update { none; };
};
编辑区域配置文件:
[root@localhost ~]# cd /var/named/chroot/var/named/
[root@localhost named]# cp -p localhost.zone rhel.com.zone //一定要加-p这个参数,否则发现不能解析,-p是复制后不更改文件的权限。
[root@localhost named]# vi rhel.com.zone

$TTL    86400
@               IN SOA  @       root (
                                        42              ; serial (d. adams)
                                        3H              ; refresh
                                        15M             ; retry
                                        1W              ; expiry
                                        1D )            ; minimum

                IN NS           @
                IN A            127.0.0.1
                IN AAAA         ::1
www            IN A            192.168.100.200
mail             IN A            192.168.1.1

配置文件详解:

$TTL    86400 表示默认的TTL值。(单位:秒)
@               IN SOA  @       root (
第一个@表示区域,第二个@表示主机名,SOA是主从认证、授权方面的记录,root是管理员邮箱,如果管理员邮箱是root@rhel.com,在这里可以写成root,如果写全就是root.rhel.com,因为@在这里表示本机的意思,所以就以.代替。
SOA的五个参数的含义:
42 // serial,这是一个序列号,主从之间更新的依据。
3H // refresh,更新时间,从服务器多久主动请求更新一次。
15M // retry,重试时间,当从服务器更新失败后,多久再更新。
1W // expiry,失效时间,当从服务器多长时间没有成功更新时,就不再更新。
1D // minimum,相当于TTL值。

这几个参数的大小限制如下:
serial<=2^32=4294967296
refresh>=retry*2
refresh+retry<expiry
expiry>=retry*10
expiry>=7 day

IN NS    @ //NS记录,后面跟域名服务器的名称。@代表本机。前面的@可以省略。
www   IN A   192.168.100.200 //主机记录。

新建一个反向rhel.com区域:
[root@localhost ~]# vi /var/named/chroot/etc/named.rfc1912.zones
zone "100.168.192.in-addr.arpa" IN {
        type master;
        file "in-addr.rhel.com.zone";
        allow-update { none; };
};

[root@localhost ~]# cd /var/named/chroot/var/named/
[root@localhost named]# cp -p named.local in-addr.rhel.com.zone
[root@localhost named]# vi in-addr.rhel.com.zone

$TTL    86400
@       IN      SOA     localhost. root.localhost.  (
                                      1997022700 ; Serial
                                      28800      ; Refresh
                                      14400      ; Retry
                                      3600000    ; Expire
                                      86400 )    ; Minimum
          IN      NS      localhost.
200       IN      PTR     www.rhel.com.
1         IN      PTR     mail.rhel.com
这里和正向区域的配置基本一样,只是多了一条PTR记录。
PTR的格式:前面是对应的IP地址,后面是主机名。

第三步:配置完成,重启服务。
[root@localhost named]# service named restart

第四步:测试:
在windows下:
D:\Users\chenbin>nslookup
默认服务器:  UnKnown
Address:  202.43.150.244
> server 192.168.100.200 //更改DNS服务器
DNS request timed out.
    timeout was 2 seconds.
默认服务器:  [192.168.100.200]
Address:  192.168.100.200
> www.rhel.com
服务器:  [192.168.100.200]
Address:  192.168.100.200
名称:    www.rhel.com
Address:  192.168.100.200

> mail.rhel.com
服务器:  [192.168.100.200]
Address:  192.168.100.200
名称:    mail.rhel.com
Address:  192.168.1.1
已经成功解析。或者这样测试:nslookup mail.rhel.com。但这样不能指定DNS服务器的地址(或者是我不知道而已)。
清除DNS缓存:
D:\Users\chenbin>ipconfig /flushdns
Windows IP 配置
已成功刷新 DNS 解析缓存。
在linux下:
首先,设置DNS服务器地址:
[root@linux3 ~]# vi /etc/resolv.conf
nameserver 192.168.100.200 //添加DNS SERVER地址。
使用nslookup测试:
[root@linux3 ~]# nslookup
> mail.rhel.com
Server:         192.168.100.200
Address:        192.168.100.200#53

Name:   mail.rhel.com
Address: 192.168.1.1
同样也可以使用 server命令更改dns地址。
> server 192.168.100.1
Default server: 192.168.100.1
Address: 192.168.100.1#53
使用dig测试:
[root@linux3 ~]# dig mail.rhel.com
; <<>> DiG 9.3.4-P1 <<>> mail.rhel.com
;; global options:  printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 27292
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 2
;; QUESTION SECTION:
;mail.rhel.com.                 IN      A
;; ANSWER SECTION:
mail.rhel.com.          86400   IN      A       192.168.1.1
;; AUTHORITY SECTION:
rhel.com.               86400   IN      NS      rhel.com.
;; ADDITIONAL SECTION:
rhel.com.               86400   IN      A       127.0.0.1
rhel.com.               86400   IN      AAAA    ::1

;; Query time: 16 msec
;; SERVER: 192.168.100.200#53(192.168.100.200)
;; WHEN: Wed Apr  7 07:09:28 2010
;; MSG SIZE  rcvd: 105

使用host命令:
[root@linux3 ~]# host mail.rhel.com
mail.rhel.com has address 192.168.1.1

[root@linux3 ~]# host 192.168.100.200
200.100.168.192.in-addr.arpa domain name pointer www.rhel.com.
DNS的主辅服务器配置:
为了不间断的提供DNS查询,我们需要两台以上的DNS服务器,如果有多个DNS服务器,一般只要一台Master DNS,其他的都为Slave DNS服务器,Slave DNS没有数据库,它的数据库是由Master DNS提供。主、辅服务器之间必需能够相互传送区域文件信息。

第一步:配置主DNS服务器。
因为刚才已经配置好了主DNS服务器,这里就省略。

第二步:配置辅DNS服务器。
安装软件:
[root@linux3 ~]# cd /misc/cd/Server/
[root@linux3 Server]# rpm -ivh bind-9.3.4-10.P1.el5.i386.rpm
[root@linux3 Server]# rpm -ivh caching-nameserver-9.3.4-10.P1.el5.i386.rpm
[root@linux3 Server]# rpm -ivh bind-chroot-9.3.4-10.P1.el5.i386.rpm
修改配置文件:
[root@linux3 ~]# vi /var/named/chroot/etc/named.caching-nameserver.conf
listen-on port 53 { 192.168.100.201; }; //修改为本机地址。监听这个地址的53端口。
        allow-query     { any; };
        match-clients      { any; };
        match-destinations { any; };
新建区域:
[root@linux3 ~]# vi /var/named/chroot/etc/named.rfc1912.zones
zone "rhel.com" IN {
        type Slave; //设为辅服务器。
        file "slaves/rhel.com.zone"; //别忘了前面的slaves。还有后面的s。
        Masters {192.168.100.200;}; //指定主服务器。
        allow-update { none; };
};
zone "100.168.192.in-addr.arpa" IN {
        type Slave;
        file "slaves/in-addr.rhel.com.zone";
        Masters {192.168.100.200;};
        allow-update { none; };
};

因为辅服务器的区域配置文件是从主服务器上复制过来的,所以这里就不需要区域配置文件了。

重启服务:
[root@linux3 named]# service named restart

测试:(以windows为例)
D:\Users\chenbin>nslookup
默认服务器:  www.rhel.com
Address:  192.168.100.200

> server 192.168.100.201
默认服务器:  [192.168.100.201]
Address:  192.168.100.201

> mail.rhel.com
服务器:  [192.168.100.201]
Address:  192.168.100.201

名称:    mail.rhel.com
Address:  192.168.1.1
DNS转发服务器的配置:
使用forward 和forwarders设置转发。forward用于指定转发方式,forwarders用于指定要转发到的服务器。转发方式有两种,一种是forward first,这是默认转发方式,当有查询请求时,首先转发到forwarders设置的转发器查询,如果查询不到,则再到本地服务器上查询;另一种是forward only,当有查询请求时,只转发到forwarders设置的转发器查询,查询不到也不在本地查询。forwarders后面跟的是要转发到的服务器地址,如有多个地址,则用分号隔开。

在所有区域上转发:
[root@linux3 named]# vi /var/named/chroot/etc/named.caching-nameserver.conf
在选项里添加:
     options {
        listen-on port 53 { 192.168.100.201; };
        listen-on-v6 port 53 { ::1; };
        forwarders {192.168.100.200;}; //如有多个地址用分号隔开。
重启服务后测试:
> mail.rhel.com
服务器:  [192.168.100.201]
Address:  192.168.100.201

非权威应答: //注意这里,因为不是本机查找到的所以会有这个非权威应答。
名称:    mail.rhel.com
Address:  192.168.1.1


在单个区域转发:
新建一个转发区域:
[root@linux3 named]# vi /var/named/chroot/etc/named.rfc1912.zones
zone "rhel.com"IN{
        type forward;
        forwarders {192.168.100.200;};
};
重启服务后测试。
DNS的子域授权配置:
配置主服务器。
[root@localhost ~]# rpm -ivh /misc/cd/Server/bind-9.3.4-10.P1.el5.i386.rpm
[root@localhost ~]# rpm -ivh  /misc/cd/Server/bind-chroot-9.3.4-10.P1.el5.i386.rpm
[root@localhost ~]# rpm -ivh /misc/cd/Server/caching-nameserver-9.3.4-10.P1.el5.i386.rpm
[root@localhost ~]# vi /var/named/chroot/etc/named.caching-nameserver.conf
[root@localhost ~]# vi /var/named/chroot/etc/named.rfc1912.zones

[root@localhost ~]# cd /var/named/chroot/var/named/
[root@localhost named]# cp -p localhost.zone rhel.com.zone
[root@localhost named]# vi rhel.com.zone
添加如下几行:
xyz             IN NS           xyz.rhel.com //xyz.rhel.com区域的解析由xyz.rhel.com主机来完成。.
xyz             IN A            192.168.100.201 //添加主机IP地址。
www             IN A            192.168.100.200
mail            IN A            192.168.100.1


子域的配置:

[root@linux3 ~]# rpm -ivh /misc/cd/Server/bind-9.3.4-10.P1.el5.i386.rpm
[root@linux3 ~]# rpm -ivh /misc/cd/Server/bind-chroot-9.3.4-10.P1.el5.i386.rpm
[root@linux3 ~]# rpm -ivh /misc/cd/Server/caching-nameserver-9.3.4-10.P1.el5.i386.rpm

[root@linux3 ~]# vi /var/named/chroot/etc/named.caching-nameserver.conf
[root@linux3 ~]# vi /var/named/chroot/etc/named.rfc1912.zones
[root@linux3 ~]# cd /var/named/chroot/var/named/
[root@linux3 named]# cp -p localhost.zone xyz.rhel.com.zone
[root@linux3 named]# vi xyz.rhel.com.zone

www             IN A            192.168.100.201
mail             IN A            192.168.10.10
添加两条A记录。

重启服务后测试。
DNS常用命令:
ipconfig /flushdns //在windows系统下清除DNS缓存。
rndc flush //在liunx下清除DNS缓存。
nslookup //可用于在windowst和linux下测试DNS。
dig //用于在linux下测试DNS。
host //用于在linux下测试DNS。
service named restart //重启DNS服务。
service named status //查看DNS状态。
netstat –ln //查看DNS的端口状态。

DNS排错:
一、          如果所有都做正确后,发现不能解析,看是不是防火墙的问题,把防火墙关闭再试试,曾经因为这个差点放弃了才想起来。
二、          从服务器的区域文件是放在/var/named/chroot/var/named/slaves目录下的,所以在新建区域时,区域文件前要加个slaves,不要忘了后面的s。
三、          要注意写主机名的时候别忘了后面的.了,这很重要。
四、          如果遇到不能解析时,也许是DNS缓存在做怪。
五、          如果遇到不能解析时,也许是复制区域配置文件时忘了加-p参数了,引起权限问题。

分享到:
评论

相关推荐

    linux-DNS服务

    在 Linux 系统中,需要在 `/etc/resolv.conf` 文件中配置 DNS 的 IP 地址,例如将 DNS 的 IP 地址设置为 `192.168.1.1`。 三、 正确的设定网络接口 在 Linux 系统中,需要正确地设定网络接口的四要素,包括 IP ...

    LINUX--DNS服务详细配置

    本篇主要介绍如何在Linux上进行DNS服务的详细配置。 1. **DNS服务器软件安装** 在大多数Linux发行版中,常用的DNS服务器软件是BIND(Berkeley Internet Name Domain)。你可以通过包管理器来安装,例如在Debian或...

    linux下DNS配置详解

    本文将深入探讨Linux下的DNS配置,帮助你理解其工作原理并掌握配置方法。 一、DNS工作原理 DNS采用层次结构的域名系统,每个域名都是由一系列点分隔的字符串组成,如www.example.com。当用户输入域名时,DNS服务器...

    Configure-the-Linux-DNS-and-BIND-Server.rar_DNS Server_The Bind

    《配置Linux DNS与BIND服务器》是一本专注于DNS服务器在Ubuntu操作系统中配置的指南。DNS(Domain Name System)是互联网的一项核心服务,它将人类可读的域名转换为计算机可识别的IP地址。BIND(Berkeley Internet ...

    Python库 | certbot-dns-cloudflare-0.27.1.tar.gz

    首先,你需要在本地安装Certbot,然后配置Cloudflare的API密钥,以便Certbot能够访问并操作你的DNS记录。在运行Certbot命令时,指定`--dns-cloudflare`插件,它会自动在Cloudflare上创建必要的TXT记录以完成DNS验证...

    前端开源库-native-dns

    这对于开发和测试环境非常有用,开发者可以设置自定义的DNS规则,而无需影响全局系统配置。此外,它也支持通过模拟不同DNS服务器的行为,进行性能测试和故障模拟。 `native-dns`库的核心功能包括: 1. **异步DNS...

    Linux网络配置-DNS

    ### Linux网络配置-DNS知识点详解 #### 一、DNS服务器的基本概念 DNS(Domain Name System,域名系统)是一种用于TCP/IP应用程序查询域名信息的服务。它将域名与IP地址相互映射,使得用户可以通过友好的域名访问...

    Linux-DNS[汇编].pdf

    【Linux DNS配置详解】 在软件开发领域,DNS(Domain Name System)是至关重要的,它负责将人类可读的域名转换成对应的IP地址。本篇主要介绍如何在Linux系统(以CentOS 5为例)上配置DNS服务器,包括主域名服务器、...

    kubernetes-server-linux-amd64.tar.gz

    9. **安装DNS和Dashboard**:Kubernetes DNS提供内部域名解析,Dashboard则提供了Web界面用于集群管理。 10. **安全配置**:确保所有组件都使用安全的配置,如启用TLS通信,限制API访问,以及使用RBAC(Role-Based ...

    Linux RHEL6-DNS服务器配置

    radhat linux 6 配置DNS服务器,安装说明及配置过程及问题分析!

    mysql-5.7.35-linux-glibc2.12-x86_64.tar.gz

    `resolv.conf`文件是Linux系统中的DNS配置文件,它定义了系统如何解析域名。在安装MySQL的过程中,确保正确的DNS设置可以帮助数据库服务器与其他网络服务正常通信。 `mysql-5.7.35-linux-glibc2.12-x86_64.tar.gz`...

    certbot-dns-aliyun:阿里云DNS的certbot插件,使用解决阿里云DNS不能自动为通配符证书续期的问题

    安装安装aliyun cli工具wget https://aliyuncli.alicdn.com/aliyun-cli-linux-latest-amd64.tgztar xzvf aliyun-cli-linux-latest-amd64.tgzsudo cp aliyun /usr/local/bin安装完成后需要配置安装certbot-dns-aliyun...

    linux-test-demo.rar_DEMO_dns _dns linux_linux DNS_linux demo

    2. **DNS配置与管理**:在Linux中,DNS配置主要涉及`/etc/resolv.conf`文件,它包含了首选和备选DNS服务器的IP地址。开发者可能通过`ShellSetSysIP.c`来改变系统网络设置,包括DNS服务器设置,这对于网络故障排查和...

    Linux下DNS配置文件祥解

    ### Linux下DNS配置文件详析 DNS(Domain Name System)是互联网中不可或缺的服务之一,它负责将人类可读的域名转换成计算机可识别的IP地址。在Linux系统中,配置DNS服务器通常涉及到BIND(Berkeley Internet Name ...

    linux20-dns视图

    Linux DNS视图是Berkeley Internet Name Domain (BIND)软件中的一个重要特性,特别是在BIND 9版本中引入。BIND是世界上最广泛使用的DNS服务器软件,它负责解析域名到IP地址的转换。DNS视图允许DNS服务器根据客户端的...

    ddns-go-5.0.3-linux-x86-64.tar

    Linux是操作系统,动态解析DNS是其主要功能,意味着它可以被安装在任何Linux环境中,帮助用户管理他们的动态IP和DNS记录。 在压缩包文件名称列表中,我们可以看到以下三个文件: 1. `ddns-go`:这是主要的可执行...

    最新版linux prometheus-2.29.2.linux-arm64.tar.gz

    2. **服务发现**:Prometheus 可以自动发现新的服务和目标,无需手动配置,支持多种服务发现机制,如 DNS、Consul、Kubernetes 等。 3. **推送与拉取模型**:Prometheus 采用拉取模型收集数据,定期从目标服务器...

    linux-smb-文件权限配置-超详细[归纳].pdf

    本文详细介绍了 Linux SMB 文件权限配置的步骤和相关命令,包括安装 Samba、配置 smb.conf 文件和创建共享目录,并解释了 smb.conf 文件中的各个设置项的作用。通过这些步骤和设置,可以实现 Linux SMB 文件共享和...

Global site tag (gtag.js) - Google Analytics