expect免交互与防火墙系统

693 阅读17分钟

1.Here Document

定义:

使用I/O重定向的方式将命令列表提供给交互式程序

标准输入的一种替代品

Here Document 是标准输 入的一种替代品,可以帮助脚本开发人员不必使用临时文件来构建输入信息,而是直接就地 生产出一个文件并用作命令的标准输入,Here Document 可以与非交互式程序和命令一起使用

语法格式:
命令  <<标记

。。。

。。。


标记

注意事项

  1. 标记可以使用任意的合法字符(通用的字符是EOF)
  2. 结尾的标记一定要顶格写,前面不能有任何字符(包括空格)
  3. 结尾的标记后面也不能有任何字符(包括空格)
  4. 开头标记前后空格会被省略掉
  5. 单引号 变量双引号

例子:

使用 wc -l 命令后面直接跟文件名就可以统计文件内有多少行内容,将要统计的内容置于标记“EOF” 之间,直接将内容传给 wc -l 来统计。
#!/bin/bash
wc -l <<EOF
line 1
line 2
EOF

1.2 expect

定义: 是建立在tcl(tool command language)语言基础上的一个工具,常被用于进行自动化控制和测试,解决shell脚本中交互的相关问题

yum install -y expect

格式:

expect [选项] [ -c cmds ] [ [ -[f|b] ] cmdfile ] [ args ]

expect中相关命令

  • spawn 启动新的进程(监控,与捕捉)
  • expect 从进程接收字符串
  • send 用于向进程发送字符串
  • exp_continue 匹配多个字符串在执行动作后加此命令
  • interact 与expect eof
#免交互,传输文件
#!/usr/bin/expect
spawn scp /etc/fstab 192.168.91.101:/mnt
#spawn后面是匹配的命令
expect {
  "yes/no" { send "yes\n";exp_continue }
  #查看yes/no时自动输入yes\n,如果下面有命令时要加exp_continue
  "password" { send "123123\n" }
#如果查到passwd 自动输入123123 \n是换行的意思,相当于自己按了回车
}

expect eof 
#结束后要输入这个

#开启服务的方式
给这个免交互文件加权限
chmod +x 文件名
./文件名 #启动文件

结束位:

expect eof

表示交互结束,等待执行结束,退回到原用户,与spawn对应

比如切换到root用户,expect 脚本默认的等待时间是10s,当执行王命令后,默认停留10s后,自动切回原用户.

interact

执行完成后保持交互状态, 把控制权交给控制台,会停留在目标终端而不是退回到原终端,这时候就可以手工操作了,interact后命令不再起作用,比如interact后添加exit,并不会退出root用户。而如果没有interact则登录完成后会退出,而不是留在远程终端上。

使用interact会保持在终端而不会退回原终端,比如切换到root用户,会一直在root用户状态下;比如ssh到另一台服务器,会一直在目标服务器终端而不会切回原服务器。

需要注意的是,expect eof 与 interact 只能二选一。

2.安全技术和防火墙

2.1安全技术

  • 入侵检测系统(Intrusion Detection Systems):特点是不阻断任何网络访问,量化、定位来自内外网络的威胁情况,主要以提供报警和事后监督为主,提供有针对性的指导措施和安全决策依据,类 似于监控系统一般采用旁路部署(默默的看着你)方式。

  • 入侵防御系统(Intrusion Prevention System):以透明模式工作,分析数据包的内容如:溢出攻击、拒绝服务攻击、木马、蠕虫、系统漏洞等进行准确的分析判断,在判定为攻击行为后立即予以 阻断,主动而有效的保护网络的安全,一般采用在线部署方式。(必经之路)

  • 防火墙( FireWall ):隔离功能,工作在网络或主机边缘,对进出网络或主机的数据包基于一定的规则检查,并在匹配某规则时由规则定义的行为进行处理的一组功能的组件,基本上的实现都是默 认情况下关闭所有的通过型访问,只开放允许访问的策略,会将希望外网访问的主机放在DMZ (demilitarized zone)网络中

  • 防水墙 广泛意义上的防水墙:防水墙(Waterwall),与防火墙相对,是一种防止内部信息泄漏的安全产品。 网络、外设接口、存储介质和打印机构成信息泄漏的全部途径。防水墙针对这四种泄密途径,在事前、事 中、事后进行全面防护。其与防病毒产品、外部安全产品一起构成完整的网络安全体系。

