ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

网络network

2022-08-28 18:32:06  阅读:378  来源: 互联网

标签:10.0 named network 网络 域名 DNS 服务器 解析


网络network

基础network模型

OSI七层模型,一层一层封装数据帧(添加报文头),传过去之后再一层一层解封装(解封装掉报文头)

应用层:应用软件层面业务端口,例如http/https,ftp,sftp,smtp(25),除了在四层TCP IP+端口号的方式进行外,还需要检查http/https的url,cookie等是否合法,是基于url来实现的(四层就是靠IP+端口号)

表示层:将数据转化为合适的传输格式。例如字符编码等

会话层(session):负责数据传输,建立会话,两台电脑(服务器)通信连接,确保能够连接到,所以说,http-post/get请求请求就是一个session会话,服务端/客户端连接的会话

传输层:把传输表头加到数据包头,表头包含了传输数据需要的协议,例如TCP/UDP等传输协议,TCP三次握手确认(消息发送-消息接收反馈-消息成功反馈)

---四层转发方式为IP+端口号

网络层:决定数据的走向,路由交换,上层交换,网络报文,IP协议

设备:路由,由路由器上面的路由表实现路由条目的记录

数据链路层:局域网内的寻址,包括物理地址(MAC地址),ARP报文协议等,设备:交换机,数据帧(仅限于局域网)

物理层:在局域网上的传输数据帧,管理电脑媒体之间的传输,网线,网卡等,物理连接

img

交换机和集线器:交换机可以隔离冲突域,但是不能隔离广播域

交换机工作在数据链路层,集线器工作在物理层,路由器工作在网络层

交换机需要联通同一个网段内

路由器:可以联通两个不同的网段,路由转发,路由表自动学习

vlan技术:隔离广播域,类似路由器的技术,给不同的网段划分vlan隔离网段

vlan技术最多支持4096个

大二层vxlan环境:可以支持很多个vlan环境

网络抓包工具:tcpdump

tcpdump -i:截取指定网卡的数据包,比如tcpdump -i eth0

-n:+协议,比如tcpdump -i eth0 -n icmp/tcp等

tcpdump -i eth0 -n icmp:抓从eth0出去/进来的icmp协议数据包,因为网络协议的交换都是双向的,有请求(request)和接收回应(reply)

ping 192.168.0.3

img

-c:精简显示,只显示10个

网络协议TCP/IP

其实TCP/IP是多个协议的组合,是TCP/IP协议簇,包括TCP/IP/RIP/ICMP/SMTP/FTP等协议

TCP/IP表示架构(四层):

链路层---网络层---传输层---应用层(包括会话层、表示层、应用层)

img

tcp和udp之间的区别

tcp可靠 | udp高效

tcp长链接,保持会话久(session)| udp短连接,保持会话时间短

tcp适合email web浏览 下载业务(长连接不中断)| ucp适合声音流、视频流,不保存,即时

img

tcp端口的类别:

0-1023:系统服务的端口,专门给安装的Linux服务使用的,比如ssh(22),smtp(25),tcp(80),ssl(443)

1024-49151:用户端口分配给某些服务的,比如某些服务需要用到特殊用户的,比如MySQL(3306,MySQL用户),sql server(1433,rdsuser)等

49000-65535:动态端口,随机分配给客户端的,像tcp三次握手的syn客户端发送syn=1 seq=x的时候,就会给客户端分配一个这里的端口

tcp三次握手的过程

服务端的状态:LISTEN(收听),ESTABLISHED(建立TCP连接)

seq:请求序号,1--->2 seq=x,2--->1 ack=x+1 1--->2 seq=y 2--->1 ack=y+1

ack:响应序号

建立tcp连接的过程:由客户端发起的tcp连接请求,发送给客户端

第一次握手:发起三次握手请求,SYN=1(同步请求),seq=x(请求响应的序号是x)

第二次握手:SYN=1(响应SYN请求后给A发送SYN请求),seq=y(服务端请求客户端的回应),ack=x+1(服务端已经确认),ACK=1(响应SYN请求)

