@

一、为啥写这篇文章?

DNS(domain name system)域名管理

说一下为啥会整理这么一篇文章,难道工作会用到嘛?不不不,作为CRUD工程师,日常工作那是一准用不到本文跟大家分享的知识。

但是当你想学云原生技术栈时,你无论如何都不能跳过这篇文章所分享的DNS等计算机网络的知识点。所以这其实是一篇筑基的文章。

二、DNS的作用

TCP/IP网络协议要求想要互联的机器要有唯一的IP地址,因为TCP/IP协议是基于IP地址通信的。

但是ip地址是一大长串数据,也不好记。所以就衍生出一个叫主机识别码的东西来。这个主机识别码ip地址一样,都是唯一存在的。比如:www.qq.com就是一个主机识别码

TCP/IP这道坎,主机识别码就不能独立存在,我们需要一个机制,可以帮我们将主机识别码转换成ip地址DNS系统扮演的就是这个角色。

本专题公众号首发,感兴趣可以考虑关注,不迷路:

点击阅读原文,体验感更好哦......

点击阅读原文,体验感更好......

三、域

域名是分层的

比如齐鲁工业大学的域名是:qlu.edu.cn

其实cn后面还有个. 表示根域名服务器,但是都省略了

其中的cn表示中国,edu表示教育,qlu是齐鲁工业大学的名字。这样大家看到这个域名时,即使不知道它具体是哪所高校,但是起码知道它代表一所学校。

qlu.edu.cn 还可以继续往下分,如www.qlu.edu.cnpaper.qlu.edu.cnfamily.qlu.edu.cn等等

四、DNS工作原理

一说DNS服务器大家都感觉云里雾里,感觉DNS服务器很高大上的样子。

它确实是台服务器,确切的说是专门运行着有域名解析功能的某个软件的服务器(比如后文中的bind软件),既然是个软件,那软件启动后肯定得监听某个端口,这个端口

讲一下当我们在浏览器输入:www.baidu.com时,它时如何找到域名对应的ip地址的!

1、首先浏览器会缓存域名、ip的对应关系。

2、浏览器中没缓存,就会查找电脑本地的hosts文件,这里面会配置域名和ip的对应关系。

  1. ~ % cat /etc/hosts
  2. ##
  3. # Host Database
  4. #
  5. # localhost is used to configure the loopback interface
  6. # when the system is booting. Do not change this entry.
  7. ##
  8. 127.0.0.1 localhost
  9. 255.255.255.255 broadcasthost
  10. ::1 localhost

3、如果本地hosts文件中也没有域名对应的ip地址,我们的主机就会像它的dns服务器发起询问。在mac系统可以查看:网络偏好设置 ,找到dns服务器的相关信息。

然后点击高级,查看当前我的mac的DNS服务器地址

在mac或者linux中都可以通过如下的命令查询dns服务器的位置

  1. ~ % cat /etc/resolv.conf

在mac或者linux中都可以通过如下的命令对域名进行解析

  1. # 会使用resolv.conf记录的dns服务器,对域名进行解析
  2. ~ % nslookup baidu.com
  3. Server: 172.22.1.253
  4. Address: 172.22.1.253#53
  5. Name: baidu.com
  6. Address: 220.181.38.148
  7. Name: baidu.com
  8. Address: 220.181.38.251

4、免费的DNS服务器ip

ip 公司
8.8.8.8 谷歌
114.114.114.114 百度

5、DNS服务器接受到域名解析的请求后,就会查询该域名对应的ip是多少,而且他本身也存在缓存机制,如果它确定自己不能找到域名对应的ip地址的话,就会将这个dns解析请求转发给根DNS服务器,根域名域名服务器会告诉我们的DNS服务器说:我知道 com. 域名服务器的位置,你去问他吧!

然后我们的DNS服务器找到com.域名服务器说:你知道www.baidu.com 对应的ip地址吗? 然而com.服务器会说:我知道baidu.com.域名服务器在哪里,你去问他吧!

