Linux下怎么搭建DNS与服务器

59次阅读
没有评论

共计 5005 个字符,预计需要花费 13 分钟才能阅读完成。

这篇文章主要介绍“Linux 下怎么搭建 DNS 与服务器”,在日常操作中,相信很多人在 Linux 下怎么搭建 DNS 与服务器问题上存在疑惑,丸趣 TV 小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Linux 下怎么搭建 DNS 与服务器”的疑惑有所帮助!接下来,请跟着丸趣 TV 小编一起来学习吧!

DNS 基本概念

本节概念,如果已知可以直接跳到 搭建 DNS 服务器

其实不管是开发还是运维,多少都接触过 DNS, 一个域名长这样,一个点一个域,最多四个域, 用域名也就是一个字符串来标记一个网址的方式,是为了让人更好记,计算机才不在乎是 ip 还是用域名呢!

Linux 下怎么搭建 DNS 与服务器

顶级域又可以分为三类:

通用顶级域(.com 商业机构,.org 非营利性组织,.net 网络服务机构等)

国家顶级域(.cn 中国,.uk 英国,.us 美国,.jp 日本)

反向域(基础建设顶级域,.arpa)

我们如果自己注册一个域名,完全不用在乎用哪个顶级域名,只是一个潜规则,给别人知道大概你的网站可能有什么用,我们通常在 ICP 那里申请的域名是二级域名,申请下来以后就可以随意自己加三级、四级域名,因为很多人顶级域名是一样的,申请的是二级域名,然后所有的三级四级域名你都可以自己加,都属于你,按这种逻辑来看域名系统就像一颗树

Linux 下怎么搭建 DNS 与服务器

我们任何人都可以申请域名,只要花几十块钱就可以用他来搭网站,比如我在腾讯云上申请的域名 coding3min.com 就是 60 块一年的。

域名解析的过程

域名解析有多种类型,www、@、*、mail、二级域名、手机网站对应不同的用法。

Linux 下怎么搭建 DNS 与服务器

可以在腾讯云上看到提示,通常 www 为前缀的是主域名,但是输入麻烦,我把他重定向到了 coding3min.com 上,也就是 @方式,各个的作用看上图。

记录类型又分为下面这几种

Linux 下怎么搭建 DNS 与服务器

常用的是 A 类型,直接指向一个服务器的  ip,CNAME 类型是指向另一个域名,比如我们用 github 给我们提供的表态网站服务就可以搭建起来一个免费的博客会提供一个域名用来中转,我们也可以借助自己的域名来解析到 MX 类型,搭建自己后缀的邮件服务器。

下面是一个详细的域名解析过程,划重点! 这里考试要考

Linux 下怎么搭建 DNS 与服务器

如上图,

在浏览器中输入 www.baidu.com 域名,操作系统会先检查自己本地的 hosts 文件是否有这个网址映射关系,如果有,就先调用这个 IP   地址映射,完成域名解析。

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

如果 hosts 与本地 DNS 解析器缓存都没有相应的网址映射关系,首先会找 TCP/IP 参数中设置的首选 DNS 服务器,在此我们叫它本地 DNS   服务器,此服务器收到查询时,如果要查询的域名,包含在本地配置区域资源中,则返回解析结果给客户机,完成域名解析,此解析具有权威性。

如果要查询的域名,不由本地 DNS 服务器区域解析,但该服务器已缓存了此网址映射关系,则调用这个 IP 地址映射,完成域名解析,此解析不具有权威性。

如果本地 DNS 服务器本地区域文件与缓存解析都失效,则根据本地 DNS 服务器的设置 (是否设置转发器) 进行查询,如果未用转发模式,本地 DNS 就把请求发至  “根 DNS 服务器”,“根 DNS 服务器”收到请求后会判断这个域名 (.com) 是谁来授权管理,并会返回一个负责该顶级域名服务器的一个  IP。本地 DNS 服务器收到 IP 信息后,将会联系负责.com 域的这台服务器。这台负责.com 域的服务器收到请求后,如果自己无法解析,它就会找一个管理.com 域的下一级 DNS 服务器地址 (baidu.com) 给本地 DNS 服务器。当本地 DNS 服务器收到这个地址后,就会找 baidu.com 域服务器,重复上面的动作,进行查询,直至找到 www.baidu.com 主机。

如果用的是转发模式,此 DNS 服务器就会把请求转发至上一级 DNS 服务器,由上一级服务器进行解析,上一级服务器如果不能解析,或找根 DNS   或把转请求转至上上级,以此循环。

不管是本地 DNS 服务器

用还是转发,还是根提示,最后都是把结果返回给本地 DNS 服务器,由此 DNS 服务器再返回给客户机。

DNS 查询方式包含递归和迭代,解析方式包含正向解析和反向解析。我们知道了原理,实战一下看看吧!

搭建本地 DNS 服务器

如果你用的是 kubernetes 来部署服务,他的 kube-dns 组件会自动做好域名解析,让服务和服务之间用特定的名称规则自动完成服务发现。

DNS 只是一种协议,真正提供服务的是 bind 软件,因此,现在来安装它:

sudo yum install bind-utils bind bind-chroot

安装后有几个目录或文件是需要记得的:

/etc/named.conf: 主配置文件

/etc/sysconfig/named: 配置是否启动 chroot 及额外的参数

/var/named: 数据库文件存放目录,存放主机名对应 ip 的文件

/var/run/named: named 程序执行时 pid-file 文件存放目录(在 ubuntu 系统中,目录为 /run/named)

知道了这几个重要配置文件和目录后,下面开始配置,我们把 baidu.com 的流量劫持了试试看

