云原生学习筑基 ~ 组网必备知识点 ~ DNS服务 (二)

本文涉及的产品
全局流量管理 GTM,标准版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
云解析 DNS,旗舰版 1个月
简介: 云原生学习筑基 ~ 组网必备知识点 ~ DNS服务 (二)

五、搭建DNS服务器#


5.1、Bind#


Bind是一款开源的DNS软件,全称:Berkeley Internet Name Domain 由美国加州大学伯克利分享开发、维护。

支持unix、window。BIND现在由互联网系统协会(Internet Systems Consortium)负责开发和维护。

那下文主要就是记录如何使用Bind软件搭建DNS服务以及搭建主从DNS服务。软件人家已经写好了,对使用者来说都很友好,只要改一改配置文件然后启动就OK(重点是理解那些参数都是啥意思)。

DNS域名解析会使用:udp/53

主从DNS服务之间的数据传输使用:tcp/53

其实如果你没有自建dns域名解析服务的需求,看到这里就可以结束了。如果以后可能会有这个记得收藏。


5.2、系统环境准备#


  • 调整yum源


yum install epel-release -y


  • 关闭SELinux、firewalld


# 临时关闭SELinux
setenforce 0
# 永久关闭SElinux
vi /etc/selinux/config
#SELINUX=enforcing #注释掉
#SELINUXTYPE=targeted #注释掉
SELINUX=disabled #增加
# 重启
# 关闭防火墙,注意一定要关闭防火墙
# 不然后面使用bind9自建dns时其他的服务器无法和自建的dns服务器通信~
# 不然etcd集群也没法搭建起来~
systemctl stop firewalld
# 为了不在重启后再去手动的关闭防火墙,所以直接将其禁用掉~
systemctl enable firewalld


  • 安装必要的工具


yum install wget net-tools telnet tree nmap sysstat dos2unix bind-utils -y


5.3、安装#


在hdss7-11上执行命令:


yum install bind -y


检测bind版本


rpm -qa bind


查看bind都有哪些文件


rpm -ql bind


了解配置文件


man 5 xxx.conf


5.4、查看bind的相关文件#


通过如下命令可以找到Bind的主配置文件named.conf的位置


# 软件名叫bind,但是bin文件进程名称叫named
[root@localhost ~]# rpm -ql bind | grep etc
/etc/logrotate.d/named # 日志轮转的配置
/etc/named
/etc/named.conf # 主配置文件
/etc/named.iscdlv.key
/etc/named.rfc1912.zones # zone文件,用于定义域
/etc/named.root.key
/etc/rndc.conf
/etc/rndc.key
/etc/rwtab.d/named


查看程序常用bin文件位置


[root@localhost ~]# rpm -ql bind | grep sbin
/usr/sbin/named # 程序启动文件
/usr/sbin/named-checkconf # 检查配置文件语法(named.conf、named.rfc1912.zones)
/usr/sbin/named-checkzone # 检查区域文件语法的命令


查看服务的日志文件位置


[root@localhost ~]# rpm -ql bind | grep named.log
/var/log/named.log


其他动态文件的位置


[root@localhost ~]# rpm -ql bind | grep var
/var/log/named.log # 日志文件
/var/named
/var/named/data
/var/named/dynamic
/var/named/named.ca # 根域名服务器配置(所有DNS服务器都知道根域名服务器在哪里)
/var/named/named.empty 
/var/named/named.localhost # 正向解析区域文件的模版
/var/named/named.loopback # 反向解析区域文件的模版
/var/named/slaves # 从DNS服务器的下载文件的默认路径


5.5、查看bind的主配置文件#