然后我们的DNS服务器找到baidu.com.域名服务器说:你知道www.baidu.cn 对应的ip地址吗? baidu.com.服务器会说:www.com.com 的ip地址是 xxx.xxx.xxx.xxx

五、搭建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源
  1. yum install epel-release -y
  • 关闭SELinux、firewalld
  1. # 临时关闭SELinux
  2. setenforce 0
  3. # 永久关闭SElinux
  4. vi /etc/selinux/config
  5. #SELINUX=enforcing #注释掉
  6. #SELINUXTYPE=targeted #注释掉
  7. SELINUX=disabled #增加
  8. # 重启
  9. # 关闭防火墙,注意一定要关闭防火墙
  10. # 不然后面使用bind9自建dns时其他的服务器无法和自建的dns服务器通信~
  11. # 不然etcd集群也没法搭建起来~
  12. systemctl stop firewalld
  13. # 为了不在重启后再去手动的关闭防火墙,所以直接将其禁用掉~
  14. systemctl enable firewalld
  • 安装必要的工具
  1. yum install wget net-tools telnet tree nmap sysstat dos2unix bind-utils -y

5.3、安装

在hdss7-11上执行命令:

  1. yum install bind -y

检测bind版本

  1. rpm -qa bind

查看bind都有哪些文件

  1. rpm -ql bind

了解配置文件

  1. man 5 xxx.conf

5.4、查看bind的相关文件

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

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

查看程序常用bin文件位置

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

查看服务的日志文件位置

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

其他动态文件的位置

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