2.2 防火墙的保护范围划分

按保护范围划分:

  • 主机防火墙:服务范围为当前一台主机
  • 网络防火墙:服务范围为防火墙一侧的局域网

按实现方式划分:

  • 硬件防火墙:在专用硬件级别实现部分功能的防火墙;另一个部分功能基于软件实现,如:华为, 山石hillstone,天融信,启明星辰,绿盟,深信服, PaloAlto , fortinet, Cisco, Checkpoint, NetScreen(Juniper2004年40亿美元收购)等
  • 软件防火墙:运行于通用硬件平台之上的防火墙的应用软件,Windows 防火墙 ISA --> Forefront

按网络协议划分:

  • 网络层防火墙:OSI模型下四层,又称为包过滤防火墙
  • 应用层防火墙/代理服务器:proxy 代理网关,OSI模型七层

2.3linux防火墙的基本认识

2.3.1 Netfilter

Linux防火墙是由Netfilter组件提供的,Netfilter工作在内核空间,集成在linux内核中

Netfilter 是Linux 2.4.x之后新一代的Linux防火墙机制,是linux内核的一个子系统。Netfilter采用模块化设计,具有良好的可扩充性,提供扩展各种网络服务的结构化底层框架。Netfilter与IP协议栈是无缝契合,并允许对数据报进行过滤、地址转换、处理等操作

linux真正的防火墙其实就是netfilter

2.4防火墙工具介绍

2.4.1 iptables

由软件包iptables提供的命令行工具,工作在用户空间,用来编写规则,写好的规则被送往netfilter,告诉内核如何去处理信息包

[root@centos7 ~]# iptables --version
iptables v1.4.21

2.4.2 firewalld

从CentOS 7 版开始引入了新的前端管理工具

软件包:

firewalld

firewalld-config

管理工具:

firewall-cmd 命令行工具

firewall-config 图形工作

2.4.3 nftables

此软件是CentOS 8 新特性,Nftables最初在法国巴黎的Netfilter Workshop 2008上发表,然后由长期的

netfilter核心团队成员和项目负责人Patrick McHardy于2009年3月发布。它在2013年末合并到Linux内

核中,自2014年以来已在内核3.13中可用。

它重用了netfilter框架的许多部分,例如连接跟踪和NAT功能。它还保留了命名法和基本iptables设计的

几个部分,例如表,链和规则。就像iptables一样,表充当链的容器,并且链包含单独的规则,这些规

则可以执行操作,例如丢弃数据包,移至下一个规则或跳至新链。

从用户的角度来看,nftables添加了一个名为nft的新工具,该工具替代了iptables,arptables和

ebtables中的所有其他工具。从体系结构的角度来看,它还替换了内核中处理数据包过滤规则集运行时

评估的那些部分。

2.4.4 netfilter 中的四表五链

由信息过滤表(table)组成,包含控制IP包处理的规则集(rules),规则被分组放在链(chain)上

提示:从 Linux kernel 4.2 版以后,Netfilter 在prerouting 前加了一个 ingress 勾子函数。可以使用这

个新的入口挂钩来过滤来自第2层的流量,这个新挂钩比预路由要早,基本上是 tc 命令(流量控制工

具)的替代品。

image.png 三种报文流向

流入本机:PREROUTING --> INPUT-->用户空间进程(访问我的服务)

流出本机:用户空间进程 -->OUTPUT--> POSTROUTING(穿过我)

转发:PREROUTING --> FORWARD --> POSTROUTING(分摊流量)

链chain:

内置链:每个内置链对应于一个钩子函数

自定义链:用于对内置链进行扩展或补充,可实现更灵活的规则组织管理机制;只有Hook钩子调

用自定义链时,才生效。

5种规则链:

规则的作用:对数据包进行过滤或处理

链的作用:内容各种防火墙的规则

  • INPUT:处理入站数据包
  • OUTPUT:处理出站数据包
  • FORWARD:处理出站数据包
  • POSTROUTING:在进行路由选择后处理数据包
  • PREROUTING:在进行路由选择前处理数据包
4种表:

表的作用:容纳各种规则链

表的划分依据:防火墙规则的作用相似

  • raw表:确定是否对该数据包进行状态跟踪
  • mangle:为数据包设置标记
  • nat表:修改数据包中的源目的ip地址或端口
  • filter表:确定是否放行该数据包(过滤)

