随笔 - 17  文章 - 0  评论 - 0  阅读 - 2342

第九周作业

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

第一步:客户机提出域名解析请求,并将该请求发送给本地的域名服务器。
第二步:当本地的域名服务器收到请求后,就先查询本地的缓存,如果有该纪录项,则本地的域名服务器就直接把查询的结果返回。
第三步:如果本地的缓存中没有该纪录,则本地域名服务器就直接把请求发给根域名服务器,然后根域名服务器再返回给本地域名服务器一个所查询域(根的子域) 的主域名服务器的地址。
第四步:本地服务器再向上一步返回的域名服务器发送请求,然后接受请求的服务器查询自己的缓存,如果没有该纪录,则返回相关的下级的域名服务器的地址。
第五步:重复第四步,直到找到正确的纪录。
第六步:本地域名服务器把返回的结果保存到缓存,以备下一次使用,同时还将结果返回给客户机。

1.1、搭建主-辅服务器

# 主DNS服务端配置

[root@centos7 ~]# yum -y install bind
[root@centos7 ~]# vim /etc/named.conf
#注释掉下面两行
// listen-on port 53 { 127.0.0.1; };
// allow-query     { localhost; };
#只允许从服务器进行区域传输
allow-transfer { 从服务器IP;};
[root@centos7 ~]# vim /etc/named.rfc1912.zones    
#加上这段
zone "dnstest.org" {
   type master;
   file  "dnstest.org.zone";
};
[root@centos7 ~]# cp -p /var/named/named.localhost /var/named/dnstest.org.zone
#如果没有-p,需要改权限。chgrp named magedu.org.zone
[root@centos7 ~]# vim /var/named/dnstest.org.zone
$TTL 1D
@ IN SOA master admin.dnstest.org. (
                 1 ; serial
                 1D ; refresh
                 1H ; retry
                 1W ; expire
                 3H ) ; minimum
            NS master
            NS slave
master     A    10.0.0.160
slave      A    10.0.0.161
[root@centos7 ~]# systemctl start named          #第一次启动服务
[root@centos7 ~]# rndc reload                    #不是第一次启动服务

 

# 从DNS服务器配置

[root@centos7 ~]# yum -y install bind
[root@centos7 ~]# vim /etc/named.conf
// listen-on port 53 { 127.0.0.1; };
// allow-query     { localhost; };
#不允许其它主机进行区域传输
   allow-transfer { none;};
[root@centos7 ~]# vim /etc/named.rfc1912.zones
zone "dnstest.org" {
   type slave;
   masters { 10.0.0.160;};

   file "slaves/dnstest.org.slave";
};
[root@centos7 ~]# systemctl start named          #第一次启动服务
[root@centos7 ~]# rndc reload                    #不是第一次启动服务
[root@centos7 ~]# ls /var/named/slaves/dnstest.org.slave #查看区域数据库文件是否生成

  
#客户端测试主从DNS服务架构

#验证从DNS服务器是否可以查询

[root@centos7 ~]# yum -y install bind-utils
[root@centos7 ~]# dig www.magedu.org
; <<>> DiG 9.11.4-P2-RedHat-9.11.4-26.P2.el7 <<>> www.dnstest.org
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 47933
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 1

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

;; AUTHORITY SECTION:
dnstest.org.            10800   IN      SOA     master.dnstest.org. admin.dnstest.org. 1 86400 3600 604800 10800

;; Query time: 0 msec
;; SERVER: 10.0.0.160#53(10.0.0.160)
;; WHEN: Sat May 14 10:43:41 CST 2022
;; MSG SIZE  rcvd: 93
#在主服务器上停止DNS服务
[root@centos7 ~]# systemctl stop named
#验证从DNS服务器仍然可以查询

[root@centos7 ~]# dig www.magedu.org
; <<>> DiG 9.11.4-P2-RedHat-9.11.4-26.P2.el7 <<>> www.dnstest.org
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 60592
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 1

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