5.5、查看bind的主配置文件

  1. [root@localhost ~]# cat /etc/named.conf
  2. options {
  3. /*
  4. 监听方式,服务监听指定ip的53号端口
  5. 服务器可能有多张网卡,any表示所有网卡监听53端口的DNS解析请求
  6. todo 可以个实验:1、ip指定为本机ip。2、ip指定为同网段随便的ip
  7. */
  8. listen-on port 53 { 127.0.0.1; any;}; /**/
  9. /*数据文件目录*/
  10. directory "/var/named";
  11. /*DNS缓存位置*/
  12. dump-file "/var/named/data/cache_dump.db";
  13. /*统计文件*/
  14. statistics-file "/var/named/data/named_stats.txt";
  15. /*内存统计文件*/
  16. memstatistics-file "/var/named/data/named_mem_stats.txt";
  17. recursing-file "/var/named/data/named.recursing";
  18. secroots-file "/var/named/data/named.secroots";
  19. /*
  20. 允许哪些client来查询dns服务,默认是localhost。
  21. any表示所有人都能进行dns查询
  22. */
  23. allow-query { localhost;any; };
  24. /*是否递归*/
  25. recursion yes;
  26. /*DNS安全扩展机制,默认开启,直接关闭即可*/
  27. dnssec-enable no;
  28. dnssec-validation no;
  29. /* Path to ISC DLV key */
  30. bindkeys-file "/etc/named.root.key";
  31. managed-keys-directory "/var/named/dynamic";
  32. pid-file "/run/named/named.pid";
  33. session-keyfile "/run/named/session.key";
  34. };
  35. logging {
  36. channel default_debug {
  37. file "data/named.run";
  38. severity dynamic;
  39. };
  40. };
  41. /*之所以全部DNS服务器都知道根域名服务器的位置,就是下面的配置在生效*/
  42. zone "." IN {
  43. type hint;
  44. file "named.ca";
  45. };
  46. /*子配置文件*/
  47. include "/etc/named.rfc1912.zones";
  48. include "/etc/named.root.key";

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

  1. [root@localhost ~]# named-checkconf

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

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

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

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

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

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

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

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

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

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

  1. [root@localhost named]# cat /etc/sysconfig/network-scripts/ifcfg-eth0
  2. TYPE=Ethernet
  3. BOOTPROTO=none
  4. DEFROUTE=yes
  5. NAME=eth0
  6. DEVICE=eth0
  7. ONBOOT=yes
  8. IPADDR=10.4.7.7
  9. NETMASK=255.255.255.0
  10. GATEWAY=10.4.7.2
  11. DNS1=10.4.7.2

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

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

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

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

  1. [root@localhost named]# cat /etc/resolv.conf
  2. 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服务是否正常,可以使用如下命令

  1. [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

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

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

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

4、检查配置文件

  1. [root@localhost etc]# rpm -ql bind | grep sbin/named
  2. /usr/sbin/named
  3. /usr/sbin/named-checkconf
  4. /usr/sbin/named-checkzone
  5. /usr/sbin/named-compilezone
  6. /usr/sbin/named-journalprint
  7. [root@localhost etc]# named-checkconf named.conf
  8. [root@localhost etc]# named-checkconf named.rfc1912.zones
  9. [root@localhost named]# named-checkzone named.meng.zone named.meng.zone
  10. zone named.meng.zone/IN: loaded serial 0
  11. OK

5、开启服务

  1. [root@localhost named]# rpm -ql bind | grep named
  2. /etc/logrotate.d/named
  3. /etc/named
  4. ...
  5. /usr/sbin/named
  6. /usr/sbin/named-checkconf
  7. [root@localhost sbin]# systemctl start named
  8. [root@localhost sbin]# systemctl enable named
  9. Created symlink from /etc/systemd/system/multi-user.target.wants/named.service to /usr/lib/systemd/system/named.service.
  10. [root@localhost sbin]# netstat -luntp | grep 53
  11. tcp 0 0 10.4.7.7:53 0.0.0.0:* LISTEN 25833/named
  12. tcp 0 0 127.0.0.1:53 0.0.0.0:* LISTEN 25833/named
  13. tcp 0 0 127.0.0.1:953 0.0.0.0:* LISTEN 25833/named
  14. tcp6 0 0 ::1:953 :::* LISTEN 25833/named
  15. udp 0 0 10.4.7.7:53 0.0.0.0:* 25833/named
  16. udp 0 0 127.0.0.1:53 0.0.0.0:* 25833/named

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

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

通过dig命令验证

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

通过host命令查看

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

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

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

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

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

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

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

4、重启服务

  1. [root@localhost named]# systemctl restart named

5、验收

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

或者

  1. [root@localhost named]# nslookup 192.168.1.2
  2. 2.1.168.192.in-addr.arpa name = www.meng.com.
  3. [root@localhost named]# host 192.168.1.2
  4. 2.1.168.192.in-addr.arpa domain name pointer www.meng.com.

六、搭建主从DNS服务

主从DNS服务其实就是在多台相同环境机器上,都安装好Bind软件,再按照一定的规则修改主从的配置文件。

要求主从DNS服务器的时间要相同,关于时间如何同步,可以参考下面的ntp

6.1、搭建时间同步服务器-ntp

10.4.7.9上安装时间同步服务器

  1. ~]# yum install -y ntp

修改配置文件ntp.conf

  1. ~]# rpm -ql ntp | grep conf
  2. /etc/ntp.conf
  3. /etc/sysconfig/ntpd
  4. /usr/share/man/man5/ntp.conf.5.gz
  5. ~]# vi /etc/ntp.conf

启动

  1. [root@ntp-server ~]# rpm -ql ntp | grep bin
  2. /usr/bin/ntpstat
  3. /usr/sbin/ntp-keygen
  4. /usr/sbin/ntpd
  5. /usr/sbin/ntpdc
  6. /usr/sbin/ntpq
  7. /usr/sbin/ntptime
  8. /usr/sbin/tickadj
  9. [root@ntp-server ~]# systemctl start ntpd
  10. [root@ntp-server ~]# systemctl enable ntpd
  11. Created symlink from /etc/systemd/system/multi-user.target.wants/ntpd.service to /usr/lib/systemd/system/ntpd.service.

