第九周作业
一、简述DNS服务器原理,并搭建主-辅服务器
1、DNS服务工作原理
(1)主机访问 www.baidu.com 这个域名时,首先向自己本地的域名服务器发起查询请求,如果本地域名服务器中有对应域名的缓存信息,那么会返回该域名对应的IP地址给该主机;当本地的域名服务器没有该域名与IP地址的对应关系,那么它会向根域名服务器发起查询请求
(2)根域名服务器收到该域名请求解析时,会告诉本地服务器该域名的下级域名.com域名服务器的IP地址,于是本地服务器向.com域名服务器发起查询请求
(3).com服务器收到该查询请求后,会告诉本地服务器它的下级域名.baidu.com域名服务器的IP地址,于是本地服务器又再一次向该服务器发起查询请求
(4)baidu.com域名服务器知道 www.baidu.com 这个主机对应的IP地址,然后将该IP地址返回给本地服务器
(5)本地服务器收到后,将 www.baidu.com 域名对应的IP地址返回给主机
上述过程中,本地域名服务器查询到最终结果的过程称之为迭代查询;主机向本地服务器发起查询,服务器返回最终结果给主机称为递归查询。
2、主从服务器的搭建
环境准备:
Rocky8-mini 主DNS服务端:192.168.119.128
Rocky8-mini3 备DNS服务器:192.168.119.129
Centos7 客户端:192.168.119.131
Ubuntu20 HTTP服务:192.168.119.130
2.1 安装DNS服务
+++ 在主备服务器上都安装DNS的SERVER端功能 +++
[root@Rocky8-mini ~]# dnf -y install bind
[root@Rocky8-mini ~]# systemctl enable --now named
[root@Rocky8-mini3 ~]# yum -y install bind
[root@Rocky8-mini3 ~]# systemctl enable --now named.service
2.2 修改主服务器配置文件
[root@Rocky8-mini ~]# vim /etc/named.conf
// 将下面两行注释
// listen-on port 53 { 127.0.0.1; };
// allow-query { localhost; };
// 关于安全的关闭
dnssec-enable no;
dnssec-validation no;
[root@Rocky8-mini ~]# vim /etc/named.rfc1912.zones
zone "wuhao.org" {
type master;
file "wuhao.org.zone";
};
2.3 创建并编辑域名数据库解析文件
[root@Rocky8-mini named]# cp -a named.localhost wuhao.org.zone
[root@Rocky8-mini named]# ll wuhao.org.zone named.localhost
-rw-r----- 1 root named 152 Aug 24 2021 named.localhost
-rw-r----- 1 root named 152 Aug 24 2021 wuhao.org.zone
[root@Rocky8-mini ~]# vim /var/named/wuhao.org.zone
$TTL 1D
@ IN SOA master admin.wuhao.org. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS master
NS slave1 //增加从服务器资源记录
master A 192.168.119.128
slave1 A 192.168.119.129 // 从服务器的IP地址
www A 192.168.119.130
cdn A 192.168.119.111
blog A 192.168.119.170
* A 192.168.119.130
@ A 192.168.119.130
[root@Rocky8-mini ~]# rndc reload
server reload successful
2.4 编辑从服务器配置文件
[root@Rocky8-mini3 ~]# vim /etc/named.conf
options {
// listen-on port 53 { 127.0.0.1; };
// allow-query { localhost; };
dnssec-enable no;
dnssec-validation no;
[root@Rocky8-mini3 ~]# cat /etc/named.rfc1912.zones // 添加如下几行
zone "wuhao.org" {
type slave; // 指明自己为从节点
masters {192.168.119.128;}; // 主节点信息
file "slaves/wuhao.org.slave"; // 存放从节点域数据库文件
};
[root@Rocky8-mini3 ~]# rndc reload
server reload successful
2.5 测试结果
-- 客户端的DNS地址已经设置了主备DNS地址 --
[root@centos7 ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33
DNS2=192.168.119.129
[root@centos7 ~]# dig www.baidu.com // 第一次测试走主服务器
;; Query time: 0 msec
;; SERVER: 192.168.119.128#53(192.168.119.128)
;; WHEN: Sat Apr 30 19:59:19 CST 2022
;; MSG SIZE rcvd: 327
[root@Rocky8-mini named]# rndc stop // 停止主服务器
[root@centos7 ~]# dig www.baidu.com //第二次测试走从服务器
;; Query time: 0 msec
;; SERVER: 192.168.119.129#53(192.168.119.129)
;; WHEN: Sat Apr 30 20:00:02 CST 2022
;; MSG SIZE rcvd: 327
二、搭建并实现智能DNS
环境准备:
Centos7 为客户端
Rocky8-mini 为服务端
(服务器基础配置见一)
-- 192网段用于模拟北京的地址,172网段用于模拟上海的地址 --
[root@centos7 ~]# ip a show ens33
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 00:0c:29:b6:2b:42 brd ff:ff:ff:ff:ff:ff
inet 192.168.119.131/24 brd 192.168.119.255 scope global noprefixroute ens33
valid_lft forever preferred_lft forever
inet 172.16.1.2/24 scope global ens33
valid_lft forever preferred_lft forever
[root@Rocky8-mini ~]# ip a show ens33
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 00:0c:29:4d:a8:89 brd ff:ff:ff:ff:ff:ff
inet 192.168.119.128/24 brd 192.168.119.255 scope global noprefixroute ens33
valid_lft forever preferred_lft forever
inet 172.16.1.1/24 scope global ens33
valid_lft forever preferred_lft forever
inet6 fe80::20c:29ff:fe4d:a889/64 scope link noprefixroute
2.1 添加ACL,将指定的网段添加进入指定的列表中
[root@Rocky8-mini ~]# vim /etc/named.conf
acl BeiJingNet {
192.168.119.0/24;
};
acl ShangHaiNet {
172.16.1.0/24;
};
2.2 定义北京和上海域名数据库所对应的信息
[root@Rocky8-mini ~]# cd /var/named/
[root@Rocky8-mini named]# cp -a wuhao.org.zone wuhao.org.zone.bj
[root@Rocky8-mini named]# cp -a wuhao.org.zone wuhao.org.zone.sh
[root@Rocky8-mini named]# vim -O wuhao.org.zone.bj wuhao.org.zone.sh
2.3 创建北京和上海的域数据库配置文件
[root@Rocky8-mini named]# cp -a /etc/named.rfc1912.zones /etc/named.rfc1912.zones.bj
[root@Rocky8-mini named]# cp -a /etc/named.rfc1912.zones /etc/named.rfc1912.zones.sh
[root@Rocky8-mini named]# vim /etc/named.rfc1912.zones.sh
[root@Rocky8-mini named]# vim /etc/named.rfc1912.zones.bj
2.4 将北京与上海的区域数据库配置文件与对应的ACL绑定
[root@Rocky8-mini ~]# vim /etc/named.conf
view BeiJingView {
match-clients { BeiJingNet; };
include "/etc/named.rfc1912.zones.bj";
};
view ShangHaiView {
match-clients { ShangHaiNet; };
include "/etc/named.rfc1912.zones.sh";
};
2.5 重新加载服务端配置文件并在客户端做测试
[root@Rocky8-mini etc]# rndc reload
server reload successful
[root@centos7 ~]# dig www.wuhao.org @192.168.119.128
; <<>> DiG 9.11.4-P2-RedHat-9.11.4-26.P2.el7 <<>> www.wuhao.org @192.168.119.128
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 62410
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 2
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1232
;; QUESTION SECTION:
;www.wuhao.org. IN A
;; ANSWER SECTION:
www.wuhao.org. 86400 IN A 192.168.119.130 // 返回的是北京的服务器地址
;; AUTHORITY SECTION:
wuhao.org. 86400 IN NS master.wuhao.org.
;; ADDITIONAL SECTION:
master.wuhao.org. 86400 IN A 192.168.119.128
;; Query time: 0 msec
;; SERVER: 192.168.119.128#53(192.168.119.128)
;; WHEN: Fri May 20 22:11:56 CST 2022
;; MSG SIZE rcvd: 95
------------------------------------------------------------------------------------------------
[root@centos7 ~]# !dig
dig www.wuhao.org @172.16.1.1
; <<>> DiG 9.11.4-P2-RedHat-9.11.4-26.P2.el7 <<>> www.wuhao.org @172.16.1.1
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 28986
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 2
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1232
;; QUESTION SECTION:
;www.wuhao.org. IN A
;; ANSWER SECTION:
www.wuhao.org. 86400 IN A 172.16.1.130 // 返回的上海服务器的地址
;; AUTHORITY SECTION:
wuhao.org. 86400 IN NS master.wuhao.org.
;; ADDITIONAL SECTION:
master.wuhao.org. 86400 IN A 192.168.119.128
;; Query time: 0 msec
;; SERVER: 172.16.1.1#53(172.16.1.1)
;; WHEN: Fri May 20 22:17:24 CST 2022
;; MSG SIZE rcvd: 95
三、使用IPTABLE实现: 放行SSH,TELNET, FTP, WEB服务端口,其他端口服务全部拒绝
环境说明:
Rocky8-mini2 作为SSH、telnet、ftp、web服务端 192.168.119.138
Centos7 为客户端做测验 192.168.119.141
-- 服务端各项服务均已安装并处于监听状态 --
[root@Rocky8-mini2 ~]# ss -ntl
State Recv-Q Send-Q Local Address:Port Peer Address:Port Process
LISTEN 0 128 0.0.0.0:22 0.0.0.0:*
LISTEN 0 70 *:33060 *:*
LISTEN 0 128 *:3306 *:*
LISTEN 0 128 *:80 *:*
LISTEN 0 32 *:21 *:*
LISTEN 0 128 [::]:22 [::]:*
LISTEN 0 128 *:23 *:*
各服务监听的端口如下:
ssh:22
telnet:23
ftp:20/21
mysql:3306
http:80
-- 在服务端配置防火墙策略,实现题目需求 --
[root@Rocky8-mini2 ~]# iptables -A INPUT -d 192.168.119.138 -p tcp -m multiport ! --dports 20:23,80 -j REJECT
-- 测试 --
[root@centos7 ~]# curl 192.168.119.138 -I // 网页端口能够正常访问
HTTP/1.1 403 Forbidden
Date: Sat, 21 May 2022 06:50:02 GMT
Server: Apache/2.4.37 (centos)
Last-Modified: Sun, 27 Jun 2021 23:47:13 GMT
ETag: "30c0b-5c5c7fdeec240"
Accept-Ranges: bytes
Content-Length: 199691
Content-Type: text/html; charset=UTF-8
[root@centos7 ~]# telnet 192.168.119.138 3306 // 数据库端口已被禁止
Trying 192.168.119.138...
telnet: connect to address 192.168.119.138: Connection refused
四、NAT原理总结
(1)在局域网的网络边界处,利用NAT技术将私网IP地址转换成公网地址,从而实现互联网的通信
(2)一个私网IP地址可以对应一个公网地址;也可以使用一个私网地址+端口号转换成一个公网地址+端口号,只要转换的公网的端口号不同,可以实现多个私网地址对应同一个公网地址
五、IPTABLES实现SNAT和DNAT,并对规则持久保存
5.1 实验环境准备
Rocky8-mini 和 Rocky8-mini2 为局域网服务器
Rocky8-mini IP:192.168.119.128 GW:192.168.119.129
Rocky8-mini2 IP:192.168.119.138 GW:192.168.119.129
Centos7 为公网服务器
Centos7 IP:192.168.225.133
Rocky8-mini3 作为防火墙
Rocky8-mini3 IP:192.168.119.129 192.168.225.132
-- 开启Linux路由转发功能 --
[root@Rocky8-mini3 ~]# vi /etc/sysctl.conf
net.ipv4.ip_forward=1
[root@Rocky8-mini3 ~]# sysctl -p
-- 内网网页文件 --
[root@Rocky8-mini ~]# cat /var/www/html/index.html
web1.lan.com
[root@Rocky8-mini2 ~]# cat /var/www/html/index.html
web2.lan.com
5.2 在Rocky8-mini3上配置SNAT,使128和138能够访问133
[root@Rocky8-mini3 ~]# iptables -t nat -A POSTROUTING -s 192.168.119.0/24 ! -d 192.168.119.0/24 -j MASQUERADE
(1) 配置完成后,内网能够和外网通信**
[root@Rocky8-mini2 ~]# curl 192.168.225.133
web3.Internet.com
(2) 外网不能和内网通信**
5.3 在Rocky8-mini3上配置DNAT,使Centos7只能访问Rocky8-mini上的http服务
(1) 配置命令
[root@Rocky8-mini3 ~]# iptables -t nat -A PREROUTING -d 192.168.225.132 -p tcp --dport 80 -j DNAT --to-destination 192.168.119.128:80
(2) 结果验证
5.4 设置防火墙规则的永久保存,使在下次启动时规则不会丢失
(1)安装防火墙服务端功能,并设置开机自启动
[root@Rocky8-mini3 ~]# yum -y install iptables-services.x86_64
[root@Rocky8-mini3 ~]# systemctl enable --now iptables.service
Created symlink /etc/systemd/system/multi-user.target.wants/iptables.service → /usr/lib/systemd/system/iptables.service.
(2)清除iptables-server自带的防火墙规则,将我们的规则设置永久保存
[root@Rocky8-mini3 ~]# iptables -F
[root@Rocky8-mini3 ~]# iptables-save > /etc/sysconfig/iptables
(3)验证结果
[root@Rocky8-mini3 ~]# systemctl restart iptables.service
[root@Rocky8-mini3 ~]# iptables -t nat -nvL
Chain PREROUTING (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
0 0 DNAT tcp -- * * 0.0.0.0/0 192.168.225.132 tcp dpt:80 to:192.168.119.128:80
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
Chain POSTROUTING (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
0 0 MASQUERADE all -- * * 192.168.119.0/24 !192.168.119.0/24
Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· DeepSeek 开源周回顾「GitHub 热点速览」