[root@localhost ~]# cat /etc/named.conf
options {
  /*
    监听方式,服务监听指定ip的53号端口
    服务器可能有多张网卡,any表示所有网卡监听53端口的DNS解析请求
    todo 可以个实验:1、ip指定为本机ip。2、ip指定为同网段随便的ip
  */
  listen-on port 53 { 127.0.0.1; any;}; /**/
  /*数据文件目录*/
  directory   "/var/named";
  /*DNS缓存位置*/
  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";
  recursing-file  "/var/named/data/named.recursing";
  secroots-file   "/var/named/data/named.secroots";
  /*
    允许哪些client来查询dns服务,默认是localhost。
    any表示所有人都能进行dns查询
  */
  allow-query     { localhost;any; };
  /*是否递归*/
  recursion yes;
  /*DNS安全扩展机制,默认开启,直接关闭即可*/
  dnssec-enable no;
  dnssec-validation no;
  /* Path to ISC DLV key */
  bindkeys-file "/etc/named.root.key";
  managed-keys-directory "/var/named/dynamic";
  pid-file "/run/named/named.pid";
  session-keyfile "/run/named/session.key";
};
logging {
        channel default_debug {
                file "data/named.run";
                severity dynamic;
        };
};
/*之所以全部DNS服务器都知道根域名服务器的位置,就是下面的配置在生效*/
zone "." IN {
  type hint;
  file "named.ca";
};
/*子配置文件*/
include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";


修改完主配置文件后使用如下命令检验是否改错了


[root@localhost ~]# named-checkconf


5.6、查看域配置文件 - named.rfc1912.zones#


[root@localhost ~]# cat /etc/named.rfc1912.zones
// 正向模版,从域名=>ip地址
// localhost.localdomain 为域名
// named.localhost为该域对应的配置文件,它位于/var/named/
// allow-update表示是否允许slave更新master的区域文件
zone "localhost.localdomain" IN { 
  type master;
  file "named.localhost";
  allow-update { none; }; 
};
// 反向模版,从ip地址=>域名
// 1.0.0.127 看着怪怪的,其实他是ip地址反过来写了。而且也要求反过来写
zone "1.0.0.127.in-addr.arpa" IN {
  type master;
  file "named.loopback";
  allow-update { none; };
};


5.7、查看某个具体的域的配置文件#


[root@localhost ~]# ll /var/named/
总用量 16
drwxrwx--- 2 named named    6 4月  29 22:05 data
drwxrwx--- 2 named named    6 4月  29 22:05 dynamic
-rw-r----- 1 root  named 2253 4月   5 2018 named.ca
-rw-r----- 1 root  named  152 12月 15 2009 named.empty
-rw-r----- 1 root  named  152 6月  21 2007 named.localhost
-rw-r----- 1 root  named  168 12月 15 2009 named.loopback
drwxrwx--- 2 named named    6 4月  29 22:05 slaves


看一个正向解析的域的配置文件named.localhost


[root@localhost ~]# cat /var/named/named.localhost
$TTL 1D # 缓存的生命周期,默认1D表示1天
@ IN SOA  @ rname.invalid. ( # ()中是slave相关配置
          0 ; serial # 更新序列号,当这个文件有变动时,需要将这个序列号+1,然后slave会向master同步数据
          1D  ; refresh # slave从master中同步最新数据的时间间隔
          1H  ; retry # slave从master中下载数据失败之后,隔多久的时间再重试
          1W  ; expire # slave中区域文件的过期时间,w是周
          3H )  ; minimum # salve上缓存的最小有效时间
  NS  @
  A 127.0.0.1
  AAAA  ::1
# @:表示当前域,也就是 named.rfc1912.zones 中的zone的名称
# IN:表示Internet,互联网
# SOA:表示开始授权
# rname.invalid.  是邮箱地址,因为@符号有特殊含义,所以这里的邮箱使用.分隔
# NS: 全称NameServer 表示DNS服务器
# A:正向的Ipv4解析
# AAAA:IPv6


看一个反向解析的域的配置文件named.loopback


[root@localhost ~]# cat /var/named/named.loopback
$TTL 1D
@ IN SOA  @ rname.invalid. (
          0 ; serial 
          1D  ; refresh
          1H  ; retry
          1W  ; expire
          3H )  ; minimum
  NS  @
  A 127.0.0.1
  AAAA  ::1
  PTR localhost.
# 大部分参数和第一个文件相同
# PTR表示反向解析


5.8、实验前提前抛出一个问题#


可以通过下面的方式配置网卡的dns服务器的地址


[root@localhost named]# cat /etc/sysconfig/network-scripts/ifcfg-eth0
TYPE=Ethernet
BOOTPROTO=none
DEFROUTE=yes
NAME=eth0
DEVICE=eth0
ONBOOT=yes
IPADDR=10.4.7.7
NETMASK=255.255.255.0
GATEWAY=10.4.7.2
DNS1=10.4.7.2


