Linux系统搭建DNS服务器

DNS服务器
服务名named
软件包名bind
RHEL5:必须一个叫做chroot的环境
RHEL6$RHEL7:没有严格的要求,如果用yum安装,默认安装chroot

systemctl restart named
软件包名字:bind
服务名称:named
专用术语:DNS

DNS服务器配置:

1:查询是否已经安装DNS

[root@node1 ~]# rpm -qa | grep bind
bind-license-9.9.4-37.el7.noarch
bind-libs-9.9.4-37.el7.x86_64
bind-libs-lite-9.9.4-37.el7.x86_64

或者:
[root@node1 ~]# yum install -y bind*

2:重启服务

[root@node1 named]# systemctl restart named

RHEL5:必须存在一个叫做chroot的环境
RHEL6&RHEL7:没有严格的要求必须安装chroot。如果使用yum安装,默认是安装chroot

3:查看配置文件

[root@node1 named]# vim /etc/named.conf
options {
listen-on port 53 { 127.0.0.1; };-----DNS服务器的地址(本机)
listen-on-v6 port 53 { ::1; };----IPV6的地址
directory “/var/named”;-----配置文件的存放位置
dump-file “/var/named/data/cache_dump.db”;
statistics-file “/var/named/data/named_stats.txt”;
memstatistics-file “/var/named/data/named_mem_stats.txt”;
allow-query { localhost; };-----允许那些主机查询本dns

zone “.” IN { -----.表示的是根域服务器
type hint; -----类型为hint,表示的是根域
file “named.ca”;-----根域服务器的配置文件名称,该文件记录所有根域服务器
};

4:主配置文件的编辑

明确:
1:你要使用谁做dns服务器,地址是多少(我的是192.168.1.111)
2:准备怎么做(是否做主从)
[root@node1 named]# vim /etc/named.conf
// named.conf
options {
listen-on port 53 { 192.168.1.111; };
listen-on-v6 port 53 { ::1; };
directory “/var/named”;
dump-file “/var/named/data/cache_dump.db”;
statistics-file “/var/named/data/named_stats.txt”;
memstatistics-file “/var/named/data/named_mem_stats.txt”;
allow-query { 192.168.1.0/24; };
};

zone “.” IN {
type hint;
file “named.ca”;
};

#定义配置文件
#1定义正向区域配置文件
zone “baidu.com” IN {
type master;
file “baidu.zhengx.zone”;
};

#定义反向解析配置文件
zone “1.168.192.in-addr.arpa” IN {
type master;
file “baidu.fanx.zone”;
};

4:正向区域配置文件和反向区域配置文件默认都不存在,需要手动创建
[root@node1 named]# ls
chroot dynamic named.ca named.localhost-----这个文件是模板文件
data dyndb-ldap named.empty named.loopback

5:查看模板文件

[root@node1 named]# vim named.localhost
$TTL 1D
@ IN SOA @ rname.invalid. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS @
A 127.0.0.1
AAAA ::1

C:\Windows\System32\drivers\etc----windows下hosts文件存放的位置

6:创建区域配置文件并编辑

[root@node1 named]# cp named.localhost baidu.zhengx.zone -p
[root@node1 named]# ll
-rw-r-----. 1 root named 152 Jun 21 2007 baidu.zhengx.zone
(看啥?
1:名字是否跟主配置文件/etc/name.conf写的一致
2:看该文件的所属组是不是为named
3:-p是带权限拷贝,也是就使所属组为named)

7:编辑正向区域配置文件

[root@node1 named]# vim baidu.zhengx.zone
$TTL 1D
@ IN SOA baidu.com. root.node1.baidu.com. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS node1.baidu.com.
node1 A 192.168.1.111
node2 A 192.168.1.222

8:编辑反向区域配置文件

[root@node1 named]# cp baidu.zhengx.zone baidu.fanx.zone
[root@node1 named]# ll
total 24
-rw-r-----. 1 root root 193 Jun 23 06:49 baidu.fanx.zone–所属组为root
-rw-r-----. 1 root named 193 Jun 23 06:49 baidu.zhengx.zone
[root@node1 named]# chgrp named baidu.fanx.zone
[root@node1 named]# ll
total 24
-rw-r-----. 1 root named 193 Jun 23 06:49 baidu.fanx.zone
-rw-r-----. 1 root named 193 Jun 23 06:49 baidu.zhengx.zone
[root@node1 named]# vim baidu.fanx.zone
$TTL 1D
@ IN SOA baidu.com. root.node1.baidu.com. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS node1.baidu.com.
111 PTR node1.baidu.com.
222 PTR node2.baidu.com.

9:确认你的服务器IP地址和主机名

[root@node1 named]# ifconfig
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.1.111 netmask 255.255.255.0 broadcast 192.168.1.255
inet6 fe80::20c:29ff:fe40:9de0 prefixlen 64 scopeid 0x20
ether 00:0c:29:40:9d:e0 txqueuelen 1000 (Ethernet)
RX packets 9691 bytes 945995 (923.8 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 2206 bytes 331857 (324.0 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

[root@node1 named]# vim /etc/hostname
[root@node1 named]# hostname node1.baidu.com
[root@node1 named]# hostname
node1.baidu.com

node1的dns需要指向自己
[root@node1 named]# vim /etc/sysconfig/network-scripts/ifcfg-ens33
DEVICE=ens33
ONBOOT=yes
BOOTPROTO=none
TYPE=Ethernet
IPADDR=192.168.1.111
PREFIX=24
GATEWAY=192.168.1.1
DNS1=192.168.1.111
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=no
NAME=“System ens33”
UUID=c96bc909-188e-ec64-3a96-6a90982b08ad

[root@node1 named]# systemctl restart network

10:把node2加入到该域中

1:修改主机名
[root@node2 ~]# vim /etc/hostname 
node2.baidu.com
[root@node2 ~]# hostname node2.baidu.com
[root@node2 ~]# hostname
node2.baidu.com
2:修改网络配置,将DNS指向DNS服务器
[root@node2 ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33 
[root@node2 ~]# systemctl restart network

[root@node2 ~]# cat /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE=Ethernet
BOOTPROTO=none
DEFROUTE=yes
PEERDNS=yes
PEERROUTES=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33
UUID=2ed71679-1f8f-4aea-afaf-6fa7aed2fb13
DEVICE=ens33
ONBOOT=yes
IPADDR=192.168.1.222
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
DNS1=192.168.1.111

[root@node1 named]# systemctl restart named
[root@node1 named]# dig -t axfr baidu.com

; <<>> DiG 9.9.4-RedHat-9.9.4-37.el7 <<>> -t axfr baidu.com
;; global options: +cmd
baidu.com. 86400 IN SOA baidu.com. root.node1.baidu.com. 0 86400 3600 604800 10800
baidu.com. 86400 IN NS node1.baidu.com.
node1.baidu.com. 86400 IN A 192.168.1.111
node2.baidu.com. 86400 IN A 192.168.1.222
baidu.com. 86400 IN SOA baidu.com. root.node1.baidu.com. 0 86400 3600 604800 10800
;; Query time: 4 msec
;; SERVER: 192.168.1.111#53(192.168.1.111)
;; WHEN: Sun Jun 23 07:11:41 AST 2019
;; XFR size: 5 records (messages 1, bytes 162)

[root@node1 named]# nslookup

node1.baidu.com
Server: 192.168.1.111
Address: 192.168.1.111#53

Name: node1.baidu.com
Address: 192.168.1.111

192.168.1.222
Server: 192.168.1.111
Address: 192.168.1.111#53

222.1.168.192.in-addr.arpa name = node2.baidu.com.

**DNS域名解析工作原理
<1> 客户机提交域名解析请求,并将该请求发送给本地的域名服务器。
<2> 当本地的域名服务器收到请求后,就先查询本地的缓存。如果有查询的DNS信息记录,则直接返回查询的结果。如果没有该记录,本地域名服务器就把请求发给根域名服务器。
<3> 根域名服务器再返回给本地域名服务器一个所查询域的顶级域名服务器的地址。
<4> 本地服务器再向返回的域名服务器发送请求。
<5> 接收到该查询请求的域名服务器查询其缓存和记录,如果有相关信息则返回客户机查询结果,否则通知客户机下级的域名服务器的地址。
<6> 本地域名服务器将查询请求发送给返回的DNS服务器。
<7> 域名服务器返回本地服务器查询结果(如果该域名服务器不包含查询的DNS信息,查询过程将重复<6>、<7>步骤,直到返回解析信息或解析失败的回应)。
<8> 本地域名服务器将返回的结果保存到缓存,并且将结果返回给客户机。

正向解析与反向解析
1)正向解析
正向解析是指域名到IP地址的解析过程。
2)反向解析
反向解析是从IP地址到域名的解析过程。反向解析的作用为服务器的身份验证。
DNS查询类型
1.递归查询: 简单的理解就是以最终结果查询,就是返回最终的结果给客户机,而客户机在此阶段是处于等待的状态!(就好比,你在家里地位最高,你都是衣来伸手饭来张口的,最什么事情就只要一句话不用自己亲自动手)

2.迭代查询:简单的理解就是以最佳的结果查询,意思就是如果DNS服务器能解析就直接以最终结果返回给客户机,如果无法解析则就返回上一级DNS服务器的IP给客户机,由客户机完成查询工作直到得到最终结果!(举个例子就是什么事情你去问别人,别人只是告诉你怎么做,你知道后要自己亲自去做)

这里要带权限拷贝,加-p的参数(2个文件都要(正向解析和反向解析))
TTL 生存周期,在红帽5下面默认单位是秒,在红帽6和红帽7下面,它是单位是天。
@ 这里如果是“@”和“空白”都代表是域名,那代表那个域名?dyzx.edu.zone
SOA 这里的SOA叫做起始授权服务器。只有它能和根域服务器交流。它相当于基督教的神父。
Serial 序列号,这个是我们做主从服务器用的,用于我们的主/从同步。就是当我们的主服务器宕机之后,我们的从服务器来接手工作。而且我们的从服务器是没有区域配置文件的,也就是说,从服务器的区域配置文件我们根本不要写,那从服务器的区域配置文件从哪里来?从服务器就是没有区域配置文件。靠什么来做匹配呢?匹配的是什么呢?就根据这个序列号来匹配我们的解析条目。当我们的服务器里面有新的解析条目出现的时候,这个序列号就会+1。这个时候,从服务器就去匹配我们主服务器的解析条目。如果从服务器发现主服务器的这个序列号比自己的序列号还小的话,它就不会去同步主服务器了!
Refresh 刷新时间。从服务器多久刷新一次,这个值是可以修改的。
Retry 重试时间,当我们的从服务器没法连接主服务器的时候,它每个多久重新连接一次
Experi 过期时间,什么意思呢!就是说,当我们的从服务器不断去刷新的时候,这个动作持续多久,1周!如果这一周从服务器都没能连接上主服务器,宣告数据过期,我将不在重试了!
minimum 最小生存周期
NS Name server名称服务器。它是专门做递归查询的。
MX 5 Mail exchange ,邮件交换,级别为5**

注意提示;1.经常出现问题的地方,权限没有满足2.防火墙设置允许3.selinux可以设置为通过比较好

Linux 系统搭建 DNS 服务器可以通过安装和配置 BIND(Berkeley Internet Name Domain)软件来实现。 以下是在 CentOS 7 上搭建 DNS 服务器的步骤: 1. 安装 BIND 软件 运行以下命令安装 BIND 软件: ``` sudo yum install bind bind-utils -y ``` 2. 配置 DNS 服务器 创建一个名为 `/etc/named.conf` 的文件,并将以下内容添加到该文件中: ``` options { listen-on port 53 { any; }; allow-query { any; }; forwarders { 8.8.8.8; }; recursion yes; dnssec-enable yes; dnssec-validation yes; }; zone "example.com" { type master; file "/var/named/example.com.zone"; allow-update { none; }; }; zone "0.168.192.in-addr.arpa" { type master; file "/var/named/192.168.0.zone"; allow-update { none; }; }; ``` 在上面的配置中: - `listen-on port 53`:指定 BIND 监听的端口号。 - `allow-query`:指定哪些客户端可以查询 DNS 服务器。 - `forwarders`:指定 DNS 服务器的转发器。 - `recursion`:指定是否允许递归查询。 - `dnssec-enable` 和 `dnssec-validation`:启用 DNSSEC 验证。 3. 创建 DNS 区域文件 创建两个文件 `/var/named/example.com.zone` 和 `/var/named/192.168.0.zone`,用于存储 DNS 区域信息。文件内容如下: `/var/named/example.com.zone`: ``` $TTL 86400 @ IN SOA ns1.example.com. admin.example.com. ( 201902221 ; serial 7200 ; refresh 1800 ; retry 604800 ; expire 86400 ; minimum ) @ IN NS ns1.example.com. ns1 IN A 192.168.0.100 www IN A 192.168.0.101 ``` `/var/named/192.168.0.zone`: ``` $TTL 86400 @ IN SOA ns1.example.com. admin.example.com. ( 201902221 ; serial 7200 ; refresh 1800 ; retry 604800 ; expire 86400 ; minimum ) @ IN NS ns1.example.com. 100 IN PTR ns1.example.com. 101 IN PTR www.example.com. ``` 4. 启动并测试 DNS 服务器 启动 BIND 服务: ``` sudo systemctl start named ``` 设置 BIND 服务自动启动: ``` sudo systemctl enable named ``` 测试 DNS 服务器是否正常工作,可以使用 `nslookup` 命令: ``` nslookup www.example.com ``` 应该返回 `192.168.0.101` 的 IP 地址。 至此,你的 DNS 服务器搭建完成了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值