0.7DNS配置-综合实验-实现internet的DNS服务架构-不包含cdn

281 阅读5分钟

avatar

准备

需要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分发进行模拟