修改配置文件前一个重要习惯是先复制一份,这样改错了方便恢复。

改主配置文件 named.conf, 找到相应的配置位置,改成我这个

listen-on port 53 { any; }; listen-on-v6 port 53 { any; }; allow-query { any; }; recursion yes;

意思是开放 53 号端口对于任意地址的监听,允许所有主机对我们进行访问,拒绝递归查询方式,使用迭代查询方式,增加资源利用率。

拉到底部可以看到 include 了这个配置文件,你可以在里面对正解 (反解) 区域进行定义。

include  /etc/named.rfc1912.zones

在 /etc/named.rfc1912.zones 底部添加如下内容。

zone  baidu.com  IN { // 一级域名为.com、二级域名为.baidu type master; // 类型为主 DNS 服务器  file  named.baidu.com  // 指向正解文件为 /var/named/named.baidu.com };

修改 /var/named/named.baidu.com 文件如下,其中 127.0.0.1 这个 ip 你可以改成你想要的。

$TTL 600 ; 定义下列所有记录缓存在客户端的时间  @ IN SOA dns.yu.com. root.localhost ( 0 ; serial #序列号,用于主从 dns 中判断是否为最新版本  1H ; refresh #一小时更新一次  15M ; retry #若连接不上,等待 15 分钟后重新尝试连接  1W ; expire #超过一周仍无法下载便放弃下载  3D ) ; minimum # 客户端找服务端做 dns 解析时,否定答案的缓存时间为 3 天  @ IN NS dns.baidu.com. ; NS 记录表明了 dns 服务器的 SDQN 为 dns.baidu.com. dns.baidu.com. IN A 127.0.0.1 ;  下面三条 A 记录表明了域内主机的 IP 地址  www.baidu.com. IN A 127.0.0.1 ftp IN A 127.0.0.1

重启服务,检查 SELinux 并开启防火墙的 dns 服务

systemctl restart named #重启服务  setenforce 0 #关闭 SELinux firewall-cmd --add-service=dns # 开启防火墙的 dns 服务

修改 DNS 服务器指向

在 linux 中,DNS 服务器指向的配置有固定的文件,如下文件就有一个主服务器,一个备服务器,等搭建好 DNS 服务器后就是改这个文件。

$ cat /etc/resolv.conf nameserver 192.168.3.1 nameserver 114.114.114.114

测试

ping www.baidu.com PING www.baidu.com (127.0.0.1) 56(84) bytes of data. 64 bytes from VM-0-11-centos (127.0.0.1): icmp_seq=1 ttl=64 time=0.006 ms 64 bytes from VM-0-11-centos (127.0.0.1): icmp_seq=2 ttl=64 time=0.021 ms ^C --- www.baidu.com ping statistics --- 2 packets transmitted, 2 received, 0% packet loss, time 999ms rtt min/avg/max/mdev = 0.006/0.013/0.021/0.008 ms

也可以用 nslookup 来查看域名的解析,如果改完了新的 DNS 服务器的位置就可以用这个命令来查询。

$ nslookup coding3min.com Server: 192.168.3.1 Address: 192.168.3.1#53 Non-authoritative answer: coding3min.com canonical name = coding3min.com.cdn.dnsv1.com. coding3min.com.cdn.dnsv1.com canonical name = 6yucorit.dispatch.spcdntip.com. Name: 6yucorit.dispatch.spcdntip.com Address: 112.67.251.116 Name: 6yucorit.dispatch.spcdntip.com Address: 113.105.165.183 Name: 6yucorit.dispatch.spcdntip.com Address: 113.96.98.77 Name: 6yucorit.dispatch.spcdntip.com Address: 125.78.252.121

Server 后的就是 DNS 服务器的地址

因为我用了 CDN,所以 DNS 解析出了多个地址,下面的 Address 比如 112.67.251.116 就是解析出来的真实 ip

DNS 协议运行在 UDP 协议之上,因此使用的 53 号端口,当没有办法查询到完整的信息时,就会再次以 TCP 协议来查询,因此,防火墙需要放行 TCP、UDP 的  53 号端口,端口号可以在 /etc/services 文件查看到:

cat /etc/services | grep domain domain 53/tcp # name-domain server domain 53/udp domaintime 9909/tcp # domaintime domaintime 9909/udp # domaintime

名词解释

DNS 服务器:运行 DNS 服务器程序的计算机,存储 DNS 数据库信息。

DNS 缓存:DNS 服务器在解析客户机的域名请求时,如果本地没有该域名的记录,则会询问其它 DNS 服务器,当其它域名将解析结果返回给 DNS   服务器时,DNS 将对应的记录保存在本地,生成 DNS 缓存,当下一次客户机再次请求时,DNS 服务器则可以直接使用缓存中的 DNS 记录。

DNS 查询方式:递归查询和迭代查询

递归查询:当客户机向 DNS 服务器发起域名解析请求时,DNS 服务器首先查看自己本机的 DNS 记录,如果没有则会向其它 DNS   服务器发起解析请求。迭代查询:当客户机向 DNS 服务器发起域名解析请求时,DNS 服务器不会给客户机解析地址,而是告诉客户机另外一台 DNS   服务器,客户机再向这台服务器发起地址解析请求。

正向解析和反向解析正向解析:指域名解析到 IP 地址的解析过程。反向解析:指 IP 地址解析到域名的解析过程。

到此,关于“Linux 下怎么搭建 DNS 与服务器”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注丸趣 TV 网站,丸趣 TV 小编会继续努力为大家带来更多实用的文章!

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-08-25发表,共计5005字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)