第三次握手:ACK=1(响应B的SYN请求),seq=x+1(seq永远是客户端发给服务端的,第二次握手ack=x+1,所以第三次握手seq要回x+1),ack=y+1(因为第二次握手seq回)

img

Client端:发送请求 Server端:LISTEN(监听)

SYN-SENT:同步已发送 SYN-RCVD:同步已收到,同时发送给你SYN

ESTABLISHED:建立好连接

【SYN请求】、seq=0

【SYN、ACK请求】、seq=0(服务端请求)、ack=1(服务端响应)

【ACK请求】、seq=1(ack请求)、ack=1(客户端响应)

img

为什么不是两次握手的原因?

A给B发消息,B响应了,但是A没响应B的请求,所以不成立;

消息的传输都是要响应了才算传输成功,就像ICMP协议,A ping B,如果ping不通(B没有响应),则ping执行不成功

四次握手:多余了,三次握手就能搞定

netstat和ss:查看系统的tcp/udp连接状态

netstat命令用法:

-a:all socket所有连接状态

-n:使用IP地址显示远程地址(foreign address),不解析端口的服务,直接显示端口

-t:tcp连接协议

netstat -ant:显示所有tcp的连接,使用IP地址代替域名(主机名)

img

-u:显示udp协议

-p:显示连接的协议/服务

-l:显示STATE为LISTEN的条目,可以去掉不打这个

img

-i:显示网卡列表

img

ss命令,用法基本和netstat保持一致,但是更加轻量级,显示更多更详细的TCP信息,比netstat更快

ss命令:直接操作内核

-t:显示tcp

-u:显示udp

-a:显示所有

-l:显示在LISTEN的端口

-n:显示端口,不解析为服务

-p:显示是什么服务,-p还能显示这个服务连接的pid(进程id)

img

IP地址的组成与划分子网

网络位:判断属于哪个网段

主机位:判断有多少个主机可用

A类、B类、C类地址:内网地址

计算可用主机数量:2^n-2---除去.0地址和广播位全1的地址

比如192.168.24.0/26掩码,可用主机数:2^6-2=62个主机可用,然后是以64为分界线来

大网段:/24,2^8=256-2=254个主机可用

我想划分4个网段,则是256/4=64个主机一个网段

/26的主机位,一个主机位可以使用64-2=62位,从1到63;一共可以划分4个IP段,4个端192.168.24.0/26--1-63

192.168.24.64/26--65-127

192.168.24.128/26--129-191

192.168.24.192/26--192--2

192.168.9.0/30,2^2-2=2个

划分子网的思路:从一个大网段内划分若干个小网段,将需要划分的资源隔离开来

典型分配k8s的网段,给的是172.16.25.0/24的网段,这个网段内我要划分4个网段使用

k8s-node-广州三区

k8s-node-广州四区

mysql-广州三区

redis-广州四区

所以需要划分4个段,掩码为26,即从原始网络位借2位,即为掩码位(划分的子网段数),同时可以划分4个段

每个段可用的主机数:2^n-2=62位,以64作为隔离

网络划分面试题

img

路由相关配置

route -n:查看网关,本地回环地址0.0.0.0的就是网关

img

DNS解析文件:/etc/resolv.conf

云上的一般都是云内的DNS服务器(内网DNS服务器)

img

路由表的构成

1.destination:目标地址,需要到达的

2.gateway:网关

3.netmask:子网掩码

4.flag:flag位

5.iface:网卡(接口)

相当做路由器使用服务器:开启ipv4转发功能

vim /etc/sysctl.conf文件中

添加net.ipv4.forward=1这条命令

执行sysctl -p使得这个文件配置生效

img

添加静态路由

-net:加网段(目标地址)

-host:加主机IP地址

route -n:查看路由表,查看网关,以便写下一跳

route add -net 192.168.0.0/24 gw 172.16.0.1 dev eth0

route add -host 172.16.9.1/24 gw 172.16.0.1 dev eth0

route add -net 0.0.0.0/0 gw 172.16.0.1

删除路由条目

route del -net xxx

ubuntu的网卡配置

查看IP地址:ip a | ifconfig

curl -s icanhazip.com

网卡(网络配置)目录:/etc/netplan/01-netcfg.yaml文件