他们之间的优先级: raw-->mangle-->nat-->filter

3.iptables

3.1iptables组成概述

Linux 的防火墙体系主要工作在网络层,针对 TCP/IP 数据包实施过滤和限制,属于典型的包过滤防火墙(或称为网络层防火墙)。Linux 系统的防火墙体系基于内核编码实现, 具有非常稳定的性能和高效率,也因此获得广泛的应用。

-netfilter/iptables关系: netfilter:

属于“内核态”又称内核空间(kernel space)的防火墙功能体系。linux 好多东西都是内核态 用户态,那我们运维人员关注的是用户态, 内核我们关注不是很多,内核基本是我们开发人员关心的事情是内核的一部分,由一些信息包过滤表组成,这些表包含内核用来控制信息包过滤处理的规则集。

iptables :

属于“用户态”(User Space, 又称为用户空间)的防火墙管理体系。是一种用来管理Linux防火墙的命令程序,它使插入、修改和删除数据包过滤表中的规则变得容易,通常位于/sbin/iptables目录下。 netfilter/iptables后期简称为iptables。iptables是基于内核的防火墙,其中内置了raw、mangle、 nat和filter四个规则表。表中所有规则配置后,立即生效,不需要重启服务。

3.2 实际操作

CentOS7默认使用firewalld防火墙,没有安装iptables,若想使用iptables防火墙。必须先关闭firewalld防火墙,再安装iptables

配置方式:

iptables防火墙的配置方法:
1、使用iptables命令行。
2、使用system-config-firewall centso7不能使用 centos 6可以使用

基本格式:iptables [-t 表名] 管理选项 [链名] [匹配条件] [-j 控制类型]

其中,表名、链名用来指定 iptables 命令所操作的表和链,未指定表名时将默认使用 filter 表;

管理选项:表示iptables规则的操作方式,如插入、增加、删除、查看等;
匹配条件:用来指定要处理的数据包的特征,不符合指定条件的数据包将不会处理;
控制类型指的是数据包的处理方式,如允许、拒绝、丢弃等。 

**注意事项**:
不指定表名时,默认指filter表
不指定链名时,默认指表内的所有链
除非设置链的默认策略,否则必须指定匹配条件
选项、链名、控制类型使用大写字母,其余均为小写
管理选项:
管理选项用法示例
-A在指定链末尾追加一条 iptables -A INPUT (操作)
-I在指定链中插入一条新的,未指定序号默认作为第一条 iptables -I INPUT (操作)
-P指定默认规则 iptables -P OUTPUT ACCEPT (操作)
-D删除 iptables -t nat -D INPUT 2 (操作)
-R修改、替换某一条规则 iptables -t nat -R INPUT (操作)
-L查看 iptables -t nat -L (查看)
-n所有字段以数字形式显示(比如任意ip地址是0.0.0.0而不是anywhere,比如显示协议端口号而不是服务名) iptables -L -n,iptables -nL,iptables -vnL (查看)
-v查看时显示更详细信息,常跟-L一起使用 (查看)
--line-number规则带编号 iptables -t nat -L -n --line-number /iptables -t nat -L --line-number
-F清除链中所有规则 iptables -F (操作)
-N新加自定义链
-X清空自定义链的规则,不影响其他链 iptables -X
-Z清空链的计数器(匹配到的数据包的大小和总和)iptables -Z
-S看链的所有规则或者某个链的规则/某个具体规则后面跟编号
通用匹配
直接使用,不依赖于其他条件或扩展,包括网络协议、IP地址、网络接口等条件。
协议匹配: -p协议名
地址匹配: -s 源地址、-d目的地址
#可以是IP、网段、域名、空(任何地址)
接口匹配: -i入站网卡、-o出站网卡  
iptables -A FORWARD ! -p icmp -j ACCEPT
iptables -A INPUT -s 192.168.91.101 -j DROP
iptables -I INPUT -i ens33 -s 192.168.91.0/24 -j DROP

