第九周作业
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
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?