注意:yaml文件编写的格式缩进一定要符合规定,同一个级别的yaml文件必须统一缩进,不能乱写

自动获取:

eth0:

dhcp4:true

img

netplan apply:应用网卡配置(更新配置)

VMware的三种网络连接模式

1.仅主机模式:直连主机上面的VMnet1,代表可以和主机直接通信(Cent OS 7网卡),但是无法访问到公网

2.桥接模式:与主机的以太网卡互连,可以出公网,直连公网,外面主机连接交换机(二层)

3.NAT模式:SNAT内网机器需要访问到公网,DNAT内网机器需要提供给外部机器访问(D作为源)

网络面试(加上网络子网规划的)

img

img

1.三次握手:

client端和server端

ifconfig eth0 | sed -n 2p | awk '{print $2}'

ifconfig eth0 | awk 'NR==2{print $2}'

ifconfig eth0 | grep -w inet | awk '{print $2}'---> grep -w查询出特定的单词,不加其他的字符

hostname -I

ifconfig eth0 192.168.0.2

vim /etc/sysconfig/network-scripts/ifcfg-eth0修改

重启网络服务

4.tcpdump

tcpdump的问题

DNS服务

主要是为了解决一个服务对应多个IP地址的问题。比如需要访问一个web服务(网站),后端有负载均衡,负载均衡后面挂了5个web服务器,5个web服务器都有各自的内网IP,那我访问该服务是访问哪个IP呢?

配置域名(WAF CNAME),CNAME通过DNS服务解析到SLB的IP地址,由SLB自己去轮询,那么访问的时候用户就会集中在一个入口去访问

域名基本格式

www.baidu.com:www作为主机名,baidu.com作为域名

前面的记录集(主机名)可以不一致,类似RDS的话,可以通过内网域名;redis可以通过redis的内网域名访问

rds.huaweicloud.com...redis.huaweicloud.com...,将这个解析到内网IP

配置到代码内,尽量是配置域名(不去写死IP地址),因为IP地址随时会变

类似刚刚的chrony.conf配置文件,配置的也是ntp服务器的域名地址

server ntp.myhuaweicloud.com iburst
server ntp.aliyun.com
server time1.cloud.tencent.com

配置hosts文件实现本地解析

实现本地解析的功能:配置本地hosts文件,本地解析,DNS会先去找本地解析

Linux:/etc/hosts
windows:C:\Windows\System32\drivers\etc\hosts
##配置/etc/hosts文件
192.168.244.128 master
192.168.244.132 slave1
192.168.244.133 slave2
192.168.244.136 manager

199.232.68.133 raw.githubusercontent.com

根域名:

顶级域名:.com,.net,.edu等,这些都是公网域名,也可以自己创建内网域名

一级域名:xxx.com,比如baidu.com,aliyun.com

二级域名(记录集):www.baidu.com,mirrors.aliyun.com,主机名,记录集随便添加;在哪里购买的域名,可以在本地/云上的DNS服务上面添加对应的记录集,比如说aliyun,可以在aliyun上面的DNS解析服务添加公网域名解析

也可以在private zone私网解析里面添加企业内网的解析

开源组织的域名:例如nginx.org,kubernetes.org,kernal.org

image-20220716110533069

DNS解析过程(找DNS服务器)

配置本机指向的DNS服务器

Linux:/etc/resolv.conf,DNS服务器指向云厂商的DNS服务器地址

cat /etc/resolv.conf 
# Generated by NetworkManager
search openstacklocal
nameserver 100.125.136.29
nameserver 100.125.1.250

windows:一般都是自动获取DNS地址,因为网卡一般都是DHCP的模式,你也可以手动配置DNS地址,这样才能解析上网访问的域名

cmd,ipconfig /all查看到DNS服务器为公网的根DNS服务器,是可以解析到所有的域名的

image-20220716142630586

image-20220716142918160

大量使用缓存技术(提高访问--->读写速率和效率)

想要访问www.baidu.com这个域名,使用迭代查询的方式去查询这个域名的解析的IP地址

