linux作业--第九周

1、简述DNS服务器原理,并搭建主--从服务器。

一、什么是DNS

DNS(domain name system)域名系统或者(domain named system)区域名称服务,分为正向与反向域名解析,适用C/S,端口53/udp,53/tcp,属于应用层协议;
作用:从网络来说,由于tcp/ip协议族是基于ip地址,所以需要一个翻译器即DNS;可以1对多也可以多对1,那么正向解析即域名解析为ip地址,反向解析即ip地址解析为域名。
DNS就是域名系统,是因特网中的一项核心服务,是用于实现域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取的IP地址。通过主机名,得到该主机名对应的IP地址的过程叫做域名解析(或主机名解析)。

域名结构

如上图所示,域名结构是树状结构,树的最顶端代表根服务器,根的下一层就是由我们所熟知的.com、.net、.cn等通用域和.cn、.uk等国家域组成,称为顶级域。网上注册的域名基本都是二级域名,比如baidu.com、taobao.com等等二级域名,它们基本上是归企业和管理。接下来是三级或者四级域名,总体概括来说域名是由整体到局部的机制结构。

DNS的查询方式

DNS解析流程:

1、本地主机查询本地dns缓存及本地hosts(/etc/hosts)文件中是否有www.bytesiu.com域名的记录,如果有直接使用,如果没有则会向本地自定义的dns服务器去请求(/etc/resolv.conf);

2、dns服务器收到主机请求则查询dns服务器本地是否有www.bytesiu.com域名的解析记录,如果有直接返回给客户端,如果没有则dns服务器直接向根服务器(.)请求查询;

3、根服务器(.)收到dns服务器的查询请求发现是查询.com域的信息,然后根服务器则返回.com域的服务器ip给到dns服务器;

4、dns服务器收到.com的服务器IP,则再次向.com的服务器请求bytesiu.com的域名服务器ip;

5、dns服务器收到bytesiu.com域名服务器IP则直接再次请求bytesiu.com域名服务器,查询www的解析记录;

6、dns服务器查询到www.bytesiu.com的解析记录后则直接返回给客户端并自己缓存此记录;

7、客户端主机则拿到www.bytesiu.com的ip就直接访问到目标主机了,并缓存了此解析记录;(2-7阶段是递归查询)

DNS的查询方式有两种,分别为递归查询(recursion)和迭代查询(iteration)。

递归查询:客户端发起一个DNS解析请求,若本地DNS服务器不能为客户端直接解析域名,则域名服务器会代替客户端(下级服务器)向域名系统中的各分支的上下级服务器进行递归查询,直到有服务器响应回答了该请求后,将该请求结果返回客户端。在此期间,客户端将一直处于等待状态。

迭代查询:客户端(下级服务器)发起一个DNS解析请求后,若上级DNS服务器并不能直接提供该DNS的解析结果,则该上级DNS服务器会告知客户端(下级服务器)另一个可能查询到该DNS解析结果的DNS服务器IP,客户端(下级服务器)再次向这个DNS服务器发起解析请求,如此类推,直到查询到对应的结果为止。

通常递归查询这种方式用于PC机与本地DNS服务器之间的查询,而迭代查询则多用于DNS服务器之间的查询

主--从服务器搭建过程

1、编辑/etc/named.conf,启用本机指定网口监听53端口号、指定网口接收DNS查询请求,并允许接收指定备用DNS的区域传送;

vim /etc/named.conf
options {
//      listen-on port 53 { 127.0.0.1; };
//      allow-query     { localhost; };
};

systemctl enable --now bind

2、编辑/etc/named.rfc1912.zones文件,设置区域信息;

zone "bytesiu.com" {
      type master;
      file "bytesiu.com.zone";
};

3、新建zone文件,/var/named/bytesiu.com.zone,添加SOA,NS,A,MX等记录,实现正向解析;

