Linux 配置DNS服务

本文详细介绍了DNS的工作原理,包括浏览器、操作系统和本地DNS服务器的域名解析流程。通过实例展示了如何在Redhat9环境中安装并配置BINDDNS服务,包括主机文件、主配置文件和区域配置,以及解决权限问题和进行DNS查询的测试。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

DNS简介

域名解析:就是域名到IP地址的转换过程。(也可以将IP地址转换为相应的域名地址,叫 做反向解析)⼈们通过注册的域名可以⽅便地访问到⽹站。 IP地址是⽹络上标识站点的数字地址,为了⽅便记忆,采⽤域名来代替IP地址标识站点地址。 域名的解析⼯作由DNS服务器完成。

DNS⼯作原理

1.当在浏览器中输⼊URL时,浏览器会先检查⾃⼰的缓存是否有域名IP的映射关系,有则直接 使⽤IP进⾏通信;

2.如浏览器没有缓存,则操作系统检查本地hosts⽂件是否有域名IP的映射关 系,有则使⽤IP进⾏通信;

3.如果hosts没有这个域名的映射,则查找本地DNS解析器缓存是 否有映射关系,有则直接返回完成域名解析;

4.如果还未找到映射关系,⾸先会找TCP/IP参 数中设置的⾸选DNS服务器,也就是本地DNS服务器,如果服务器已缓存了映射关系,则使 ⽤这个IP地址映射返回完成域名解析,此时解析不具有权威性。

5.如果本地DNS服务器缓存已经失效,进⾏上述的递归查询和迭代查询操作

环境(基础网络环境配置完成)

Redhat 9

192.168.200.133

192.168.200.129

步骤:

服务包bind

服务名named

安装

[root@admin ~]# yum -y install  bind
正在更新 Subscription Management 软件仓库。
无法读取客户身份

本系统尚未在权利服务器中注册。可使用 subscription-manager 进行注册。

上次元数据过期检查:3:17:28 前,执行于 2024年04月02日 星期二 15时40分19秒。
依赖关系解决。

省略 。。。。。。

已安装:
  bind-32:9.16.23-11.el9.x86_64        bind-dnssec-doc-32:9.16.23-11.el9.noarch       bind-dnssec-utils-32:9.16.23-11.el9.x86_64       python3-bind-32:9.16.23-11.el9.noarch      
  python3-ply-3.11-14.el9.noarch      

完毕!
[root@admin ~]# 

重启服务设置开机自启、关闭防火墙selinux

[root@admin ~]# systemctl  restart  named
[root@admin ~]# systemctl  enable named
Created symlink /etc/systemd/system/multi-user.target.wants/named.service → /usr/lib/systemd/system/named.service.
[root@admin ~]# systemctl  stop  firewalld
[root@admin ~]# setenforce  0
[root@admin ~]# 

域名解析文件写入两台机器 IP地址

[root@admin ~]# vim /etc/resolv.conf 
[root@admin ~]# cat /etc/resolv.conf 
# Generated by NetworkManager
search localdomain
nameserver 192.168.200.133
nameserver 192.168.200.129
[root@admin ~]# 

 修改主配置文件