1.找本地地址(host文件)--->本地配置的DNS服务器(DNS缓存(浏览器)),不用每次都去找根服务器;DNS服务器有缓存,本地也有缓存

2.DNS服务器找到根服务器(互联网的根服务器)

3.找顶级域名,因为baidu.com是.com,所以找.com的顶级域名服务器里面找解析

4.找一级域名baidu.com这个的DNS解析

5.从baidu.com这个解析里面就有www.baidu.com这个地址配置了记录集,传回到用户,实现baidu.com这个域名解析到后端的某个IP地址

递归查询:指的是请求到了,服务器无法反馈结果,会去找到结果并且最终反馈---处理到底;DNS服务器必须返回一个准确的结果给到客户端

迭代查询:找别人查找,自己不处理---找别的DNS服务器查询解析,根域名---顶级域名---一级域名

windows查看dns缓存ipconfig

刷新本地DNS缓存:

ipconfig /flushdns

查看本地的DNS解析:ipconfig /all,本地的DNS服务器,如果在windows上安装好DNS服务器,则windows服务器自己本身就是DNS服务器,DNS地址指向自己(127.0.0.1)

如果是自动获取,则是阿里云的DNS地址,或者是本地的DNS地址

切换DNS的时候,会有大概5min的延迟

查看本地缓存:

ipconfig /displaydns

image-20220716150020189

DNS解析类型:正向解析、反向解析

正向解析:域名---IP地址

反向解析:IP地址---域名

一般访问的路径都是访问域名,解析到IP地址

常见公共DNS

114DNS 114.114.114.114
百度DNS 180.76.76.76
各大云厂商DNS服务器(ECS自带)
google 8.8.8.8

cat /etc/resolv.conf,云厂商的ECS其实都是配置的内网DNS

whois:查看域名的所有者,时间,查看注册信息

还能查看网站的DNS解析服务器的域名,有效期,2021年1206买的,有效期是3年

image-20220717090214234

公司内部搭建的域名原则:最好是不要和互联网的公网域名冲突

内部服务需要用到内部的DNS解析,内部的DNS解析是可以出公网的

DNS服务器:也分主从服务器

DNS软件Bind

搭建本地的环境,域名,CA证书,都需要依赖局域网内的服务,包括在本地搭建根CA的服务,搭建本地DNS服务,使得本地访问到域名可以通过CA和key来实现认证,ssl认证

bind,powerdns,dnsmasq,unbound,coredns(dns)

rpm -q bind 
yum -y install bind bind-utils

服务名称:bind,实际的配置文件:/etc/named.conf,服务名称:named

DNS解析服务端口:53

systemctl enable --now named ##现在启动+开启自启动named服务,状态active

image-20220717122950825

image-20220717123450832

本机搭建DNS服务,记录下www.baidu.com的解析IP后,直接存到DNS缓存内(Linux,windows均有DNS解析),所有的DNS服务器(软件)都知道全球的DNS根服务器

##安装DNS服务
yum -y install bind bind-utils

##修改网卡配置,配置DNS选项
vim /etc/sysconfig/network-scripts/ifcfg-ens33
#IPADDR=10.0.0.128
#NETMASK=255.255.255.0
#GATEWAY=10.0.0.1
DNS1=127.0.0.1

##重启网络服务
systemctl restart network

##查看dns解析文件
cat /etc/resolv.conf
# Generated by NetworkManager
search localdomain
nameserver 192.168.244.2
nameserver 127.0.0.1

其它局域网内的机器都指向这个机器就行了,比如是10.0.0.8这台机器,vim /etc/resolv.conf,nameserver指向就行

实现场景:服务器通过指向到内网DNS服务器实现访问公网

场景:

DNS服务器 10.0.0.128 已配置好resolv.conf和网卡DNS指向,指向本机127.0.0.1,配置好DNS服务bind

客户端 10.0.0.129 配置resolv.conf指向10.0.0.128,网卡DNS指向10.0.0.128

workstations配置:手动配置IP地址,NAT网关配置为10.0.0.2(网络编辑器),子网网段10.0.0.0,掩码24,VMNET8配置为手动配置IP地址

DNS服务的监听端口:53端口

配置:

