服务器 > 服务器 > Linux

Linux中配置DNS全过程

20人参与 2025-12-05 Linux

一、什么是dns

dns (domain name system) 是域名服务 ,它是由解析器和域名服务器组成的。

域名服务器是指保存有该网络中所有主机的域名和对应ip地址,并具有将域名转换为ip地址功能的服务器。(将网址解析成ip,或者将ip解析成网址)

将域名映射为ip地址的过程就称为"域名解析"。

在internet上域名与ip地址之间是一对一(或者多对一)的,也可采用dns轮循实现一对多,域名虽然便于人们记忆,

但机器之间只认ip地址,它们之间的转换工作称为域名解析,域名解析需要由专门的域名解析服务器来完成,dns就是进行域名解析的服务器。

网址有一个专有名词:完全合格域名

完全合格域名 = 主机名称 + 域名(根域 + 顶级域 + 二级域)

根域:.

顶级域:分为组织域和国家或地区域。

二级域:二级域注册到个人、组织或者公司名称,如baidu、taobao等

主机名称:主机名称处于域名空间的最底层,主机名与上述各级域名结合构成fqnd(完全合格域名)

每个域用一个点号“.”分开

以www.baidu.com为例:

一个完全合格域名只能对应一个ip,一个ip可以对应多个完全合格域名。

二、dns查询方式(两种)

三、dns解析方式

四、dns服务搭建

搭建dns服务有两种方式:

dns服务器类型:

1、在没有dns之前,怎样解决

/etc/hosts 本地解析配置文件

正常情况下:两台主机相互ping ip地址是可以ping通的,但是ping不通主机名

主机1:

[root@stw ~]# ping 192.168.100.20
ping 192.168.100.20 (192.168.100.20) 56(84) bytes of data.
64 bytes from 192.168.100.20: icmp_seq=1 ttl=64 time=0.801 ms
64 bytes from 192.168.100.20: icmp_seq=2 ttl=64 time=1.06 ms
^c
--- 192.168.100.20 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1001ms
rtt min/avg/max/mdev = 0.801/0.933/1.065/0.132 ms

[root@stw ~]# ping stw2.example.com
ping: stw2.example.com: name or service not known

在本地解析文件中加上对方的ip地址以及对应映射的主机名

[root@stw ~]# vim /etc/hosts
[root@stw ~]# ping stw2.example.com
ping stw2.example.com (192.168.100.20) 56(84) bytes of data.
64 bytes from stw2.example.com (192.168.100.20): icmp_seq=1 ttl=64 time=0.561 ms
64 bytes from stw2.example.com (192.168.100.20): icmp_seq=2 ttl=64 time=8.10 ms
^c
--- stw2.example.com ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1001ms
rtt min/avg/max/mdev = 0.561/4.332/8.103/3.771 ms

注意:只在主机1中添加,则只有主机1能ping通主机2,主机2仍然ping不通主机1,想要主机2也ping通主机1,需要在主机2的配置文件中中也写入主机1的ip地址与主机名的映射关系。

2、配置主dns

(1)配置yum仓库,安装软件包

[root@stw ~]# cd /etc/yum.repos.d/
[root@stw yum.repos.d]# ls
centos-base.repo  centos-debuginfo.repo  centos-media.repo    centos-vault.repo
centos-cr.repo    centos-fasttrack.repo  centos-sources.repo
[root@stw yum.repos.d]# rm -rf *
[root@stw yum.repos.d]# ls
[root@stw yum.repos.d]# vim server.repo
[root@stw yum.repos.d]# cat server.repo
[aa]
name=aa1
baseurl=file:///mnt
enabled=1
gpgcheck=0
[root@stw yum.repos.d]# mount /dev/cdrom /mnt
mount: /dev/sr0 is write-protected, mounting read-only
[root@stw yum.repos.d]# yum -y install bind bind-chroot

作用:

(2)编辑主配置文件/etc/named.conf

[root@stw ~]# vim /etc/named.conf 

(3)编辑全局配置文件(三个地方需要更改)

更改对应的域名和映射的网段,服务类型:master(主dns),正向解析与反向解析的文件名

[root@stw ~]# vim /etc/named.rfc1912.zones

把文件复制到对应目录下