[root@localhost ~]# cd /var/named/
[root@localhost named]# ls
data  dynamic  named.ca  named.empty  named.localhost  named.loopback  slaves
[root@localhost named]# cp -p named.localhost bytesiu.com.zone
[root@localhost named]# ll bytesiu.com.zone 
-rw-r----- 1 root named 152 Jun 21  2007 bytesiu.com.zone
##vim bytesiu.com.zone
$TTL 1D
@	IN SOA	master.bytesiu.com.  gun.bytesiu.com.  (
					2	; serial
					1D	; refresh
					1H	; retry
					1W	; expire
					3H )	; minimum
	NS	master
        NS      slave

master  A       192.168.42.200
slave   A       192.168.42.100


www     CNAME   cdn.bytesiu.com.
cdn      A      192.168.42.100

db      A       192.168.42.201
k8snode1  A     192.168.42.202
K8snode2  A     192.168.42.203
*         A     192.168.42.100
@         A     192.168.42.100
@      MX   10 mail1
@      MX   10 mail2
mail1  A        192.168.42.206
mail2  A        192.168.42.207


注:
泛域名解析写法: *  A  192.168.42.100  
例:wwww.bytesiu.com
若访问 bytesiu.com
则应该写为: @  A 192.168.42.100

4、使用named-checkconf、named-zone检查服务端配置、区域文件配置。

[root@localhost ~]# named-checkconf   #检查配置文件
[root@localhost ~]# named-checkzone bytesiu.com  /var/named/bytesiu.com.zone
zone bytesiu.com/IN: loaded serial 0
OK

5、实现反向解析区域

vim /etc/named.rfc1912.zones
zone "42.168.192.in-addr.arpa" {
      type master;
      file "192.168.42.zone";
};

/var/named/ 目录下
# cp -p named.loopback 192.168.42.zone


##vim 192.168.42.zone
$TTL 1D
@	IN SOA	master.bytesiu.com.  rname.invalid. (
					3	; serial
					1D	; refresh
					1H	; retry
					1W	; expire
					3H )	; minimum
	NS	master.bytesiu.com.
        NS      slave.bytesiu.com.


200     PTR     master.bytesiu.com.
100     PTR     slave.bytesiu.com.

100     PTR     www.bytesiu.com.
201     PTR     db.bytesiu.com.

6、搭建从DNS服务器

从服务器上进行如下配置
[root@localhost ~]# yum install -y bind
vim /etc/named.conf
options {
//      listen-on port 53 { 127.0.0.1; };
//      allow-query     { localhost; };
};

[root@localhost ~]# vim /etc/named.rfc1912.zones 
zone "bytesiu.com" {                    //正向解析
    type slave;
    masters {192.168.42.200;};          //主服务器的IP地址
    file "slaves/bytesiu.com.slave";   //拉取到的主服务器配置文件保存目录
}; 
zone "42.168.192.in-addr.arpa" {        //反向解析
    type slave;               
    masters {192.168.42.200;};
    file "slaves/192.168.42.zone";
};

主服务器上面进行如下配置
[root@localhost ~]# vim /var/named/bytesiu.com.zone 
        NS      master
        NS      slave

master  A       192.168.42.200
slave   A       192.168.42.100


[root@localhost ~]# vim /var/named/192.168.42.zone 
        NS      master.bytesiu.com.
        NS      slave.bytesiu.com.


200     PTR     master.bytesiu.com.
100     PTR     slave.bytesiu.com.


注:每一次修改完配置文件后,应将版本号相对应的加一 
 1       ; serial

7、使用systemctl start named或rndc启动DNS服务

[root@localhost ~]# rndc reload
server reload successful
[root@localhost ~]# systemctl enable --now named
Created symlink from /etc/systemd/system/multi-user.target.wants/named.service to /usr/lib/systemd/system/named.service.

CentOS启用DNS客户端缓存

yum install -y nscd
systemctl enable --now nscd
nscd -g  查看缓存
注:ubuntu 默认会启用DNS客户端缓存
#清除DNS客户端缓存
[root@localhost ~]# nscd -i hosts

设置不允许其它主机进行区域信息数据的传输

从服务器上面配置:
vim /etc/named.conf
//      listen-on port 53 { 127.0.0.1; };
//      allow-query     { localhost; };
        allow-transfer  {none;};

测试结果:

主服务器测试:(正向解析)
[root@localhost ~]# dig www.bytesiu.com @192.168.42.200

