网络network

news/2024/4/20 4:31:29/文章来源:https://www.cnblogs.com/catyer/p/16633328.html

网络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 manager199.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.8cat /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 {//监听哪些机器:本地所有的IPlisten-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"; ##域配置文件:指向catyerallow-update { none; };
};##检查DNS配置文件以及域配置文件有无正确
named-checkconf
named-checkzone catyer.cn /var/named/catyer.cn.zonerndc 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.129systemctl 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.200rndc 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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_2874.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python中的多线程与多进程

线程概念: 线程也叫轻量级进程,是操作系统能够进行运算调度的最小单位,它被包涵在进程之中,是进程中的实际运作单位。 线程自己不拥有系统资源,只拥有一点儿在运行中必不可少的资源,但它可与同属一个进程的其他线程共享进程所拥有的全部资源。一个线程可以创建和撤销另一…

从设计到代码(第 3 天)

从设计到代码(第 3 天) 我最近正在开发一门课程,名为 三周内完成三个网页设计 .最初它是一个为期 3 周的研讨会材料,旨在成为一个包含许多实践的动手密集型研讨会。主要目标是教没有太多开发经验的人使用 HTML 和 CSS 来重现专业的设计模型——这就是为什么它被称为从设计到…

力扣507(java)-完美数(简单)

题目: 对于一个 正整数,如果它和除了它自身以外的所有 正因子 之和相等,我们称它为 「完美数」。 给定一个 整数 n, 如果是完美数,返回 true;否则返回 false。示例 1: 输入:num = 28输出:true解释:28 = 1 + 2 + 4 + 7 + 141, 2, 4, 7和 14 是 28 的所有正因子。示例 …

仅Intel电脑可用:设计2D/3D文档绘图Autodesk AutoCAD 2021

Autodesk AutoCAD 2021是Mac上的二维和三维CAD设计软件,用于产品衍生式设计,创建设计方案,三维模型参数化,建模部件组织,创建制作清晰工程图,设计自动化配置等,AutoCAD 2021增强了针对草图的命令设计,简化流程,改进各种性能,转化探索更强大的设计。​编辑切换为居中 …

Echarts与ajax数据的动态交互

初学Echarts,Echarts的官网示例中配置项的数据需要用到js数组来传递数据,所以当我们从后端查询到数据后,往往需要通过ajax来进行数据交互。 这是官方示例的配置项。<script type="text/javascript">// 基于准备好的dom,初始化echarts实例var myChart = ech…

Openwrt 纯ipv6环境管理和上网

防火墙打开远程管理端口 添加端口如22或者使用ipv6端口转发到ipv4 使用socat opkg install socat图形化界面: drophair / luci-app-socatg wget -P /tmp https://github.com/big-tooth/luci-app-socatg/releases/download/v1.1/luci-app-socatg_1.1-1_all.ipk opkg install /tm…

c++ :虚拟机centos7+vscode

c++ :虚拟机centos7+vscodegcc、g++、make查看是否安装成功 $ gcc --version $ g++ --version $ make --version哪个没有,就yum install gcc-c++/yum install gcc/yum install make yum报错 "Failed to connect to 2001:da8:8000:6023::230: 网络不可达":参考链接…

最大正方形