;; AUTHORITY SECTION:
dnstest.org.            10800   IN      SOA     master.dnstest.org. admin.dnstest.org. 1 86400 3600 604800 10800

;; Query time: 0 msec
;; SERVER: 10.0.0.161#53(10.0.0.161)
;; WHEN: Sat May 14 10:45:17 CST 2022
;; MSG SIZE  rcvd: 93

 

2、搭建并实现智能DNS。

2.1、DNS 服务器的网卡配置

#配置两个IP地址
#eth0:10.0.0.8/24
#eth1: 172.16.0.8/16

 

2.2、主DNS服务端配置文件实现 view

[root@centos7 ~]# yum install bind -y
vim /etc/named.conf
#在文件最前面加下面行
acl beijingnet {
    10.0.0.0/24;
};
acl shanghainet {
    172.16.0.0/16;
};
acl othernet {
   any;
};
#注释掉下面两行
// listen-on port 53 { 127.0.0.1; };
// allow-query     { localhost; };
#其它略
# 创建view
view beijingview {
   match-clients { beijingnet;};
   include "/etc/named.rfc1912.zones.bj";
};
view shanghaiview {
   match-clients { shanghainet;};
   include "/etc/named.rfc1912.zones.sh";
};
view otherview {
   match-clients { othernet;};
   include "/etc/named.rfc1912.zones.other";
};
include "/etc/named.root.key";

 

2.3、实现区域配置文件

[root@centos7 ~]# vim /etc/named.rfc1912.zones.bj
zone "." IN {
   type hint;
   file "named.ca";
};
zone "magedu.org" {
   type master;
   file "magedu.org.zone.bj";
};
vim /etc/named.rfc1912.zones.sh
zone "." IN {
   type hint;
   file "named.ca";
};
zone "magedu.org" {
   type master;
   file "magedu.org.zone.sh";
};
vim /etc/named.rfc1912.zones.other
zone "." IN {
   type hint;
   file "named.ca";
};
zone "magedu.org" {
   type master;
   file "magedu.org.zone.other";
};

[root@centos7 ~]# chgrp named /etc/named.rfc1912.zones.bj
[root@centos7 ~]# chgrp named /etc/named.rfc1912.zones.sh
[root@centos7 ~]# chgrp named /etc/named.rfc1912.zones.other

 

2.4、创建区域数据库文件

[root@centos7 ~]# vim /var/named/magedu.org.zone.bj
$TTL 1D
@   IN SOA master admin.magedu.org. (
                    2019042214 ; serial
                   1D ; refresh
                   1H ; retry
                   1W ; expire
                   3H )   ; minimum
           NS   master
master     A    10.0.0.8
websrv     A    10.0.0.7                          
www       CNAME websrv

[root@centos7 ~]# vim /var/named/magedu.org.zone.sh
$TTL 1D
@   IN SOA master admin.magedu.org. (
                    2019042214 ; serial
                   1D ; refresh
                   1H ; retry
                   1W ; expire
                   3H )   ; minimum
           NS   master
master     A    10.0.0.8
websrv     A    172.16.0.7                          
www       CNAME websrv

[root@centos7 ~]# vim /var/named/magedu.org.zone.other
$TTL 1D
@   IN SOA master admin.magedu.org. (
                    2019042214 ; serial
                   1D ; refresh
                   1H ; retry
                   1W ; expire
                   3H )   ; minimum
           NS   master
master     A    10.0.0.8
websrv     A    127.0.0.1                          
www       CNAME websrv

[root@centos7 ~]# chgrp named /var/named/magedu.org.zone.bj
[root@centos7 ~]# chgrp named /var/named/magedu.org.zone.sh
[root@centos7 ~]# chgrp named /var/named/magedu.org.zone.other