iptables -I INPUT -p icmp -j DROP
iptables -A FORWARD ! -p icmp -j ACCEPT           //感叹号”!”表示取反
数据包的常见控制类型
- ACCEPT:允许数据包通过。 
- DROP:直接丢弃数据包,不给出任何回 应信息。 
- REJECT:拒绝数据包通过,必要时会给数据发送端一个响应信息。 
- LOG:在/var/log/messages 文件中记录日志信息,然后将数据包传递给下一条规则。 
iptables -I INPUT  -p tcp --dport 22 -m state --state NEW -j LOG --log-prefix "sshnewlink: " 生成日志文件
tail -f /var/log/messages
Aug 15 10:01:20 localhost kernel: ftp new link: IN=ens33 OUT= MAC=00:0c:29:fe:e5:bf:00:0c:29:2a:d6:05:08:00 SRC=192.168.91.101 DST=192.168.91.100
- SNAT:修改数据包的源地址。
- DNAT:修改数据包的目的地址。
- MASQUERADE:伪装成一个非固定公网IP地址。


防火墙规则的“匹配即停止”对于 LOG 操作来说是一个特例,因为 LOG 只是一种辅助 动作,并没有真正处理数据包。

3.2.1 加新的防火墙规则

添加新的防火墙规则时,使用管理选项“-A”、“-I”,前者用来追加规则,后者用来插入规则。

例如,若要在 filterINPUT 链的末尾添加一条防火墙规则,可以执行以下操作(其中 “-p 协议名”作为匹配条件)。


iptables -t filter -A INPUT -p icmp -j REJECT     DROP    //不允许任何主机ping本主机

image.png

image.png

3.2.2 查看规则表

查看已有的防火墙规则时,使用管理选项“-L”,结合“--line-numbers”选项还可显示各条规则在链内的顺序号。例如,若要查看 filterINPUT 链中的所有规则,并显示规则序号, 可以执行以下操作
iptables [-t表名] -n -L [链名] |[-- line-numbers]
或
iptables - [vn]L
#注意:不可以合写为-Ln

[root@localhost ~]#iptables -vnL --line-numbers

image.png

3.2.3 删除、清空、替换规则

替换:
iptables -A INPUT -s 192.168.223.100 -j DROP
iptables -R INPUT 1 -s 192.168.223.100 -j ACCEPT 

image.png

删除:
iptables -D INPUT 5      #后面需要带编号
iptables -L INPUT --line-numbers
iptables -t filter -D INPUT -p icmp - j REJECT

image.png

清空规则:
[root@localhost ~]# iptables -F INPUT
[root@localhost ~]# iptables -nL INPUT
Chain INPUT (policy ACCEPT)
target     prot opt source               destination  

iptables -vnL:实际情况下慎用,直接删除全部的规则

3.2.4 设置默认策略

iptables 的各条链中,默认策略是规则匹配的最后一个环节——当找不到任何一条能够匹配数据包的规则时,则执行默认策略。默认策略的控制类型为 ACCEPT(允许)、DROP(丢弃)两种。例如,执行以下操作可以将 filter 表中 FORWARD 链的默认策略设为丢弃, OUTPUT 链的默认策略设为允许。
iptables [-t表名] -P <链名> <控制类型>
iptables -P INPUT DROP      输入后没显示  清除所有规则之后生效,因为下面只剩下DROP  添加远程端口22

iptables -P FORWARD DROP
#--般在生产环境中设置网络型防火墙、主机型防火墙时都要设置默认规则为DROP,并设置白名单

#需要注意的是,当使用管理选项“-F”清空链时,默认策略不受影响。因此若要修改默认 策略,必须通过管理选项“-P”重新进行设置。另外,默认策略并不参与链内规则的顺序编排, 因此在其他规则之前或之后设置并无区别。

3.2.5 隐含扩展

iptables 在使用-p选项指明了特定的协议时,无需再用-m选项指明扩展模块的扩展机制,不需要手动加载扩展模块

要求以特定的协议匹配作为前提,包括端口、TCP标记、ICMP类型等条件。 端口匹配: --sport 源端口、--dport 目的端口 #可以是个别端口、端口范围

[!] --source-port, --sport port[:port]:匹配报文源端口,可为端口连续范围
[!] --destination-port,--dport port[:port]:匹配报文目标端口,可为连续范围
[!] --tcp-flags mask comp
     mask 需检查的标志位列表,用,分隔 , 例如 SYN,ACK,FIN,RST
     comp 在mask列表中必须为1的标志位列表,无指定则必须为0,用,分隔tcp协议的扩展选项