在客户端验证时间同步服务器是否正常启动

  1. # 登陆10.4.7.0所在的其他网段的机器,验证如下
  2. ~]# ntpdate 10.4.7.9
  3. 20 Aug 08:37:47 ntpdate[8399]: adjust time server 10.4.7.9 offset -0.017571 sec

在主从机器上添加crontab定时任务同步时间

参考之前的笔记:https://www.cnblogs.com/ZhuChangwu/p/11519940.html

  1. ~]# crontab -e
  2. */2 * * * * ntpdate 10.4.7.9 &> /dev/null
  3. [root@localhost ~]# crontab -l
  4. */2 * * * * ntpdate 10.4.7.9 &> /dev/null

6.2、开始搭建

dns-master:10.4.7.7

dns-slave: 10.4.7.8

6.2.1、在master上的操作

1、设置允许哪些slave向自己同步数据

  1. # 之前的配置如下
  2. zone "meng.com" IN {
  3. type master;
  4. file "named.meng.zone";
  5. allow-update { none; };
  6. };
  7. # 可以将allow-update { none; };删掉
  8. # 也可以改写成: allow-update { 10.4.7.8; };

2、重启

6.2.2、在slave上的设置

1、使用crontab像时间同步服务器同步时间

2、修改/etc/named.conf配置文件(同master)

3、修改/etc/named.rfc1912.zones

  1. # master的named.rfc1912.zones自定义正向zone配置如下
  2. zone "meng.com" IN {
  3. type master;
  4. file "named.meng.zone";
  5. allow-update { none; };
  6. };
  7. # 响应的slave的追加配置如下
  8. ~]# vi /etc/named.rfc1912.zones
  9. zone "meng.com" IN {
  10. type slave;
  11. # 因为slave的zone文件是从master中拉取过来的
  12. # 所以slaves其实是个相对路径
  13. # 全路径是:/var/named/slaves/named.meng.zone , /var/named在named.conf中有定义
  14. file "slaves/named.meng.zone";
  15. # 指定master位置
  16. masters {10.4.7.7;};
  17. };

4、重启

6.2.3、客户端的设置

为客户端设置两个dns服务。

  1. echo nameserver 10.4.7.7 > /etc/resolv.conf
  2. echo nameserver 10.4.7.8 > /etc/resolv.conf

这样,当需要进行域名解析时,优先使用master。当master挂了后,客户端会使用备用的dns服务解析域名。

云原生学习筑基 ~ 组网必备知识点 ~ DNS服务的更多相关文章

  1. 《CNCF × Alibaba云原生技术公开课》知识点自测(一):第一堂“云原生”课

    (单选)1.容器启动后,我会时常 SSH 进入到容器里然后写很多文件.请问这破坏了云原生理念了吗? A. 否   B. 是 (单选)2.云原生架构必须选型 Kubernetes 方案. A. 否  B ...

  2. .NET团队送给.NET开发人员的云原生学习资源

    企业正在迅速采用云的功能来满足用户需求,提高应用程序的可伸缩性和可用性.要完全拥抱云并优化节约成本,就需要在设计应用程序时考虑到云的环境,也就是要用云原生的应用开发方法.这意味着不仅要更改应用程序的构 ...

  3. .NET平台系列31:.NET团队送给.NET开发人员的云原生学习资源汇总

    系列目录     [已更新最新开发文章,点击查看详细] .NET Core 启动于2016年,跟K8S同年诞生,既拥有着悠久的历史积累,又集成了当下最新的设计理念,加上.NET团队持续对容器技术的官方 ...

  4. 【笔记】《CNCF × Alibaba云原生技术公开课》知识点

    一,课时1:第一堂“云原生”课 二,课时2:容器基本概念 1.已运行 docker run -d -t —name demo ubuntu top 命令, 是否可以在 demo 这个容器内部停止容器? ...

  5. 云原生学习笔记(3)——Kubernetes基本概念

    学习地址:https://developer.aliyun.com/lesson_1651_13078?spm=5176.270689.1397405.6.716ef5f8Q9z1z3#_13078 ...

  6. 《CNCF × Alibaba云原生技术公开课》知识点自测(二):容器基本概念

    (单选)1.已运行 docker run -d -t —name demo ubuntu top 和 docker run --name demo-x --pid container:demo ubu ...

  7. 《CNCF × Alibaba云原生技术公开课》知识点自测(三):Kubernetes核心概念

    (单选)1.Kubernetes的中文含义是___. A. 船   B.舵手  C.容器平台  D.起重机 (单选) 2.Kubectl是_____. A. 一个与Kubernetes集群进行交互.管 ...

  8. [转帖]从 SOA 到微服务,企业分布式应用架构在云原生时代如何重塑?

    从 SOA 到微服务,企业分布式应用架构在云原生时代如何重塑? 2019-10-08 10:26:28 阿里云云栖社区 阅读数 54   版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权 ...

  9. 第七章 云原生生态的基石 Kubernetes

    7.1 Kubernetes架构 K8s的核心组件: etcd: 协同存储,负责保存整个集群的状态. API:资源操作的唯一入口. controller manager: 维护集群的状态,执行故障检测 ...