[root@stw ~]# cd /var/named/
[root@stw named]# cp -p named.localhost stw.com
[root@stw named]# cp -p named.empty com.stw
[root@stw named]# ls
chroot  com.stw  data  dynamic  named.ca  named.empty  named.localhost  named.loopback  slaves  stw.com

ttl 1d 缓存周期

soa起始授权机构(后面的@改成服务器的主机名)

(4)编辑正向解析文件

[root@stw ~]# cd /var/named
[root@stw named]# ls
chroot  com.stw  data  dynamic  named.ca  named.empty  named.localhost  named.loopback  slaves  stw.com
[root@stw named]# vim stw.com

(5)编辑反向解析的文件

[root@stw named]# vim com.stw

(6)重启服务,关掉防火墙,更改selinux

[root@stw named]# systemctl restart named
[root@stw named]# systemctl enable named
created symlink from /etc/systemd/system/multi-user.target.wants/named.service to /usr/lib/systemd/system/named.service.
[root@stw named]# systemctl stop firewalld.service 
[root@stw named]# systemctl disable firewalld.service 
removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service.
removed symlink /etc/systemd/system/dbus-org.fedoraproject.firewalld1.service.
[root@stw named]# getenforce 
enforcing
[root@stw named]# setenforce 0
[root@stw named]# getenforce 
permissive

(7)客户端更改网卡的dns(指向服务器端),重启服务,查看是否解析

[root@stw2 ~]# cd /etc/sysconfig/network-scripts/
[root@stw2 network-scripts]# vim ifcfg-ens33
[root@stw2 network-scripts]# systemctl restart network
[root@stw2 network-scripts]# nslookup
> stw.example.com           //正向解析
server:		192.168.100.10
address:	192.168.100.10#53

name:	stw.example.com
address: 192.168.100.10
> 192.168.100.10    //反向解析
server:		192.168.100.10
address:	192.168.100.10#53

10.100.168.192.in-addr.arpa	name = stw.example.com.
> 

3、配置辅助dns

(1)配置yum仓库,安装软件包(略)

(2)编辑主配置文件/etc/named.conf

[root@stw2 ~]# vim /etc/named.conf

(3)编辑全局配置文件(四个地方需要更改)

更改对应的域名和映射的网段,服务类型:slave(辅助dns),正向解析与反向解析的文件名,定义主dns地址(告诉辅助dns主dns的地址)

[root@stw2 ~]# vim /etc/named.rfc1912.zones 

辅助dns中,正向解析文件和反向解析文件不需要编辑

(4)重启服务,关掉防火墙,更改selinux

[root@stw2 ~]# systemctl stop firewalld.service 
[root@stw2 ~]# systemctl disable firewalld.service 
removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service.
removed symlink /etc/systemd/system/dbus-org.fedoraproject.firewalld1.service.
[root@stw2 ~]# setenforce 0
[root@stw2 ~]# getenforce 
permissive
[root@stw2 ~]# vim /etc/selinux/config 
[root@stw2 ~]# systemctl restart named
[root@stw2 ~]# systemctl enable named
created symlink from /etc/systemd/system/multi-user.target.wants/named.service to /usr/lib/systemd/system/named.service.
[root@stw2 ~]# cd /var/named/
[root@stw2 named]# ls
data  dynamic  named.ca  named.empty  named.localhost  named.loopback  slaves
[root@stw2 named]# cd slaves
[root@stw2 slaves]# ls
com.stw  stw.com

(5)更改网卡配置文件

[root@stw2 ~]# cd /etc/sysconfig/network-scripts/
[root@stw2 network-scripts]# vim ifcfg-ens33
[root@stw2 network-scripts]# cd
[root@stw2 ~]# systemctl restart network

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。

(0)

您想发表意见!!点此发布评论

推荐阅读

Nginx Mirror模块实现流量镜像的示例代码

12-05

Nginx中IP地址透传的应用实现

12-05

在Linux上搭建本地Docker Registry并实现远程连接过程

12-05

Linux中替换某个目录下所有文件中的特定字符串的方法

12-05

Ubuntu虚拟机配置静态IP的流程步骤

12-05

redhat服务器更换为centos yum源方式

12-05

猜你喜欢

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论