; <<>> DiG 9.11.4-P2-RedHat-9.11.4-26.P2.el7_9.8 <<>> www.bytesiu.com @192.168.42.200
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 3049
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 2, ADDITIONAL: 3

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;www.bytesiu.com.		IN	A

;; ANSWER SECTION:
www.bytesiu.com.	86400	IN	CNAME	cdn.bytesiu.com.
cdn.bytesiu.com.	86400	IN	A	192.168.42.100

;; AUTHORITY SECTION:
bytesiu.com.		86400	IN	NS	master.bytesiu.com.
bytesiu.com.		86400	IN	NS	slave.bytesiu.com.

;; ADDITIONAL SECTION:
master.bytesiu.com.	86400	IN	A	192.168.42.200
slave.bytesiu.com.	86400	IN	A	192.168.42.100

;; Query time: 0 msec
;; SERVER: 192.168.42.200#53(192.168.42.200)
;; WHEN: Sat Jan 22 20:17:12 CST 2022
;; MSG SIZE  rcvd: 151

从服务器测试:(正向解析)
[root@localhost ~]# dig www.bytesiu.com @192.168.42.100

; <<>> DiG 9.11.4-P2-RedHat-9.11.4-26.P2.el7_9.8 <<>> www.bytesiu.com @192.168.42.100
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 62554
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 2, ADDITIONAL: 3

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;www.bytesiu.com.		IN	A

;; ANSWER SECTION:
www.bytesiu.com.	86400	IN	CNAME	cdn.bytesiu.com.
cdn.bytesiu.com.	86400	IN	A	192.168.42.100

;; AUTHORITY SECTION:
bytesiu.com.		86400	IN	NS	slave.bytesiu.com.
bytesiu.com.		86400	IN	NS	master.bytesiu.com.

;; ADDITIONAL SECTION:
master.bytesiu.com.	86400	IN	A	192.168.42.200
slave.bytesiu.com.	86400	IN	A	192.168.42.100

;; Query time: 0 msec
;; SERVER: 192.168.42.100#53(192.168.42.100)
;; WHEN: Sat Jan 22 20:17:15 CST 2022
;; MSG SIZE  rcvd: 151

主服务器测试:(反向解析)
[root@localhost ~]# dig -t ptr 100.42.168.192.in-addr.arpa  @192.168.42.200

; <<>> DiG 9.11.4-P2-RedHat-9.11.4-26.P2.el7_9.8 <<>> -t ptr 100.42.168.192.in-addr.arpa @192.168.42.200
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 1944
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 2, ADDITIONAL: 3

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;100.42.168.192.in-addr.arpa.	IN	PTR

;; ANSWER SECTION:
100.42.168.192.in-addr.arpa. 86400 IN	PTR	www.bytesiu.com.
100.42.168.192.in-addr.arpa. 86400 IN	PTR	slave.bytesiu.com.

;; AUTHORITY SECTION:
42.168.192.in-addr.arpa. 86400	IN	NS	slave.bytesiu.com.
42.168.192.in-addr.arpa. 86400	IN	NS	master.bytesiu.com.

;; ADDITIONAL SECTION:
master.bytesiu.com.	86400	IN	A	192.168.42.200
slave.bytesiu.com.	86400	IN	A	192.168.42.100

;; Query time: 1 msec
;; SERVER: 192.168.42.200#53(192.168.42.200)
;; WHEN: Sat Jan 22 21:07:15 CST 2022
;; MSG SIZE  rcvd: 172

从服务器测试:(反向解析)
[root@localhost ~]# dig -t ptr 100.42.168.192.in-addr.arpa  @192.168.42.100

; <<>> DiG 9.11.4-P2-RedHat-9.11.4-26.P2.el7_9.8 <<>> -t ptr 100.42.168.192.in-addr.arpa @192.168.42.100
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 23509
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 2, ADDITIONAL: 3

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;100.42.168.192.in-addr.arpa.	IN	PTR

;; ANSWER SECTION:
100.42.168.192.in-addr.arpa. 86400 IN	PTR	www.bytesiu.com.
100.42.168.192.in-addr.arpa. 86400 IN	PTR	slave.bytesiu.com.