1.配置10.0.0.128的named.conf

//监听哪些机器:本地所有的IP
listen-on port 53 { localhost; };

//允许哪些机器通过这个DNS查询:any所有机器
allow-query     { any; };
allow-query     { 10.0.0.0/24; }; //允许某个网段访问解析

2.10.0.0.129访问到互联网,成功

dig www.baidu.com

host www.baidu.com

image-20220717180716940

image-20220717180935034

image-20220717181021499

面试题:tcp53端口和udp53端口各有什么用?

tcp 53端口:目前和解析没关系,tcp 53用于主从DNS服务器的同步

udp 53端口:和解析有关系,直接解析,udp53端口---用于查询

配置本地DNS服务器内网域名解析

安装dns监听服务

bind,bind-utils(dns测试工具,可以不装)

bind的测试工具包括:dig(最全面的域名解析工具),host(简易版DNS解析测试),nslookup(windows风格的),最常用的就是dig,显示内容最多

rpm -ql bind-utils:查看这个包中有哪些工具

image-20220722212221251

yum -y install bind bind-utils

启动DNS服务:systemctl enable --now named

修改默认dns配置文件,监听为any,vim /etc/named.conf,上下两行可以删除掉

options {
        //监听哪些机器:本地所有的IP
        listen-on port 53 { localhost; }; //监听本地所有的IP 53端口
        listen-on-v6 port 53 { ::1; };
        directory       "/var/named";
        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";
        //允许哪些机器通过这个DNS查询:any所有机器
        allow-query     { any; };
}

使用到的用户+用户组:root,named,group:named

id root
uid=0(root) gid=0(root) groups=0(root)
id named---记得修改域配置文件所属组为named
uid=25(named) gid=25(named) groups=25(named)

rndc命令:对于dns缓存,配置的使用

rndc --help
rndc reload ##重新加载dns配置
rndc flush ##刷新缓存

各种资源记录(RR:resource record),文件路径:/var/named/named.localhost,/var/named/catyer.cn.zone(自已命名),后续可以在这里写域名解析的文件

image-20220718230253744

写主DNS服务器配置(DNS记录)

SOA记录:一般写在首行,一条记录,作为起始的授权记录

NS:解析,正向解析记录

A记录:域名---IPV4地址

AAAA记录:域名---IPV6地址

TXT:文本记录

CNAME:别名记录(CDN,WAF等)

PTR:反向解析,指针

vim /var/named/catyer.cn.zone文件标准格式:其实也是个文件,只需要记得写入zone配置文件就好了

$TTL 1D
@       IN SOA  master admin.catyer.cn ( ;SOA记录:起始授权记录   
                                        20220719        ; serial,序列号,数据库文件的序列号
                                        3H              ; refresh,DNS刷新记录,从节点拉取
                                        10M             ; retry,服务器网络有问题,重试时间
                                        1W              ; expire,DNS记录过期时间
                                        3H )
@       IN      NS      master. ;主DNS服务器解析
master  A       10.0.0.128
www     A       10.0.0.128
k8s     A       10.0.0.128
linux   A       10.0.0.200

主从DNS服务器的同步机制:主服务器一般是有新的更新就推送,从服务器一般是定时拉更新的数据

主从DNS同步依赖条件:serial,类似MySQL主从的binlog文件版本号的变化,binlog_000003类似这样的文件名

PS:一定要记住修改catyer.cn.zone文件的所属组,不然这个文件是不生效的(本地域名解析)

chgrp named catyer.cn.zone

image-20220721214131495

写域配置文件named.rfc1912.zones

将zone的配置信息(catyer.cn)配置到统一的域配置文件内,这里面是/etc/named.frc1912.zones

image-20220719230202982

##写好主域的信息,type类型为master主域,file为catyer.cn.zone这个配置文件
vim /etc/named.rfc1912.zones
zone "catyer.cn" IN {
        type master; ##DNS服务器类型是主服务器,主节点
        file "catyer.cn.zone"; ##域配置文件:指向catyer
        allow-update { none; };
};

##检查DNS配置文件以及域配置文件有无正确
named-checkconf
named-checkzone catyer.cn /var/named/catyer.cn.zone