比如网卡配置文件中指定的dns服务器地址是:10.4.7.2

另外系统上还运行着NetworkManager进程,它的作用之一将DHCP中获取的DNS信息写入/etc/resolv.conf


[root@localhost named]# ps -elf | grep NetworkManager
4 S root       6172      1  0  80   0 - 137970 poll_s 08:18 ?       00:00:00 /usr/sbin/NetworkManager --no-daemon
0 S root       7237   7080  0  80   0 - 28181 pipe_w 09:00 pts/0    00:00:00 grep --color=auto NetworkManager


也就是将我们设置的dns服务器地址,更新进下面的文件


[root@localhost named]# cat /etc/resolv.conf
nameserver 10.4.7.2


那么问题来了:

我们本机的ip是10.4.7.7,然后我们在本机自建的dns服务时又需要指定dns服务的ip地址,那既然本机就是dns服务器,那指定的dns服务的地址肯定是本机的ip地址10.4.7.7,那这和NetworkManager更新入/etc/resolv.conf的ip地址是不同的。

而且通过nslookup ${域名} 进行域名解析时,它会去使用/etc/resolv.conf里面的dns去解析域名,而不是我们自己在本机搭建的dns服务。


如果你非想用nsloopup验证我们自己的dns服务是否正常,可以使用如下命令


[root@localhost named]# echo nameserver 10.4.7.7 >  /etc/resolv.conf


5.9、实验:搭建DNS正向解析服务#


实验目的:实现将www.meng.com解析成192.168.1.2

1、修改/etc/named.conf中的监听方式为全网监听、允许所有人访问dns服务、关闭安全验证机制

2、修改子配置文件/etc/named.rfc1912.zones添加meng.com域。注意这个meng.com域也会往下分层,比如:www.meng.comwiki.meng.comfamily.meng.com


[root@localhost etc]# vi /etc/named.rfc1912.zones
// 添加如下配置
zone "meng.com" IN {
        type master;
        file "named.meng.zone";
        allow-update { none; };
};


3、创建named.meng.zone配置文件,meng.com域分层的详细逻辑就在这个named.meng.zone配置文件中定义。


