准备
需要8台机器
客户端 10.0.0.11
本地dns 10.0.0.12
# 不用本地dns也可以,客户端安装dns服务即可实现本地
# dns的递归和迭代查询
目标dns 10.0.0.13
根dns 10.0.0.14
顶级域dns 10.0.0.15
二级域主dns 10.0.0.16
二级域从dns 10.0.0.17
主机 10.0.0.18 www.wyjn.com
# 为了测试,之后绑定的主机上也要安装http服务
各机器间相互关系
客户端请求 www.wyjn.com
本地dns 缓存中查询没有转发到目标服务器
目标服务器dns 缓存中查询没有去根迭代询问
根dns 查询顶级域com的dns服务器
管理com的dns 查询二级域dns,wyjn.com
管理wyjn.com的主dns
从dns拉同步主dns
查询主机www.wyjn.com,查询到后返回给目标服务器
目标服务器缓存并返回给本地dns
本地dns缓存并返回给客户端
客户端根据返回的ip向该ip发出http请求
之后www.wyjn.com所在主机根据http请求返回数据给客户端
# 更细节的传输和加密
发信息:客户端从应用层发信息,然后切片,先对称加密,之后进行hash,然后用发
送方的私钥加密对称密钥,用接收方的公钥加密私钥加密后的密钥和hash指纹,进而
确认发送方和接收方以及传输过程的保密性和一致性
加报头:之后这段数据包被打上网络层IP和tcp/udp报头,确认从哪个ip的哪个端口发
的,之后打上传输层的mac地址,然后再转为物理层的二进制从网络发
传输:从内网经过交换机发到路由器(网关),进行跨网段转发,这个路由器可能有公网ip,也可能依旧是内网的ip,之后层层转发,进入公网,再找到对应ip的路由器,如果要发到对应的跨网段的内网,就要做内网穿透
ip很多,一个网络里有很多相同ip的地址,非公网的,应该都会发到,怎么办(会先交换公钥的)
收到:先层层记录包头,之后呢,用自己的私钥去解公钥加密的hash指纹和私钥加密的对称密钥,之后用对方的公钥解密对称密钥,之后得到数据,对数据进行hash校验,就是hash运算以下看看与指纹是不是一致的,每个环节出错了都会拒绝这个数据包
注意:要实现快速扩容,参考 juejin.cn/post/684490…
或者,安装好一台调整好以后直接克隆更快
安装最小内存要2g,安装后调整内存为512M,因为我笔记本内存就16g,开8台,要爆炸了
自动化安装好以后,一定要做快照,以后还要做其他实验
配置
修改ip和dns可以查看 juejin.cn/post/684490…
修改完一台后,其他的用scp即可,方便
scp ifcfg-eth0 10.0.0.x:`pwd`/*
除了客户端指向本地dns
其他的机器要指外部dns 114.114.114.114,否则没法安装bind,需要dns解析
# 客户端-修改ip和dns-安装测试工具包
ip 10.0.0.11
dns 10.0.0.12
yum install bind-utils
# 本地dns-修改ip,安装bind并且设置好域转发
ip 10.0.0.12
yum install bind -y
vim /etc/name.conf
// listen-on port 53 { localhost; };
// allow-query { localhost; };
allow-transfer {none;};
dnssec-enable no;
dnssec-validation no;
forward only; # 只从转发dns服务器查,不从根上查,控制变量
forwarders {10.0.0.13;};
named-checkconf
systemctl enable --now named.service
# 目标dns-修改ip,安装bind,修改根域文件
ip 10.0.0.13
yum install bind -y
vim /etc/name.conf
// listen-on port 53 { localhost; };
// allow-query { localhost; };
allow-transfer {none;};
zone "." IN { # 经查看发现根域库文件在这里,修改根域库文件
type hint;
file "named.ca";
};
vim /var/named/named.ca
删除所有记录,添加
. 518400 IN NS a.root-servers.net.
a.root-servers.net. 518400 IN A 10.0.0.14
named-checkconf
systemctl enable --now named.service
# 根dsn-修改ip,安装bind,修改域库文件做com子域授权
ip 10.0.0.14
yum install bind -y
vim /etc/name.conf
// listen-on port 53 { localhost; };
// allow-query { localhost; };
allow-transfer {none;};
zone "." IN {
type master; # 这个表示10.0.0.14是维护.域的dns服务器
file "named.ca";
allow-update {none;};
};
cp -p named.localhost named.ca
vim /var/named/named.ca
删除所有记录,添加
# 要修改成常规子域授权格式
$TTL 1D
@ IN SOA master 3555409636.qq.com. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS @
A 10.0.0.14
com NS comdns
comdns A 10.0.0.15
named-checkconf
yum install bind-utiles
name-checkzone . name.ca
systemctl enable --now named.service
# 顶级域dns-修改ip,安装bind,修改域库文件做wyjn子域授权
ip 10.0.0.15
yum install bind -y
vim /etc/name.conf
// listen-on port 53 { localhost; };
// allow-query { localhost; };
allow-transfer {none;};
vim /var/named/named.ca
删除所有记录,添加
. 518400 IN NS a.root-servers.net.
a.root-servers.net. 518400 IN A 10.0.0.14
vim /etc/named.rfc1912.zones
zone "com" IN {
type master;
file "com.master.zone"
allow-update {none;};
};
cd /var/named/
cp -p named.localhost com.master.zone
vim com.master.zone
$TTL 1D
@ IN SOA master 3555409634.qq.com. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS @
A 10.0.0.15
wyjn NS wyjndns
wyjndns A 10.0.0.16
wyjndns A 10.0.0.17
named-checkconf
yum install bind-utiles
name-checkzone com com.master.zone
systemctl enable --now named.service
# 二级域主dns-修改ip,安装bind,修改域库文件,做www主机A解析,做推同步
ip 10.0.0.16
yum install bind -y
vim /etc/name.conf
// listen-on port 53 { localhost; };
// allow-query { localhost; };
allow-transfer {10.0.0.17;};
vim /var/named/named.ca
删除所有记录,添加
. 518400 IN NS a.root-servers.net.
a.root-servers.net. 518400 IN A 10.0.0.14
vim /etc/named.rfc1912.zones
zone "wyjn.com" IN {
type master;
file "wyjn.com.master.zone";
allow-update {none;};
};
cd /var/named/
cp -p named.localhost wyjn.com.master.zone
vim wyjn.com.master.zone
$TTL 1D
@ IN SOA master 3555409634.qq.com. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS master
NS slave
slave A 10.0.0.17
master A 10.0.0.16
www CNAME websrv
websrv A 10.0.0.18
named-checkconf
yum install bind-utiles
name-checkzone wyjn.com wyjn.com.master.zone
systemctl enable --now named.service
# 二级域从dns-修改ip,安装bind,修改域文件,做拉同步
ip 10.0.0.17
yum install bind -y
vim /etc/name.conf
// listen-on port 53 { localhost; };
// allow-query { localhost; };
allow-transfer {none;};
vim /var/named/named.ca
删除所有记录,添加
. 518400 IN NS a.root-servers.net.
a.root-servers.net. 518400 IN A 10.0.0.14
vim /etc/named.rfc1912.zones
zone "wyjn.com" IN {
type slave;
masters {10.0.0.16;};
file "slaves/wyjn.com.slave.zone";
# 不能加allow-update否则会报错
};
named-checkconf
yum install bind-utiles
name-checkzone wyjn.com wyjn.com.slave.zone
systemctl enable --now named.service
# 主机-修改ip,安装httpd服务
ip 10.0.0.18
yum install httpd -y
systemctl enable --now httpd.socket
cat > /var/www/html/index.html <<EOF
> <h1> www.wyjn.com </h1>
> EOF
测试
客户端 10.0.0.11
[root@localhost ~]# dig www.wyjn.com
; <<>> DiG 9.11.4-P2-RedHat-9.11.4-26.P2.el8 <<>> www.wyjn.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 28723
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 1, ADDITIONAL: 3
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
; COOKIE: 9e2213b8e5c269ada08fe64a5e73ba0644416ec3caf1a9de (good)
;; QUESTION SECTION:
;www.wyjn.com. IN A
;; ANSWER SECTION:
www.wyjn.com. 86400 IN CNAME websrv.wyjn.com.
websrv.wyjn.com. 86400 IN A 10.0.0.18
;; AUTHORITY SECTION:
wyjn.com. 86400 IN NS wyjndns.com.
;; ADDITIONAL SECTION:
wyjndns.com. 86400 IN A 10.0.0.17
wyjndns.com. 86400 IN A 10.0.0.16
;; Query time: 7 msec
;; SERVER: 10.0.0.12#53(10.0.0.12)
;; WHEN: Fri Mar 20 02:29:27 CST 2020
;; MSG SIZE rcvd: 160
[root@localhost ~]#
[root@localhost ~]# curl www.wyjn.com
<h1> www.wyjn.com </h1>
感受
一定要做好很多的记录,给以后更复杂的应用打好基础,一层一层的学和搭建好
以后如果要构建框架,一定要先画服务框架图,思路更清楚
未来构建
每个环节做好主从
之后对提供http服务的主机进行dns的cdn分发
对真实的cdn分发进行模拟