问题:在一个由 0 和 1 组成的二维矩阵内,找到只包含 1 的最大正方形,并返回其面积。 输入:matrix = [["1","0","1","0","0"],["1","0","1","1","1"],["1"…

图解AspNetCore和Furion(1):应用启动

一、和AspNetCore5相比,从6开始,将Program和Startup类合并,直接在入口类中启动服务和中间件。同时,项目可以启动miniApi,直接在Program中设置路由和控制器。实际项目中,还是推荐使用控制器的方式。 二、Furion定义了静态类Serve,对AspNetCore的启动类进行了封装,同时支…

leetcode-172. 阶乘后的零

172. 阶乘后的零 图床:blogimg/刷题记录/leetcode/172/ 刷题代码汇总:https://www.cnblogs.com/geaming/p/16428234.html 题目思路 n!中有几个0与[1,n]中出现多少个5的因数有关。例如7! = 1234567出现了1次5,故最后末尾会出现1个0。26!中出现了5,10,15,20,25其中5的个数为1+…

java内部类

一、基本介绍 一个类的内部又完整的嵌套了另一个类结构。被嵌套的类称为内部类(inner class),嵌套其他类的类称为外部类(outer class)。是我们类的第五大成员 类的五大成员:属性、方法、构造器、代码块、内部类 内部类最大的特点就是可以直接访问私有属性,并且可以体现类…

redis主从数据同步原理

what:redis高可用:1、数据尽量不丢失;2、尽可能的提供服务;栗子:AOF 和 RDB 保证了数据持久化尽量不丢失;主从复制就是增加副本,一份数据保存到多个实例上。即使有一个实例宕机,其他实例依然可以持续服务;主从:复制——为单向的,即:只能从主复制到从;读写指责——…

Linux驱动开发十六.input系统——2.input_event

我们上一章完成了input子系统的设备构成,并且在用户空间通过hexdump命令拿到了一堆不知道是什么的信息。今天我们就要借助input_event这个结构体来了解内核怎么通过那个结构体了解输入事件。 可能有心人已经发现了,上一章我们在加载完模块以后在/dev/input路径下生成了一个新…

(0828)【vivado版本-对仿真工具版本要求】

(1)https://blog.csdn.net/Alonger1988/article/details/120506385 vivado,vsim版本兼容问题 (2)版本匹配:http://dengkanwen.com/567.html

Ingress

为什么需要Ingress Service是基于四层TCP和UDP协议转发的,而Ingress可以基于七层的HTTP和HTTPS协议转发,可以通过域名和路径做到更细粒度的划分,如下图所示。 图1 Ingress-ServiceIngress工作机制 要想使用Ingress功能,必须在Kubernetes集群上安装Ingress Controller。Ingr…

Rayman Mini for Mac(雷曼迷你跑酷游戏)中文

Rayman Mini for Mac是一款运行在MacOS平台上的经典跑酷类游戏,玩家在Rayman Mini可以看到经典的传统角色,与玩家一起在世界中探险,还有超多全新的角色出现。游戏包含动作横向跑酷和剧情解谜探索为一体,呈现了一个别样的世界。 详情:Rayman Mini for Mac(雷曼迷你游戏) 游…

Java09-继承,抽象类

继承:就是子类继承父类的属性和行为,使得子类对象具有与父类相同的属性、相同的行为。子类可以直接 访问父类中的非私有的属性和行为。父类中的方法,被它的子类们重写,子类各自的实现都不尽相同。那么父类的方法声明和方法主体,只有声明还有意义,而方法主体则没有存在的意…

IDEA配置方法注释

之前配置过,但是忘记了,再次记录下. IDEA版本(IntelliJ IDEA 2019.3.1 x64)类注释如下位置配置,创建类时自动生成注释.点击查看代码 /** * ${NAME} * *@author ${USER} *@version 1.0 *${DATE} ${TIME} **/效果如下:方法注释 如下位置建立tempalte group.1.新增add,这里add可以…

程序设计大赛

一开始可以分清楚板块1.背景2.基本功能介绍 + 难点功能 可以里面的内容串起来3.重难点+亮点 分清楚,难点,亮点 我们答辩时间是10分钟,背景大概是1分半,首先是整个系统爬取数据,经行一个总的说明,构建情况然后我是通过一首诗来进行串的,从知人论事开始说起,知人就…

ansible 001 ansible介绍 原理

ansible 自动化运维 ansible 部署应用程序 (在操作系统层面之上) 系统初始化过程 主机名,yun源,网络,服务,时间同步,内核参数 (可以在pxe这里完成) ansible可以方便100多台服务器来变更,不至于pxe重新安装 PXE 预启动的执行环境 PXE (Pre-boot Execution Enviro…