随机推荐

  1. 迈达斯midas Gen 2019 2.1 中文汉化安装教程

    midas Gen 2019 v2.1 for win是一款关于结构设计有限元分享的工具,分为建筑领域.桥梁领域.岩土领域.仿真领域四个大类.具有人性化的操作界面,且采用了优秀的的计算机显示技术,是建 ...

  2. C++ 定义默认值void locals_index(int reg, int offset = 1);

    看jvm源码的时候怎么也看不懂,来回看了几次了就是关于iload 6 指令的解析 def(Bytecodes::_lload , ubcp|____|____|____, vtos, ltos, ll ...

  3. vue知识点---element el-date-picker 插件默认时间属性default-value怎么赋值?

    参考网址: http://www.imooc.com/wenda/detail/509359 默认值,你放到 v-model里面就好. v-model="time" data(){ ...

  4. Git常用命令和基础使用

    Git 参考:廖雪峰的Git教程 Git 常用命令 git config --global user.name "name" #配置git使用用户 git config --glo ...

  5. Python小白的数学建模课-12.非线性规划

    非线性规划是指目标函数或约束条件中包含非线性函数的规划问题,实际就是非线性最优化问题. 从线性规划到非线性规划,不仅是数学方法的差异,更是解决问题的思想方法的转变. 非线性规划问题没有统一的通用方法, ...

  6. java小程序之随机任务发布器

    需求 自定义任务 随机定时 随机排序 集合输出 搭建 简单项目,所以我使用java 的maven来搭建一个控制台程序,并且使用excel来记录任务 创建任务类(sub) package com.mic ...

  7. preg_replace函数/e 模式下的代码执行+一道例题

    目录 例一 例二 补充 看一道ctf题-----[BJDCTF2020]ZJCTF,不过如此 参考链接 例一 源码: <?php preg_replace('/(.*)/ei', 'strtol ...

  8. Bugku-web-web8

    可以看到题目提示了一个txt的东西,猜测目录下会有flag.txt这个文件. 通过代码审计我们可以知道得到flag的条件,访问flag.txt得到一串字符. 那么payload就很好构造了,$f的值是 ...

  9. 双非本科Android开发,如何逆袭拿到大厂 Offer?

    从2020年3月18日投出第一份暑期实习简历至今,已经过去400多天.我也尘埃落定,即将去CVTE做Android开发. 休息了很长时间,如今已经能够很平静地回首这段历程,写下这篇文,致敬曾经走过的漫 ...

  10. Linux命令(三)vim编辑器的常用命令

    .subTitle { background: rgba(51, 153, 0, 0.53); border-bottom: 1px solid rgba(0, 102, 0, 1); border- ...