;; AUTHORITY SECTION:
42.168.192.in-addr.arpa. 86400	IN	NS	master.bytesiu.com.
42.168.192.in-addr.arpa. 86400	IN	NS	slave.bytesiu.com.

;; ADDITIONAL SECTION:
master.bytesiu.com.	86400	IN	A	192.168.42.200
slave.bytesiu.com.	86400	IN	A	192.168.42.100

;; Query time: 1 msec
;; SERVER: 192.168.42.100#53(192.168.42.100)
;; WHEN: Sat Jan 22 20:57:13 CST 2022
;; MSG SIZE  rcvd: 172

2、搭建并实现智能DNS。

CDN (全称 Content Delivery Network),即内容分发网络

构建在现有网络基础之上的智能虚拟网络,依靠部署在各地的边缘服务器,通过中心平台的负载均衡、内容分发、调度等功能模块,使用户就近获取所需内容,降低网络拥塞,提高用户访问响应速度和命中率。CDN 的关键技术主要有内容存储和分发技术,应用CDN后,DNS 返回的不再是 IP 地址,而是一个CNAME(Canonical Name ) 别名记录,指向CDN的全局负载均衡
CNAME实际上在域名解析的过程中承担了中间人(或者说代理)的角色,这是CDN实现的关键
简单来讲,CDN就是根据用户位置分配最近的资源

操作步骤:

测试IP:eth0 192.168.42.102、172.16.10.102
DNS服务器IP:beijing:192.168.42.200、wuhan:172.16.10.200

DNS服务器上做如下配置:
vim /etc/named.conf 
#在文件最前面加下面行
配置acl
acl beijingnet {
    192.168.42.0/24;
};

acl wuhannet {
    172.16.10.0/24;
};


配置区域配置文件(定义两套区域配置文件)

[root@localhost ~]# cp -p  /etc/named.rfc1912.zones /etc/named.rfc1912.zones.bj
[root@localhost ~]# cp -p  /etc/named.rfc1912.zones /etc/named.rfc1912.zones.wh

vim /etc/named.rfc1912.zones.bj 
zone "." IN {
        type hint;
        file "named.ca";
};

zone "bytesiu.com" {
      type master;
      file "bytesiu.com.zone.bj";
};

vim /etc/named.rfc1912.zones.wh
zone "." IN {
        type hint;
        file "named.ca";
};

zone "bytesiu.com" {
      type master;
      file "bytesiu.com.zone.wh";
};



配置区域数据库文件
cp -p /var/named/bytesiu.com.zone  /var/named/bytesiu.com.zone.bj
cp -p /var/named/bytesiu.com.zone  /var/named/bytesiu.com.zone.wh

vim /var/named/bytesiu.com.zone.bj
www     CNAME   cdn.bytesiu.com.
cdn      A      192.168.42.100

vim /var/named/bytesiu.com.zone.wh
www     CNAME   cdn.bytesiu.com.
cdn      A      172.16.10.100

将ACL和区域数据库实现对应关系,以实现智能DNS
[root@localhost ~]# vim /etc/named.conf 
view beijingview {
    match-clients { beijingnet; };
    include "/etc/named.rfc1912.zones.bj";
};


view wuhanview {
    match-clients { wuhannet; };
    include "/etc/named.rfc1912.zones.wh";
};

#include "/etc/named.rfc1912.zones";

[root@localhost ~]# rndc reload
server reload successful

查看DNS解析结果:

bj
[root@localhost ~]#  dig www.bytesiu.com @192.168.42.200

; <<>> DiG 9.11.4-P2-RedHat-9.11.4-26.P2.el7_9.8 <<>> www.bytesiu.com @192.168.42.200
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 30859
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 2, ADDITIONAL: 3

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;www.bytesiu.com.		IN	A

;; ANSWER SECTION:
www.bytesiu.com.	86400	IN	CNAME	cdn.bytesiu.com.
cdn.bytesiu.com.	86400	IN	A	192.168.42.100

;; AUTHORITY SECTION:
bytesiu.com.		86400	IN	NS	master.bytesiu.com.
bytesiu.com.		86400	IN	NS	slave.bytesiu.com.