rndc reload:重新加载dns配置文件zone
rndc flush:刷新本地DNS缓存

##本地网卡DNS解析指向自己
DNS1=10.0.0.128

在windows宿主机上访问到Cent OS中的DNS添加的记录集

在VMNET8网卡上添加DNS解析指向到10.0.0.128

分别都可以解析到IP,即本地的DNS服务器搭建成功,访问本地服务。访问到k8s.catyer.cn这个域名服务的

image-20220721214838733

image-20220721215135845

搭建从DNS服务器(DNS2)

安装dns服务:yum -y install bind

注释掉named.conf配置文件内的监听限制

image-20220721222949631

编辑域配置文件,写上是catyer.cn主DNS(主域)的从域

zone "catyer.cn" {
        type slave;
        masters {10.0.0.128;}
        file "catyer.cn.zone.slave"
};

编辑好后,重启named服务,配置网卡文件DNS2(DNS从服务器)

DNS1=10.0.0.128
DNS2=10.0.0.129

systemctl restart named
systemctl restart network

##停止dns1的服务
systemctl stop named

尝试解析k8s.catyer.cn这个域名,发现承载的dns服务器是10.0.0.129,证明停止了DNS1,DNS2成功生效工作,k8s.catyer.cn是在10.0.0.128上面做的A记录

k8s.catyer.cn

image-20220722213051436

从指定的DNS服务器(IP)上查询该解析+DNS服务器地址

##windows环境
nslookup api.ctfmall.com 100.100.2.136

##Linux环境,+@符号
dig k8s.catyer.cn @10.0.0.128
host k8s.catyer.cn @10.0.0.8

配置主从DNS服务器同步

主服务器配置:需要加上从服务器的IP和NS解析记录

vim /var/named/catyer.cn.zone
$TTL 1D
@       IN SOA  master. www.catyer.cn ( ;SOA记录:起始授权记录   
                                        20220719        ; serial,序列号
                                        3H              ; refresh,DNS刷新记录,从节点拉取
                                        10M             ; retry,服务器网络有问题,重试时间
                                        1W              ; expire,DNS记录过期时间
                                        3H )
@       IN      NS      master ;主DNS服务器解析
@       IN      NS      slave1 ;从DNS服务器解析,需要添加从节点的NS记录
slave1  A       10.0.0.129 ;从DNS服务器的A记录也要写上
master  A       10.0.0.128
www     A       10.0.0.200
k8s     A       10.0.0.128
linux   A       10.0.0.200

rndc reload //重新加载dns配置

主节点更新www.catyer.cn的解析,查看从节点的解析是否正确,dig www.catyer.cn

更新的记录就是10.0.0.200的记录,响应的DNS服务器即为128和129

image-20220723084529769

更新slave1节点的时间时区问题

安装chrony服务:yum -y install chrony,systemctl start chronyd

复制时区到slave1:scp /etc/localtime root@10.0.0.129:/etc

date

image-20220723100805462

k8s内的dns服务器:coredns

配置DNS服务器转发forward:first/only模式

配置环境

dns1(主解析):10.0.0.129
dns2(转发+缓存机):10.0.0.128
客户端:10.0.0.130

想实现的效果:在客户端机器上解析www.catyer.local这个域名,通过DNS2转发到DNS1,通过DNS1解析到DNS1上面的解析记录(1.1.1.1)

---配置DNS1

DNS1在域配置里加一条,这个也是主DNS服务器(master),vim /etc/named.rfc1912.zones,域名为catyer.local(后缀)

zone "catyer.local" {
        type master;
        file "catyer.local.zone";
};

配置解析记录,scp原来的/var/named/catyer.cn.zone,修改属性chgrp named catyer.local,DNS1的配置完成

$TTL 1D
@       IN SOA  master admin.catyer.local ( ;SOA记录:起始授权记录,修改为catyer.local    
                                        20220724        ; serial,序列号
                                        3H              ; refresh,DNS刷新记录,从节点拉取
                                        10M             ; retry,服务器网络有问题,重试时间
                                        1W              ; expire,DNS记录过期时间
                                        3H )