[root@localhost etc]# rpm -ql bind |  grep named.localhost
/usr/share/doc/bind-9.11.4/sample/var/named/named.localhost
/var/named/named.localhost
[root@localhost etc]# cp /var/named/named.localhost /var/named/named.meng.zone
# 注意将named.meng.zone文件的所属组改成named
# 否则会以为named无法使用root文件而导致DNS服务不能解析meng.zone域
[root@localhost named]# chown -R root:named named.meng.zone
[root@localhost etc]# vi /var/named/named.meng.zone
# 按需修改配置文件
$TTL 1D
@       IN SOA meng.com. rname.invalid. (
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
# 下面这两行指定了dns服务器的nameServer是meng.com、ip地址是10.4.7.7(它自己)
# dns1是自定义的dns服务的名称,叫啥都行
@       NS      dns1.meng.com.
dns1    A       10.4.7.7
# 在meng.com域中添加一个www主机,A记录表示是一个正向解析。解析结果为192.168.1.2
www     A       192.168.1.2


4、检查配置文件


[root@localhost etc]# rpm -ql bind | grep sbin/named
/usr/sbin/named
/usr/sbin/named-checkconf
/usr/sbin/named-checkzone
/usr/sbin/named-compilezone
/usr/sbin/named-journalprint
[root@localhost etc]# named-checkconf named.conf
[root@localhost etc]# named-checkconf named.rfc1912.zones
[root@localhost named]# named-checkzone named.meng.zone named.meng.zone
zone named.meng.zone/IN: loaded serial 0
OK


5、开启服务


[root@localhost named]# rpm -ql bind | grep named
/etc/logrotate.d/named
/etc/named
...
/usr/sbin/named
/usr/sbin/named-checkconf
[root@localhost sbin]# systemctl start named
[root@localhost sbin]# systemctl enable named
Created symlink from /etc/systemd/system/multi-user.target.wants/named.service to /usr/lib/systemd/system/named.service.
[root@localhost sbin]# netstat -luntp | grep 53
tcp        0      0 10.4.7.7:53             0.0.0.0:*               LISTEN      25833/named
tcp        0      0 127.0.0.1:53            0.0.0.0:*               LISTEN      25833/named
tcp        0      0 127.0.0.1:953           0.0.0.0:*               LISTEN      25833/named
tcp6       0      0 ::1:953                 :::*                    LISTEN      25833/named
udp        0      0 10.4.7.7:53             0.0.0.0:*                           25833/named
udp        0      0 127.0.0.1:53            0.0.0.0:*                           25833/named


6、查看或修改本机的dns服务器地址+验证实验效果


[root@localhost named]# echo nameserver 10.4.7.7 >  /etc/resolv.conf
[root@localhost named]# nslookup www.meng.com
Server:   10.4.7.7
Address:  10.4.7.7#53
Name: www.meng.com
Address: 192.168.1.2


通过dig命令验证


[root@localhost named]# dig @10.4.7.7 www.meng.com
; <<>> DiG 9.11.4-P2-RedHat-9.11.4-26.P2.el7_9.5 <<>> @10.4.7.7 www.meng.com
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 65534
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 2
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;www.meng.com.      IN  A
;; ANSWER SECTION:
www.meng.com.   86400 IN  A 192.168.1.2
;; AUTHORITY SECTION:
meng.com.   86400 IN  NS  dns1.meng.com.
;; ADDITIONAL SECTION:
dns1.meng.com.    86400 IN  A 10.4.7.7
;; Query time: 0 msec
;; SERVER: 10.4.7.7#53(10.4.7.7)
;; WHEN: 四 8月 19 08:32:16 CST 2021
;; MSG SIZE  rcvd: 92


通过host命令查看


[root@localhost named]# host www.meng.com
www.meng.com has address 192.168.1.2


5.10、实验:搭建DNS反向解析服务#


1、修改/etc/named.conf中的监听方式为全网监听、允许所有人访问dns服务、关闭安全验证机制

2、修改子配置文件/etc/named.rfc1912.zones添加meng.com域反向解析


[root@localhost named]# vi /etc/named.rfc1912.zones
zone "1.168.192.in-addr.arpa" IN {
        type master;
        file "named.meng.loopback";
        allow-update { none; };
};


3、创建、编辑子配置文件named.meng.loopback


[root@localhost named]# cp -p named.loopback named.meng.loopback
[root@localhost named]# vi named.meng.loopback
$TTL 1D
@       IN SOA  meng.com. rname.invalid. (
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
# 下面这两行也可以简写成一行:@       NS      dns1.meng.com.
# 之所以能简写是因为dns1在正向解析配置中已经定义好了
@       NS      dns2.meng.com.
dns2    A       10.4.7.7
2       PTR     www.meng.com. # 2是1.168.192网段的最后一位,(192.168.1.2)


4、重启服务


[root@localhost named]# systemctl  restart named


5、验收


[root@localhost named]# dig -x 192.168.1.2 @10.4.7.7
; <<>> DiG 9.11.4-P2-RedHat-9.11.4-26.P2.el7_9.5 <<>> -x 192.168.1.2 @10.4.7.7
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 4572
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;2.1.168.192.in-addr.arpa.  IN  PTR
;; ANSWER SECTION:
2.1.168.192.in-addr.arpa. 86400 IN  PTR www.meng.com.
;; AUTHORITY SECTION:
1.168.192.in-addr.arpa. 86400 IN  NS  dns2.meng.com.
;; Query time: 0 msec
;; SERVER: 10.4.7.7#53(10.4.7.7)
;; WHEN: 四 8月 19 08:57:51 CST 2021
;; MSG SIZE  rcvd: 98


或者


[root@localhost named]# nslookup 192.168.1.2
2.1.168.192.in-addr.arpa  name = www.meng.com.
[root@localhost named]# host 192.168.1.2
2.1.168.192.in-addr.arpa domain name pointer www.meng.com.
相关文章
|
1月前
|
存储 缓存 算法
分布式锁服务深度解析:以Apache Flink的Checkpointing机制为例
【10月更文挑战第7天】在分布式系统中,多个进程或节点可能需要同时访问和操作共享资源。为了确保数据的一致性和系统的稳定性,我们需要一种机制来协调这些进程或节点的访问,避免并发冲突和竞态条件。分布式锁服务正是为此而生的一种解决方案。它通过在网络环境中实现锁机制,确保同一时间只有一个进程或节点能够访问和操作共享资源。
67 3
|
7天前
|
存储 Cloud Native 块存储
EBS深度解析:云原生时代企业级块存储
企业上云的策略,从 Cloud-Hosting 转向 Serverless 架构。块存储作为企业应用上云的核心存储产品,将通过 Serverless 化来加速新的计算范式全面落地。在本话题中,我们将会介绍阿里云块存储企业级能力的创新,深入解析背后的技术细节,分享对未来趋势的判断。
|
9天前
|
Kubernetes Cloud Native 云计算
云原生技术深度解析:重塑企业IT架构的未来####
本文深入探讨了云原生技术的核心理念、关键技术组件及其对企业IT架构转型的深远影响。通过剖析Kubernetes、微服务、容器化等核心技术,本文揭示了云原生如何提升应用的灵活性、可扩展性和可维护性,助力企业在数字化转型中保持领先地位。 ####
|
10天前
|
运维 Kubernetes Cloud Native
Kubernetes云原生架构深度解析与实践指南####
本文深入探讨了Kubernetes作为领先的云原生应用编排平台,其设计理念、核心组件及高级特性。通过剖析Kubernetes的工作原理,结合具体案例分析,为读者呈现如何在实际项目中高效部署、管理和扩展容器化应用的策略与技巧。文章还涵盖了服务发现、负载均衡、配置管理、自动化伸缩等关键议题,旨在帮助开发者和运维人员掌握利用Kubernetes构建健壮、可伸缩的云原生生态系统的能力。 ####
|
15天前
|
Kubernetes Cloud Native 调度
云原生批量任务编排引擎Argo Workflows发布3.6,一文解析关键新特性
Argo Workflows是CNCF毕业项目,最受欢迎的云原生工作流引擎,专为Kubernetes上编排批量任务而设计,本文主要对最新发布的Argo Workflows 3.6版本的关键新特性做一个深入的解析。
|
17天前
|
域名解析 缓存 网络协议
浏览器中输入URL返回页面过程(超级详细)、DNS域名解析服务,TCP三次握手、四次挥手
浏览器中输入URL返回页面过程(超级详细)、DNS域名解析服务,TCP三次握手、四次挥手
|
17天前
|
监控 Cloud Native 持续交付
云原生技术深度解析:重塑现代应用开发与部署范式####
本文深入探讨了云原生技术的核心概念、关键技术组件及其在现代软件开发中的重要性。通过剖析容器化、微服务架构、持续集成/持续部署(CI/CD)等关键技术,本文旨在揭示云原生技术如何促进应用的敏捷性、可扩展性和高可用性,进而推动企业数字化转型进程。不同于传统摘要仅概述内容要点,本部分将融入具体案例分析,直观展示云原生技术在实际应用中的显著成效与挑战应对策略,为读者提供更加丰富、立体的理解视角。 ####
|
18天前
|
安全 测试技术 数据安全/隐私保护
原生鸿蒙应用市场开发者服务的技术解析:从集成到应用发布的完整体验
原生鸿蒙应用市场开发者服务的技术解析:从集成到应用发布的完整体验
|
24天前
|
人工智能 Cloud Native Java
云原生技术深度解析:从IO优化到AI处理
【10月更文挑战第24天】在当今数字化时代,云计算已经成为企业IT架构的核心。云原生作为云计算的最新演进形态,旨在通过一系列先进的技术和实践,帮助企业构建高效、弹性、可观测的应用系统。本文将从IO优化、key问题解决、多线程意义以及AI处理等多个维度,深入探讨云原生技术的内涵与外延,并结合Java和AI技术给出相应的示例。
83 1
|
29天前
|
数据安全/隐私保护 流计算 开发者
python知识点100篇系列(18)-解析m3u8文件的下载视频
【10月更文挑战第6天】m3u8是苹果公司推出的一种视频播放标准,采用UTF-8编码,主要用于记录视频的网络地址。HLS(Http Live Streaming)是苹果公司提出的一种基于HTTP的流媒体传输协议,通过m3u8索引文件按序访问ts文件,实现音视频播放。本文介绍了如何通过浏览器找到m3u8文件,解析m3u8文件获取ts文件地址,下载ts文件并解密(如有必要),最后使用ffmpeg合并ts文件为mp4文件。

相关产品

  • 云解析DNS