[root@admin ~]# vim /etc/named.conf 
 10 options {
 11         listen-on port 53 { any; };  // ipv4监听端口和ip地址,可以写具体的IP地址也可以写any
 12         listen-on-v6 port 53 { ::1; }; //ipv6 不需要删除这一行
 13         directory       "/var/named";
 14         dump-file       "/var/named/data/cache_dump.db";
 15         statistics-file "/var/named/data/named_stats.txt";
 16         memstatistics-file "/var/named/data/named_mem_stats.txt";
 17         secroots-file   "/var/named/data/named.secroots";
 18         recursing-file  "/var/named/data/named.recursing";
 19         allow-query     { localhost; };
 修改
 10 options {
 11         listen-on port 53 { any; };
 12         directory       "/var/named";
 13         dump-file       "/var/named/data/cache_dump.db";
 14         statistics-file "/var/named/data/named_stats.txt";
 15         memstatistics-file "/var/named/data/named_mem_stats.txt";
 16         secroots-file   "/var/named/data/named.secroots";
 17         recursing-file  "/var/named/data/named.recursing";
 18         allow-query     { any; }; //查询允许的范围可以是具体IP也可以是any

修改区域配置文件

[root@admin named]# vim /etc/named.rfc1912.zones 
zone "abc.my.com" IN {  //域名
        type master;
        file "abc.my.com.zone";
        allow-update { none; };
};

zone "200.168.192.in-addr.arpa" IN { //IP
        type master;
        file "200.168.192.zone";
        allow-update { none; };
};
~     

 复制一份正向解析配置文件模板 并修改名称

[root@admin ~]# cd /var/named/
[root@admin named]# ls
data  dynamic  named.ca  named.empty  named.localhost  named.loopback  slaves
[root@admin named]# cp named.localhost  abc.my.com.zone
[root@admin named]# vim abc.my.com.zone
[root@admin named]# cat abc.my.com.zone 
$TTL 1D
@       IN SOA  abc.my.com. rname.invalid. (
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
                NS      @
                A       192.168.200.133
dns     IN      A       192.168.200.133   //
www     IN      A       192.168.200.129
[root@admin named]# 

反向解析文件

[root@admin named]# cp named.localhost 200.168.192.zone
[root@admin named]# vim 200.168.192.zone 
[root@admin named]# cat 200.168.192.zone 
$TTL 1D
@       IN SOA  abc.my.com. rname.invalid. (
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
        IN      NS      abc.my.com.
133     IN      PTR     dns.abc.my.com.
129     IN      PTR     www.abc.my.com.
[root@admin named]# 

 nslookup 命令测试

[root@admin named]#  nslookup
> 192.168.200.133
;; Got SERVFAIL reply from 192.168.200.133, trying next server
;; connection timed out; no servers could be reached

> 192.168.200.129
;; Got SERVFAIL reply from 192.168.200.133, trying next server
;; connection timed out; no servers could be reached

无法访问

检查权限、配置文件

[root@admin named]# ll
总用量 24
-rw-r-----. 1 root  root   206  4月  3 16:36 200.168.192.zone
-rw-r-----. 1 root  root   210  4月  3 16:35 abc.my.com.zone
drwxrwx---. 2 named named   23  4月  2 18:58 data
drwxrwx---. 2 named named   60  4月  3 16:37 dynamic
-rw-r-----. 1 root  named 2253  2月 27  2023 named.ca
-rw-r-----. 1 root  named  152  2月 27  2023 named.empty
-rw-r-----. 1 root  named  152  2月 27  2023 named.localhost
-rw-r-----. 1 root  named  168  2月 27  2023 named.loopback
drwxrwx---. 2 named named    6  2月 27  2023 slaves

发现权限不对应(权限)
修改对应的配置文件权限
[root@admin named]# chown  -R root:named 200.168.192.zone  abc.my.com.zone 
[root@admin named]# systemctl  restart  named
named.service             named-setup-rndc.service  
[root@admin named]# systemctl  restart  named
[root@admin named]# ll
总用量 24
-rw-r-----. 1 root  named  206  4月  3 16:36 200.168.192.zone
-rw-r-----. 1 root  named  210  4月  3 16:35 abc.my.com.zone
drwxrwx---. 2 named named   23  4月  2 18:58 data
drwxrwx---. 2 named named   60  4月  3 16:37 dynamic
-rw-r-----. 1 root  named 2253  2月 27  2023 named.ca
-rw-r-----. 1 root  named  152  2月 27  2023 named.empty
-rw-r-----. 1 root  named  152  2月 27  2023 named.localhost
-rw-r-----. 1 root  named  168  2月 27  2023 named.loopback
drwxrwx---. 2 named named    6  2月 27  2023 slaves

再次测试、解析成功

[root@admin named]# nslookup 
> 192.168.200.133
133.200.168.192.in-addr.arpa    name = dns.abc.my.com.
> 192.168.200.129
129.200.168.192.in-addr.arpa    name = www.abc.my.com.
> www.abc.my.com
Server:         192.168.200.133
Address:        192.168.200.133#53

Name:   www.abc.my.com
Address: 192.168.200.129

 配置第二台机器DNS地址为第一台IP地址

[root@AI ~]# nmcli  connection modify  ens160  ipv4.dns 192.168.200.133 
[root@AI ~]# nmcli  connection  up ens160 
连接已成功激活(D-Bus 活动路径:/org/freedesktop/NetworkManager/ActiveConnection/4)

 测试成功

[root@AI ~]# nslookup 
> 192.168.200.133
133.200.168.192.in-addr.arpa    name = dns.abc.my.com.
> 192.168.200.129
129.200.168.192.in-addr.arpa    name = www.abc.my.com.
> 

### 配置DNS服务器的详细步骤 在Linux系统中配置DNS服务器通常涉及安装和配置BIND软件。以下是配置DNS服务器和从DNS服务器的详细方法。 #### 1. 安装BIND软件 在两台服务器上安装BIND软件及其相关组件: ```bash yum install bind bind-chroot -y ``` 确保软件安装成功后,继续进行下一步配置[^1]。 #### 2. 关闭防火墙和SELinux 为了确保DNS服务正常运行,需要关闭防火墙和SELinux,并同步时间: ```bash systemctl stop firewalld systemctl disable firewalld setenforce 0 sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config ``` 此外,可以使用`chrony`或其他工具来同步两台服务器的时间。 #### 3. 配置DNS服务器 编辑主DNS服务器配置文件`/etc/named.conf`,添加以下内容: ```bash options { directory "/var/named"; }; zone "linux.com" { type master; file "linux.com.zone"; allow-transfer { 192.168.152.11; }; }; zone "1.1.10.in-addr.arpa" { type master; file "10.1.1.zone"; }; ``` 保存文件后,创建正向区域文件`/var/named/linux.com.zone`和反向区域文件`/var/named/10.1.1.zone`。例如,正向区域文件内容如下: ```bash $TTL 86400 @ IN SOA ns01.linux.com. admin.linux.com. ( 2023010101 28800 7200 86400 3600 ) @ IN NS ns01.linux.com. @ IN NS ns02.linux.com. ns01 IN A 192.168.140.10 ns02 IN A 192.168.140.11 ``` 反向区域文件内容类似,根据实际IP地址范围调整。 #### 4. 配置DNS服务器 在从DNS服务器上编辑`/etc/named.conf`,添加以下内容: ```bash options { directory "/var/named"; }; zone "linux.com" { type slave; file "slaves/linux.com.zone"; masters { 192.168.140.10; }; }; ``` 保存后,启动或重启`named`服务以应用更改: ```bash systemctl restart named ``` 检查区域文件语法是否正确: ```bash named-checkzone linux.com /var/named/linux.com.zone ``` 如果语法无误,服务将正常运行[^2]。 #### 5. 启动并验证服务 启动DNS服务并设置开机自启: ```bash systemctl start named systemctl enable named ``` 使用`dig`命令测试DNS解析功能: ```bash dig @192.168.140.10 linux.com ``` 如果返回正确的记录,则表示配置成功[^3]。 ### 注意事项 - 确保所有文件权限正确,避免因权限问题导致服务无法启动。 - 如果网络环境复杂,可能需要额外配置路由或NAT规则。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值