@       IN      NS      master ;主DNS服务器解析
master  A       10.0.0.129
www     A       1.1.1.1 ;DNS1上面的解析

rndc reload
systemctl restart named

--配置DNS2服务器

DNS forward的两种方式:first和only

1.first:转发到dns1服务器,如果没结果,直接到互联网的根找

2.only:转发到dns1服务器,没结果,则返回no

vim /etc/named.conf

option{
		forward only; ##转发模式
        forwarders {10.0.0.129;}; ##转发的DNS服务器
}
        dnssec-enable no; ##yes修改为no,这是dns默认的安全配置
        dnssec-validation no;
        
rndc reload ##重新加载DNS配置
systemctl restart named

--DNS3上测试

1.如果10.0.0.129能出公网,则only模式ok;如果10.0.0.129不能出公网,则需要用first功能,first功能:去公网找根DNS

##在dns1上删除掉出公网的路由route
ip route
default via 10.0.0.2 dev ens33 
10.0.0.0/24 dev ens33 proto kernel scope link src 10.0.0.129 metric 100 
192.168.122.0/24 dev virbr0 proto kernel scope link src 192.168.122.1 

ip route del default via 10.0.0.2 dev ens33	
ip route 
10.0.0.0/24 dev ens33 proto kernel scope link src 10.0.0.129 metric 100 
192.168.122.0/24 dev virbr0 proto kernel scope link src 192.168.122.1 

##无法解析了,因为配置了only模式,将这个添加回来
ip route add default via 10.0.0.2 dev ens33	

image-20220723113056834

测试catyer.local的访问,解析到的是DNS1的记录1.1.1.1

dig www.catyer.local
##断了公网为什么还能解析:存在缓存,一次解析成功后会存在缓存中,刷新缓存
rndc flush

image-20220723112947631

2.first模式option转发

dns服务器转发优先找10.0.0.129,如果没有,则找互联网的根服务器,逐级转发找到

DNS2在forward模式配置为first

option{
		forward first; ##转发模式
        forwarders {10.0.0.129;}; ##转发的DNS服务器
}
rndc reload
systemctl restart named

删除掉dns1的路由,模拟dns1无法出公网,dns2找互联网根服务器的场景

ip route del default via 10.0.0.2 dev ens33
ping www.baidu.com
ping: www.baidu.com: Name or service not known

dns3测试找dig www.baidu.com,还是可以的,证明通过DNS2转发成功了

image-20220723113918891

公司三地的DNS转发架构:统一通过北京的总DNS出口,上海、成都的解析可以指向北京DNS,上海、成都的机器可以指向各自的DNS,先找缓存,没有去找北京

配置上海和成都DNS转发forwarders为北京的DNS,快一些,缓存

image-20220723114127871

智能DNS分发的实现:CDN

通过GSLB:全局负载均衡,将最佳的DNS返回到用户的客户端,可以自动识别用户在什么地域,可以匹配相对应最近的CDN节点

CDN节点:先找本地缓存,没有找DNS,返回最佳的节点;通过缓存,让用户找到最近的CDN节点,如果CDN节点没有这个图片(文件)资源,则回源到源站获取资源

image-20220723122137377

访问路径:访问CDN的域名+对应的路径url,返回对应的资源;CDN再配置的时候默认配置好了CNAME

案例:配置阿里云的CDN,源站指向ctfmall的服务器/OSS桶

ping xxxyyy.ctfmall.com,返回的是cdn域名的CNAME--->CDN服务商,源站是47.106.192.140这个站点IIS,通过就近分发内容

image-20220723142638159

image-20220723142701212

整体的DNS架构(互联网+公司内网)

内网机器---网卡指向内网(分支)DNS服务器---内网DNS配置转发(forward first)到总DNS服务器(出公网)

总DNS服务器找不到---互联网找根服务器---一级域名(.com,.net,.cn)---二级域名(baiduc.com)---三级域名(www)

www返回到客户端内网机器

image-20220723143552261

标签:10.0,named,network,网络,域名,DNS,服务器,解析
来源: https://www.cnblogs.com/catyer/p/16633328.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有