--tcp-flags SYN,ACK,FIN,RST SYN 表示要检查的标志位为SYN,ACK,FIN,RST四个,其中SYN必须为1,余下的必须为0,第一次握手
--tcp-flags SYN,ACK,FIN,RST SYN,ACK 第二次握手
#错误包

--tcp-flags ALL ALL  
--tcp_flags ALL NONE
--sport 1000          匹配源端口是1000的数据包
--sport 1000:3000     匹配源端口是1000-3000的数据包
--sport :3000         匹配源端口是3000及以下的数据包
--sport 1000:         匹配源端口是1000及以上的数据包
注意: --sport和--dport 必须配合-p <协议类型>使用

端口可以使用的范围 0-65535


[root@localhost ~]#iptables -A INPUT -p tcp  --sport 10000:30000 -j REJECT 
# input链 tcp协议 源端口 1000030000 全部被拒


TCP标记匹配: --tcp-flags TCP标记:SYN,RST,ACK,SYN,FIN
[root@localhost ~]#iptables -I INPUT -i ens33 -p tcp --tcp-flags FIN,RST,ACK SYN -j ACCEPT
#丢弃SYN请求包,放行其他包

4.3 显示扩展模块

显示扩展即必须使用-m选项指明要调用的扩展模块名称,需要手动加载扩展模块

4.3.1 multiport 扩展

[!] --source-ports,--sports port[,port|,port:port]...
#指定多个源端口 逗号隔开
[!] --destination-ports,--dports port[,port|,port:port]...
# 指定多个目标端口 逗号隔开
[!] --ports port[,port|,port:port]...
#多个源或目标端

例:

[root@localhost ~]#iptables -t filter -A INPUT -s 192.168.223.101 -p tcp --dport 22,80 -j REJECT 
#表示源端口192.168.223.101 不允许tcp协议 源目地端口22,80 通过
#不支持离散的端口号

image.png

4.3.2 iprange 扩展

指明连续的(但一般不是整个网络)ip地址范围

[!] --src-range from[-to] 源IP地址范围
[!] --dst-range from[-to] 目标IP地址范围

例子:

[root@localhost ~]#iptables -A INPUT  -m iprange --src-range 192.168.223.101-192.168.223.103 -j REJECT 
# 指定 源地址为192.168.223.101-192.168.223.103   3个地址无法访问 当前主机

4.3.3 mac地址

mac 模块可以指明源MAC地址,,适用于:PREROUTING, FORWARD,INPUT chains

[root@zabbix-server ~]#ip a
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether ###  00:0c:29:2a:d6:05    ####             
    inet 192.168.91.101/24 brd 192.168.91.255 scope global ens33
       valid_lft forever preferred_lft forever
    inet6 fe80::ce63:27de:ef4d:4f66/64 scope link 
       valid_lft forever preferred_lft forever


[root@localhost ~]#iptables -A INPUT -m mac --mac-source 00:0c:29:2a:d6:05 -j REJECT

这种需要收齐内每一个机器的mac地址,不现实所以不经常使用

4.3.4 string 字符串

对报文中的应用层数据做字符串模式匹配检测

--algo {bm|kmp} 字符串匹配检测算法
 bm:Boyer-Moore           算法
 kmp:Knuth-Pratt-Morris   算法

--from offset 开始查询的地方
--to offset   结束查询的地方


[!] --string pattern 要检测的字符串模式
[!] --hex-string pattern要检测字符串模式,16进制格式
[root@localhost ~]#iptables -A OUTPUT -p tcp --sport 80 -m string --algo bm --from 62 --string "bilibili" -j REJECT 
#注意  请求的包不带字符,回复的包带字符  所以要 output

因为数据帧在至少62位字符后才是真实数据才能查看到是否有相关的字符所以从62位开始

4.3.5 state

状态类型

  • NEW:新发出请求;连接追踪信息库中不存在此连接的相关信息条目,因此,将其识别为第一次发出的请求
  • ESTABLISHED:NEW状态之后,连接追踪信息库中为其建立的条目失效之前期间内所进行的通信状态
  • RELATED:新发起的但与已有连接相关联的连接,如:ftp协议中的数据连接与命令连接之间的关系
  • INVALID:无效的连接,如flag标记不正确
  • UNTRACKED:未进行追踪的连接,如:raw表中关闭追踪