[root@centos7 ~]# systemctl start named          #第一次启动服务
[root@centos7 ~]# rndc reload                    #不是第一次启动服务

 

2.5、实现位于不同区域的三个WEB服务器

#分别在三台主机上安装http服务
#在web服务器1:10.0.0.8/24实现
[root@web1 ~]# yum install httpd                        
[root@centos7 ~]# echo www.magedu.org in Other > /var/www/html/index.html
[root@centos7 ~]# systemctl start httpd   

#在web服务器2:10.0.0.7/16
[root@web2 ~]# echo www.magedu.org in Beijing > /var/www/html/index.html
[root@web2 ~]# systemctl start httpd 

#在web服务器3:172.16.0.7/16
[root@web3 ~]# yum install httpd                        
[root@web3 ~]# echo www.magedu.org in Shanghai > /var/www/html/index.html
[root@web3 ~]# systemctl start httpd  

 

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

命令如下:

[root@centos7 ~]# iptables -A INPUT -p tcp -m multiport --dport 21,22,23,80 -j ACCEPT

执行结果:

 

4、NAT原理总结

原理:

NAT就是在局域网中使用内部地址,而当内部节点要与外部网络进行通讯时,
就在网关处,将内部地址替换成公用地址,从而在外部公网(internet)上正常使用,
NAT可以使多台计算机共享Internet连接,这一功能很好地解决了公共 IP地址紧缺的问题。
通过这种方法,可以只申请一个合法IP地址,就把整个局域网中的计算机接入Internet中。
这时,NAT屏蔽了内部网络,所有内部网计算机对于公共网络来说是不可见的,而内部网计算机用户通常不会意识到NAT的存在。
如下图所示。这里提到的内部地址,是指在内部网络中分配给节点的私有IP地址,这个地址只能在内部网络中使用,不能被路由转发。

 

 

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

#启用路由转发

[root@centos7 ~]# vim /etc/sysctl.conf
net.ipv4.ip_forward = 1

[root@centos7 ~]# sysctl -p

#实现SNAT

#针对专线静态公共IP
[root@centos7 ~]# iptables -t nat -A POSTROUTING -s 10.0.0.0/24 -j SNAT --to-source 192.168.22.8

#针对拨号网络和专线静态公共IP
[root@centos7 ~]# iptables -t nat -A POSTROUTING -s 10.0.0.0/24 -j MASQUERADE

#实现DNAT

#示例
[root@centos7 ~]# iptables -t nat -A PREROUTING -d 192.168.22.8 -p tcp --dport 80 -j DNAT --to-destination 10.0.0.160:8080

# 规则持久保存

# 规则保存
iptables-save > /PATH/TO/SOME_RULES_FILE

#加载规则
iptables-restore < /PATH/FROM/SOME_RULES_FILE

# 开机自动重载规则

方法一、
#用脚本保存各个iptables命令;让此脚本开机后自动运行
/etc/rc.d/rc.local文件中添加脚本路径 /PATH/TO/SOME_SCRIPT_FILE

#用规则文件保存各个规则,开机时自动载入此规则文件中的规则
#在/etc/rc.d/rc.local文件添加
iptables-restore < /PATH/FROM/IPTABLES_RULES_FILE

方法二、
#定义Unit File, CentOS 7,8 可以安装 iptables-services 实现iptables.service
#范例: CentOS 7,8 使用 iptables-services 
[root@centos8 ~]#yum -y install iptables-services
[root@centos8 ~]#cp /etc/sysconfig/iptables{,.bak}

#保存现在的规则到文件中方法1
[root@centos8 ~]#/usr/libexec/iptables/iptables.init save

#保存现在的规则到文件中方法2
[root@centos8 ~]#iptables-save > /etc/sysconfig/iptables

#开机启动
[root@centos8 ~]#systemctl enable iptables.service    
[root@centos8 ~]#systemctl mask firewalld.service nftables.service

 

posted on   Simple音七  阅读(14)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示