1 名字解析介绍和DNS
1.根域: 全球根服务器节点只有13个,10个在美国,1个荷兰,1个瑞典,1个日本 2.一级域名:Top Level Domain: tld 三类:组织域、国家域(.cn, .ca, .hk, .tw)、反向域 com, edu, mil, gov, net, org, int,arpa 3.二级域名:wang.org 4.三级域名:study.wang.org 5.最多可达到127级域名
1.2 DNS服务工作原理
权威dns: 存实际访问网站的ip地址
公网dns
在阿里云上域名解析,记录类型 A 将域名执行一个IPV4地址,最为常用 主机记录: <u>m49</u>.ldc.cn (FQDN开头端) 记录值: ip地址 TTL: 缓存 注意: 域名需要备案(中国特色)
公司内部dns
最常用的是bind
#bind服务装在 10.0.0.150 [root@rocky ~]# yum -y install bind [root@rocky ~]# systemctl enable --now named # 53端口 和 953端口(管理端口,不关注) udp53查询域名用 tcp53主从同步用(同步udp53也要用) #查看自己当前dns [root@rocky ~]# cat /etc/resolv.conf #把网卡配置dns指向自己 [root@rocky ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33 ... DNS1=127.0.0.1 [root@rocky ~]# nmcli connection reload [root@rocky ~]# nmcli connection up ens33 #查看是否生效 [root@rocky ~]# cat /etc/resolv.conf nameserver 127.0.0.1 #安装完dns,自己就有了解析能力 [root@rocky ~]# ping www.baidu.com PING www.a.shifen.com (36.155.132.3) 56(84) bytes of data. 64 bytes from 36.155.132.3: icmp_seq=1 ttl=128 time=17.8 ms #修改监听端口,让其他主机也能使用本地的bind服务 [root@rocky ~]# vim /etc/named.conf options { listen-on port 53 { localhost; }; #当前主机所有ip,也可把这一行删了或//注释 ... allow-query { localhost;any; }; #允许所有人,也可以注释//相当于any #检查语法 [root@rocky ~]# named-checkconf #重启或通过rndc让bind重新加载(通过953端口) [root@rocky ~]# rndc reload #另一台机器可以通过配置dns为10.0.0.150,使用对方的dns服务即可访问外网
设置内网域名
#nginx机器 10.0.0.152 [root@ubuntu ~]#apt update ;apt install nginx -y [root@ubuntu ~]#vim /var/www/html/index.html <h1>welcome to M49 website</h1> #bind服务机器 #域名和数据文件对应关系(数据文件记录了名称ip的解析关系) [root@rocky ~]# vim /etc/named.rfc1912.zones zone "wang.org" IN { #不要加www,那是主机名,这里写的是域名 type master; #类型(主服务器) #文件后缀名叫什么无所谓,习惯性叫zone file "wang.org.zone"; #路径在主配置named.conf中directory约定了,默认/var/named }; [root@rocky ~]# cd /var/named #写入资源记录(里面对齐无所谓),参考下面资源记录 [root@rocky named]# vim wang.org.zone $TTL 86400 @ IN SOA dns.wang.org. admin.magedu.com ( 2024101215 3H 10M 1D 1W ) NS dns1 dns1 A 10.0.0.150 www A 10.0.0.152 db A 10.0.0.153 #修改权限保证安全 [root@rocky named]# chmod 640 wang.org.zone #给组权限,因为bind是以named组启动的 [root@rocky named]# chgrp named wang.org.zone #通过域名检查数据库语法是否符合要求 [root@rocky named]# named-checkzone wang.org /var/named/wang.org.zone #让配置生效 [root@rocky ~]# rndc reload #其他机器dns改成10.0.0.150,即可访问 www.wang.org(window修改VMnet8的dns)
2.6 各种资源记录
#/var/named/named.localhost为案例 记录类型:A, AAAA, PTR, SOA, NS, CNAME, MX 1.SOA:Start Of Authority,起始授权记录;一个区域解析库有且仅能有一个SOA记录,必须位于解析库的第一条记录 2.A:internet Address,作用,FQDN --> IP 3.NS:Name Server,专用于标明当前区域的DNS服务器 4.AAAA:FQDN --> IPv6 5.CNAME : Canonical Name,别名记录 #资源记录定义的 name [TTL] IN rr_type value 缓存有效期(默认单位s) 固定写法 类型 ip地址 例: $TTL 86400 #开头定义变量,下面TTL就不用在写86400 #SOA的value: 服务器名 邮箱名 (版本(主从通过该变化判断数据改变) 从库拉取主库配置时间间隔 前面拉取失败 重试时间间隔 同步一直失败多久就失效 如果不存在的记录缓存一段时间) #同步有两种方式,一种主主动推到从(主资源版本变化),一种从定时从主拉数据 @(本域名简写,或写wang.org.) IN SOA dns.wang.org.(服务器名,随便写) admin.magedu.com(管理者邮箱,没用) ( 2024101215 3H 10M 1D 1W ) #@(上面写了,这里可省略) IN(上面写了,这里可省略) NS dns1(dns服务器名,下面要a记录解成ip;如果2个,写2行) NS dns1 dns1 A 10.0.0.150 #www(简写,或写www.wang.org.) 86400(可省略) IN(上面写了,这里可省略) A 10.0.0.150 www A 10.0.0.152 db A 10.0.0.153
把bind做成主从
#再准备一台机器做备节点 10.0.0.156 [root@rocky ~]# yum -y install bind #修改监听端口,让其他主机也能使用本地的bind服务 [root@rocky ~]# vim /etc/named.conf options { listen-on port 53 { localhost; }; #当前主机所有ip,也可把这一行删了或//注释 ... allow-query { localhost;any; }; #允许所有人,也可以注释//相当于any #从节点也要维护和主节点一样的域名 [root@rocky ~]# vim /etc/named.rfc1912.zones zone "wang.org" IN { type slave; #类型(从) masters {10.0.0.150;}; #会自动拷贝过来 file "slaves/wang.org.slave.zone"; #一般放在slaves下,文件名随意 }; [root@rocky ~]# systemctl enable --now named #查看,已经从主节点拷贝过来(非文本文件,无法查看) [root@rocky ~]# ll /var/named/slaves/ total 4 -rw-r--r-- 1 named named 284 Oct 12 17:35 wang.org.slave.zone #此时其他机器可以通过从dns解析www.wang.org [root@rocky ~]# dig www.wang.org @10.0.0.156 #在新的服务器上 10.0.0.157 #修改dns配置,dns1和dns2分别对应一个主dns,一个从dns [root@rocky ~]# dig www.wang.org ;; ANSWER SECTION: www.wang.org. 86400 IN A 10.0.0.152 ;; AUTHORITY SECTION: wang.org. 86400 IN NS dns1.wang.org. ;; ADDITIONAL SECTION: dns1.wang.org. 86400 IN A 10.0.0.150 ;; Query time: 0 msec ;; SERVER: 10.0.0.150#53(10.0.0.150) ;; WHEN: Sat Oct 12 17:54:40 CST 2024 ;; MSG SIZE rcvd: 120 #此时把10.0.0.150的主dns关闭,再次测试 [root@rocky ~]# dig www.wang.org ;; QUESTION SECTION: ;www.wang.org. IN A ;; ANSWER SECTION: www.wang.org. 86400 IN A 10.0.0.152 ;; AUTHORITY SECTION: wang.org. 86400 IN NS dns1.wang.org. ;; ADDITIONAL SECTION: dns1.wang.org. 86400 IN A 10.0.0.150 ;; Query time: 2 msec ;; SERVER: 10.0.0.156#53(10.0.0.156) #从dns返回 ;; WHEN: Sat Oct 12 17:56:34 CST 2024 ;; MSG SIZE rcvd: 120 #主节点修改 10.0.0.150 #主从同步还需要更改资源记录,追加从dns [root@rocky named]# vim wang.org.zone $TTL 86400 @ IN SOA dns.wang.org. admin.magedu.com ( 2024101215 3H 10M 1D 1W ) NS dns1 NS dns2 dns2 A 10.0.0.156 #这里上下顺序无所谓 dns1 A 10.0.0.150 www A 10.0.0.152 db A 10.0.0.153 #让配置生效 [root@rocky ~]# rndc reload #现在只要修改wang.org.zone并修改版本号,从库就会跟着变更配置
清除bind服务缓存
[root@rocky ~]#rndc flush
4.8 启用DNS客户端缓存功能
在高并发的服务器场景中,对DNS的服务器查询性能有较高的要求,如果在客户端启用DNS缓存功能,可以 大幅减轻DNS服务器的压力,同时也能提高DNS客户端名称解析速度
4.8.1 CentOS 启用DNS客户端缓存
CentOS 默认没有启用DNS客户端缓存,安装nscd(Name Service Cache Daemon,名称服务缓存守护进 程)包可以支持DNS缓存功能
减少DNS服务器压力,提高DNS查询速度
#这个软件只要装上,服务一启,就不用管了,就可以做缓存了 [root@centos7 ~]#yum -y install nscd [root@centos7 ~]#systemctl enable --now nscd #查看缓存统计信息 [root@centos7 ~]#nscd -g #清除DNS客户端缓存 [root@centos7 ~]#nscd -i hosts
4.8.2 Ubuntu 启用DNS客户端缓存
ubuntu 默认会启用DNS客户端缓存
[root@ubuntu1804 ~]#systemctl status systemd-resolved.service
windows自带dns客户端缓存
5 实现反向解析区域 (了解)
7 实现子域
wang.org父域 两种情况: wang.org sh.wang.org #子域和父域放在同一台dns,节约成本 bj.wang.org #把bj.wang.org单独放在一个dns,从父域DNS告知子域DNS
#第一种情况,子域和父域放在同一台dns (从逻辑上来讲,只是一条记录) #主dns [root@rocky ~]cd /var/named [root@rocky named]# vim wang.org.zone $TTL 86400 @ IN SOA dns.wang.org. admin.magedu.com ( 2024101215 3H 10M 1D 1W ) NS dns1 NS dns2 dns2 A 10.0.0.156 dns1 A 10.0.0.150 www A 10.0.0.152 db A 10.0.0.153 www.sh A 1.1.1.1 #追加 [root@rocky ~]# rndc reload #配了对应dns的客户端查看 [root@rocky ~]# dig www.sh.wang.org www.sh.wang.org. 86400 IN A 1.1.1.1
#第二种情况,父域和子域在不同DNS #主服务器上要做子域的委派,委派给另外的dns来管理 [root@rocky named]# vim wang.org.zone $TTL 86400 @ IN SOA dns.wang.org. admin.magedu.com ( 2024101215 3H 10M 1D 1W ) NS dns1 NS dns2 bj NS bjdns #分配给bjdns的dns dns2 A 10.0.0.156 dns1 A 10.0.0.150 bjdns A 10.0.0.158 www A 10.0.0.152 db A 10.0.0.153 www.sh A 1.1.1.1 [root@rocky ~]# rndc reload #在bjdns的dns搭建dns 10.0.0.158 [root@rocky ~]# bash install_dns.sh #这里客户端查询采用的是递归查询的方式,父域dns去查子域dns获取ip再返回客户端
8 实现 DNS 转发(缓存)服务器
8.2 转发方式
8.2.1 全局转发
客户端访问一台dns1,如果dns1没有,它会转发到dns2上,dns2上没有,会去外网查,如果有返回dns1,dns1返回客户端 如果dns2没找到,告诉dns1没有,dns1有两种策略: first: 选择自己去外网查 only: 选择放弃直接返回 #准备一台机器作为dns2,装dns 10.0.0.38 #在dns1上 #修改主配置文件 [root@rocky named]# vim /etc/named.conf options { forwarders { 10.0.0.38;}; forward first; #dns2查不到,它自己查 #forward only; #dns2查不到就算了 ... dnssec-enable no; #这两项安全dns验证用的,要关(不能注释,默认为yes) dnssec-validation no; [root@rocky named]#named-checkonf [root@rocky named]#rndc reload #客户端测试 [root@centos7 ~]#dig www.x.com #测试当中会有缓存,两台bind服务上可以清下缓存,看效果 [root@rocky named]# rndc flush
8.2.2 特定区域转发
仅转发对特定的区域的请求,比全局转发优先级高
zone "ZONE_NAME" IN { type forward; forward first|only; forwarders { ip;}; };
first:先转发至指定DNS服务器,如果无法解析查询请求,则本服务器再去根服务器查询 only: 先转发至指定DNS服务器,如果无法解析查询请求,则本服务器将不再去根服务器查询
9 实现智能 DNS
9.2 CDN (Content Delivery Network)内容分发网络
对用户来说,只要把网站地址改个别名(比如阿里域名解析设置别名),指向cdn供应商地址即可
9.2.3 CDN 案例
使用以下链接测试访问上面图片链接
站长之家 https://tool.chinaz.com/speedtest
9.3 智能DNS相关技术 (了解,正常都是花钱买)
9.3.1 bind中ACL
ACL:把一个或多个地址归并为一个集合,并通过一个统一的名称调用
注意:只能先定义后使用;因此一般定义在配置文件中,处于options的前面
acl acl_name { ip; net/prelen; …… }; #范例: acl test_net { 172.16.0.0/24; 10.0.0.0/24; }; acl test_net { 192.168.10.0/24; };
9.3.4 view 视图
9.3.4.1 View:视图,将ACL和区域数据库实现对应关系,以实现智能DNS
1.一个bind服务器可定义多个view,每个view中可定义一个或多个zone 2.每个view用来匹配一组客户端 3.多个view内可能需要对同一个区域进行解析,但使用不同的区域解析库文件 注意: 1.一旦启用了view,所有的zone都只能定义在view中 2.仅在允许递归请求的客户端所在view中定义根区域 3.客户端请求到达时,是自上而下检查每个view所服务的客户端列表
#范例 view test_view { #view名称 match-clients { test_net; }; zone "wang.org" { #这些可以写到include配置中 type master; file "wang.org.zone.bj"; }; include "/etc/named.rfc1912.zones.test"; }; view product_view { match-clients { product_net; }; #zone "wang.org" { # type master; # file "wang.org.zone.sh"; #}; include "/etc/named.rfc1912.zones.product"; };
标签:10.0,dns,服务,wang,域名,DNS,org,root,rocky From: https://www.cnblogs.com/ludingchao/p/18461621