格式:

 --state state
 
ipatables  -A INPUT -m state --state   NEW            -j  REJECT
ipatables  -A INPUT  -m state --state  ESTABLISHED    -j   ACCEPT
                  
 新用户不可以访问  久用户可以访问

image.png

4.4 规则优化,实践

  1. 安全放行所有入站和出站的状态为ESTABLISHED状态连接,建议放在第一条,效率更高

  2. 谨慎放行入站的新请求

  3. 有特殊目的限制访问功能,要在放行规则之前加以拒绝

  4. 同类规则(访问同一应用,比如:http ),匹配范围小的放在前面,用于特殊处理

  5. 不同类的规则(访问不同应用,一个是http,另一个是mysql ),匹配范围大的放在前面,效率更高

  6. 应该将那些可由一条规则能够描述的多个规则合并为一条,减少规则数量,提高检查效率

  7. 设置默认策略,建议白名单(只放行特定连接)

    A:iptables -P,不建议,容易出现“自杀现象”

    B:规则的最后定义规则做为默认策略,推荐使用,放在最后一条

4.5 保存规则

因为我们设置的规则每次开机重启后就又恢复默认规则了,所以需要使用iptables保存规则

持久保存规则:

iptables-save > /data/iptables
#将自己设置的规则存放在一个文件中

image.png

给这个文件加上一x权限,后面好开机自启

image.png

iptables-restore < /data/iptables
#将规则导出

image.png

将文件存入/etc/rc.d/rc/local 中,这个文件也要加执行权限
#把文件存放在这里开机就会自启了

image.png

5.SDNT DNAT

5.1 SNAT

SNAT原理与应用:

SNAT 应用环境:局域网主机共享单个公网IP地址接入Internet (私有IP不能在Internet中正常路由)

SNAT原理:源地址转换,根据指定条件修改数据包的源IP地址,通常被叫做源映谢

SNAT转换前提条件:

1.局域网各主机已正确设置IP地址、子网掩码、默认网关地址

2.Linux网关开启IP路由转发

linxu系统本身是没有转发功能 只有路由发送数据

image.png

5.2 DNAT

DNAT原理与应用:

DNAT应用环境:在Internet中发布位于局域网内的服务器

DNAT原理:目的地址转换,根据指定条件修改数据包的目的IP地址,保证了内网服务器的安全,通常被叫做目的映谢。

DNAT转换前提条件:

1.局域网的服务器能够访问Internet

2.网关的外网地址有正确的DNS解析记录

  1. Linux网关开启IP路由转发

image.png

5.3 实验操作

5.3.1 实验内容

要将1主机通过服务器的ip地址转换连接上2主机的网络,其实就是内网能上外网

5.3.2具体步骤

1.需要三台虚拟机才可以做实验,先设置服务器nat,服务器需要两张网卡先设置网卡

image.png

之后重启网络服务

image.png

2.在主服务器上打开路由转发功能,将net.ipv4.ip_forward = 1 写入/etc/sysctl.conf 文件下

image.png

  1. 再启动路由功能

image.png

4.去修改内网机器的网关,网关地址需指向主服务器的ens33ip地址,因为需要靠ens33网卡发送信息

image.png

之后重启网络服务

5.修改外网服务器7-3的网络模式改成仅主机模式

image.png

6.进入终端修改外网服务器的ip地址为外网地址,重启网络服务

image.png

现在是能ping通自己的

image.png

7.回到主服务器上做防火墙策略先清除nat上原先的规则

image.png

8.添加规则

iptables -t nat -A POSTROUTING -s 192.168.223.0/24 -o ens36 -j SNAT --to 12.0.0.1

iptables -t nat -A POSTROUTING -s 192.168.223.0/24 -o ens36 -j MASQUERADE 

image.png

9.之后去内网服务器中去测试自己能不能ping通外网的ip地址

image.png

10.之后去外网主机配置DNAT让外网主机也能ping通内网主机,先在内网环境下安装http,并开启服务(可以使用本地源,安装httpd)

image.png

11.制作一个网页

image.png

12.在主服务器中添加DNAT的规则进行数据的回传

iptables -t nat -A PREROUTING -i ens36 -s 12.0.0.0/24 -p tcp --dport 80 -j DNAT --to 192.168.223.101

image.png

13.到外网主机上检测是否能收到消息

image.png