;; ADDITIONAL SECTION:
master.bytesiu.com.	86400	IN	A	192.168.42.200
slave.bytesiu.com.	86400	IN	A	192.168.42.100

;; Query time: 5 msec
;; SERVER: 192.168.42.200#53(192.168.42.200)
;; WHEN: Sun Jan 23 20:12:43 CST 2022
;; MSG SIZE  rcvd: 151

wh
[root@localhost ~]#  dig www.bytesiu.com @172.16.10.200

; <<>> DiG 9.11.4-P2-RedHat-9.11.4-26.P2.el7_9.8 <<>> www.bytesiu.com @172.16.10.200
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 64300
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 2, ADDITIONAL: 3

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;www.bytesiu.com.		IN	A

;; ANSWER SECTION:
www.bytesiu.com.	86400	IN	CNAME	cdn.bytesiu.com.
cdn.bytesiu.com.	86400	IN	A	172.16.10.100

;; AUTHORITY SECTION:
bytesiu.com.		86400	IN	NS	slave.bytesiu.com.
bytesiu.com.		86400	IN	NS	master.bytesiu.com.

;; ADDITIONAL SECTION:
master.bytesiu.com.	86400	IN	A	192.168.42.200
slave.bytesiu.com.	86400	IN	A	192.168.42.100

;; Query time: 0 msec
;; SERVER: 172.16.10.200#53(172.16.10.200)
;; WHEN: Sun Jan 23 20:13:42 CST 2022
;; MSG SIZE  rcvd: 151

3、使用iptable实现: 放行ssh,telnet, ftp, web服务80端口,其他端口服务全部拒绝

iptables -I  INPUT  -p tcp  -m multiport --dports  21,22,23,80 -j ACCEPT
iptables -A INPUT -j REJECT

4、NAT原理总结

IP地址分为公网IP与私网IP。一般情况下,在互联网中,公网IP可直接访问,私网IP无法直接访问。而NAT则是将私网IP地址转换为公网IP地址(将IP报文头部的私网IP地址改为可以提供访问的公网IP地址),从而实现用户上网功能或服务器在互联网上提供服务。NAT还可以使得一个公网IP代表多个不同的内网IP,这样便节省了IP地址资源。

SNAT与DNAT区别
SNAT是私网访问外网时,报文中源IP地址(私网IP地址)转换为公网IP地址过程。此转换可以使用静态、动态等转换方式,且内部的多台主机共用同一公网IP地址进行外网访问。
DNAT是外网访问私网时,报文中目的IP地址(公网IP地址)转换为私网IP地址过程。此转换过程可以使用静态、动态、端口等转换方式。

5、iptables实现SNAT和DNAT,并对规则持久保存。

实现SNAT和DNAT都需要开启内核数据转发功能
开启ip_forward转发功能

#echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf
生效
#sysctl  -p

查看
[root@localhost ~]# sysctl -a |grep ip_forward
net.ipv4.ip_forward = 1
net.ipv4.ip_forward_use_pmtu = 0

SNAT与DNAT

SNAT
iptables -t nat -A POSTROUTING -s 192.168.42.0/24 -j SNAT --to-source 192.168.159.4
iptables -t nat -A POSTROUTING -s 192.168.42.0/24 ! -d 192.168.42.0/24 -j MASQUERADE
DNAT
iptables -t nat -A PREROUTING  -d 192.168.159.134 -p tcp --dport 80 -j DNAT --to-destination 192.168.42.105
iptables -t nat -A PREROUTING  -d 192.168.159.134 -p tcp --dport 80 -j DNAT --to-destination 192.168.42.105:8080

对规则持久保存

yum install -y iptables-services
systemctl status iptables
systemctl start iptables
systemctl enable iptables
iptables-save  > /etc/sysconfig/iptables

或
设置开机自动加载
/etc/rc.d/rc.local

在/etc/rc.d/rc.local文件添加
iptables-restore < /PATH/IPTABLES_RULES_FILE

加载规则列表
iptables-restore < /etc/sysconfig/iptables
posted @ 2021-12-19 22:57  咚咚小孩  阅读(59)  评论(0)    收藏  举报