Linux 防火墙 SNAT DNAT

news2024/12/28 4:25:09

SNAT原理与应用

SNAT 应用环境

局域网主机共享单个公网IP地址接入Internet

(私有IP地址不能在Internet中正常路由)


SNAT原理

修改数据包的源地址

        SNAT可以认为是路由器NAT中的easy ip

        DNAT可以认为是路由器NAT中的 nat server

 

 SNAT将 内网源地址 转化为网关的公网地址,以避免内网地址无法在公网中传输的情况

SNAT转换前提条件

  1. 局域网各主机已正确设置IP地址、子网掩码、默认网关地址
  2. Linux网关开启IP路由转发

    临时打开IP路由转发

    echo 1 > /proc/sys/net/ipv4/ip_forward
    或
    sysctl -w net.ipv4.ip_forward=1

    永久打开IP路由转发

    vim /etc/sysctl.conf
    net.ipv4.ip_forward = 1         
    #将此行写入配置文件
    sysctl -p                       
    #读取修改后的配置

 SNAT转换1:固定的公网IP地址

iptables -t nat -A POSTROUTING -s 192.168.80.0/24 -o ens33 -j SNAT --to 12.0.0.1
#指定单个公网IP或指定公网IP地址池(公网IP金贵,一般都指定单个)
iptables -t nat -A POSTROUTING -s 192.168.80.0/24 -o ens33 -j SNAT --to-source 12.0.0.1-12.0.0.10
                                    内网IP         出站 外网网卡        外网IP或地址池     

   

SNAT转换2:非固定的公网IP地址(共享动态IP地址)

iptables -t nat -A POSTROUTING -s 192.168.80.0/24 -o ens33 -j MASQUERADE
# -j MASQUERADE 伪装(随机公网IP)

小知识扩展

一个IP地址做SNAT转换,一般可以让内网 100到200 台主机实现上网。



DNAT原理与应用

DNAT 应用环境

在Internet中发布位于局域网内的服务器

DNAT原理

修改数据包的目的地址

        SNAT可以认为是路由器NAT中的 easy ip

        DNAT可以认为是路由器NAT中的 nat server


DNAT转换前提条件

  1. 局域网的服务器能够访问Internet
  2. 网关的外网地址有正确的DNS解析记录
  3. Linux网关开启IP路由转发
    vim /etc/sysctl.conf
    net.ipv4.ip_forward = 1
    
    sysctl -p

 

DNAT转换1:发布内网的Web服务

把从ens33进来的要访问web服务的数据包目的地址转换为 192.168.80.10
#--to或写全称--to-destination
iptables -t nat -A PREROUTING -i ens33 -d 12.0.0.1 -p tcp --dport 80 -j DNAT --to 192.168.80.10
iptables -t nat -A PREROUTING -i ens33 -d 12.0.0.1 -p tcp --dport 80 -j DNAT --to-destination 192.168.80.10
#                           入站 公网网卡  公网IP                                          内网服务器IP

///也可以目的IP DNAT到一个地址池 达到轮询内网服务器效果///
iptables -t nat -A PREROUTING -i ens33 -p tcp --dport 80 -j DNAT --to 192.168.80.10-192.168.80.20

注意

内网主机如果需要访问外网服务器,可以只单独配置SNAT

但是外网主机需要访问内网服务器,使用DNAT(用于内网服务器接收外网主机请求),一定要配合SNAT使用(用于内网服务器返回响应外网主机)

才能实现内网服务器响应数据包的正确返回(服务器内网ip转为公网ip才能在互联网中传输)


DNAT转换2:发布时修改目标端口            

#发布局域网内部的OpenSSH服务器,外网主机需使用250端口进行连接
iptables -t nat -A PREROUTING -i ens33 -d 12.0.0.1 -p tcp --dport 250 -j DNAT --to 192.168.80.10:22

#在外网环境中使用SSH测试
ssh -p 250 root@12.0.0.1
yum -y install net-tools  #若没有 ifconfig 命令可提前使用 yum 进行安装
ifconfig ens33

小知识扩展

主机型防火墙 主要使用 INPUT、OUTPUT 链,设置规则时一般要详细的指定到端口
网络型防火墙 主要使用 FORWARD 链,设置规则时很少去指定到端口,一般指定到IP地址或者到网段即可

DNAT也可用于将内网的特定端口映射到外网其他端口上,达到提高安全性的效果

例如 ssh 12.0.0.30:2345 → 192.168.80.20:22

iptables -t nat -nL
iptables -t nat -A PREROUTING -i ens33 -d 12.0.0.30 -p tcp --dport 2345 -j DNAT --to 192.168.80.20:22


 


防火墙规则的备份和还原

导出(备份)所有表的规则

设置完iptables规则后,使用iptables-save重定向输出规则到文件

iptables-save > /opt/ipt.txt

导入(还原)规则

将文件中的配置使用iptables-restore还原规则

iptables-restore < /opt/ipt.txt


永久更改规则   修改/etc/sysconfig/iptables文件 

将iptables规则文件保存在 /etc/sysconfig/iptables 中,iptables服务启动时会自动还原规则

设置完iptables规则后,使用iptables-save重定向输出规则到/etc/sysconfig/iptables,达到永久更改规则的效果

iptables-save > /etc/sysconfig/iptables
systemctl stop iptables                     #停止iptables服务会清空掉所有表的规则
systemctl start iptables                    #启动iptables服务会自动还原/etc/sysconfig/iptables 中的规则

tcpdump 抓包

在Linux可以使用tcpdump工具进行抓包分析,抓取的包可以使用winscp软件导入到windows用wireshark软件分析

           

        ↓ 示例如下 ↓

 

tcpdump tcp -i ens33 -t -s 0 -c 100 and dst port ! 22 and src net 192.168.1.0/24-w ./target.cap

tcp: ip icmp arp rarp 和 tp、udp、icmp这些协议选项等都放到第一个参数的位置,用来过滤数据包的类型
-i ens33 :只抓经过接口ens33的包
-t :不显示时间戳
-s 0 :抓取数据包时默认抓取长度为68字节。加上-s 0 后可以抓到完整的数据包
-c 100 :只抓取100个数据包
dst port !22:不抓取目标端口是22的数据包
src net 192.168.1.0/24 : 数据包的源网络地址为192.168.1.0/24 #只写net代表源、目的IP都匹配
-w ./target.cap : 保存成cap文件,方便用ethereal(即wireshark)分析

抓包常问面试题

 抓包用什么工具?

Linux         tcpdump

windows    wireshark

怎么抓包?

tcpdump工具 第一个参数指定协议  -i指定网卡 -dst port目的端口 -s0完整包 net指定地址 -w保存

抓ens33网卡tcp协议80端口包?

tcpdump tcp dst port 80 -i ens33 -s0 -w /opt/ens33.cap

抓ens33网卡源地址12.0.0.0网段的完整包?

tcpdump -i ens33 -s0 src net 12.0.0.0/24 -w /opt/ens33.cap
#抓ens33网卡源地址12.0.0.0网段的完整包

     




SNAT实验

 虚拟机配置

        其中网关由于双网段配置两张网卡

 

外网服务器

1.修改IP地址

vim /etc/sysconfig/network-scripts/ifcfg-ens33
    IPADDR=12.0.0.200
    GATEWAY=12.0.0.30
    #DNS1=    DNS不用注释
systemctl restart network

 2.准备web服务,用于测试访问

若先准备Apache再更改网卡IP,需要重启Apache服务,以将网页发布到新的网卡地址

yum install -y httpd #安装Apache web服务器
cd /var/www/html
echo 'THIS IS A WEB' > test.html
systemctl start httpd

3.关闭防火墙 清空iptables规则

systemctl stop firewalld.service
systemctl disable firewalld.service
setenforce 0
#关闭防火墙
iptables -F && iptables -t nat -F
#清除filter表与nat表所有规则

内网客户端

1.修改IP地址

vim /etc/sysconfig/network-scripts/ifcfg-ens33
    IPADDR=192.168.80.128
    GATEWAY=192.168.80.30
    #DNS1=    DNS不用注释
systemctl restart network

 2.关闭防火墙 清空iptables规则

systemctl stop firewalld.service
systemctl disable firewalld.service
setenforce 0
#关闭防火墙
iptables -F && iptables -t nat -F
#清除filter表与nat表所有规则

网关

 1.修改网卡IP地址

ifconfig 
#查看增加的网卡设备号

ens33作为内网网卡
ens36作为外网网卡

vim /etc/sysconfig/network-scripts/ifcfg-ens33 #修改内网网卡配置文件
    IPADDR=192.168.80.30
    NAME=ens33
    DEVICE=ens33
    #GATEWAY= 网关不用注释
    #DNS1=    DNS不用注释

cp /etc/sysconfig/network-scripts/ifcfg-ens33 /etc/sysconfig/network-scripts/ifcfg-ens36
#将ens33配置作为ens36模板修改

vim /etc/sysconfig/network-scripts/ifcfg-ens36 #修改外网网卡配置文件
    IPADDR=12.0.0.30
    NAME=ens36   #连接名称 可以不改
    DEVICE=ens36 #网卡设备名 必须改
    #GATEWAY= 网关不用注释
    #DNS1=    DNS不用注释

systemctl restart network

2.安装iptables 关闭防火墙 清空iptables规则

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

另外清除iptables的所有规则,以免先前制定的规则对实验产生影响。

systemctl stop firewalld.service
systemctl disable firewalld.service
setenforce 0
#关闭防火墙
yum -y install iptables iptables-services
systemctl enable --now iptables.service
#默认已经安装iptables,但是没有安装 iptables.service(该服务安装后可以使用systemctl管理iptables)
iptables -F && iptables -t nat -F
#清除filter表与nat表所有规则

3.打开IP路由转发

​vim /etc/sysctl.conf
    net.ipv4.ip_forward = 1

sysctl -p #重新读取配置文件

4.设置iptables规则(允许转发 ^ SNAT地址转换)

设置filter表forward链 192.168.80.0网段允许转发

iptables -t filter -A FORWARD -s 192.168.80.0/24 -j ACCEPT
#iptables -t filter -A FORWARD -s 192.168.80.0/24 -p --deport 80 -j ACCEPT 指定80端口允许转发

iptables -nL

此时已经可以使用内网客户机访问        12.0.0.200/test.html  

查看外网服务器Apache的访问日志,是否有192.168.80.128(这里是模拟演示,只为判断SNAT前后的IP地址转换情况。在公网环境中不会出现这种私网地址,直接公网路由器被丢弃)

cd /etc/httpd/logs/
cat access_log
#查看Apache的访问日志

grep 'test.html' access_log
#过滤出网站访问记录

设置SNAT地址转换 

iptables -t nat -A POSTROUTING -s 192.168.80.0/24 -o ens36 -j SNAT --to 12.0.0.30
#表nat 链POSTROUTING 出站网卡ens36 源地址192.168.80.0网段SNAT转换为12.0.0.30
iptables -nL -t nat

先清空浏览器缓存

SNAT地址转换后再次使用内网客户机访问        12.0.0.200/test.html  

查看外网服务器Apache的访问日志,访问地址变为12.0.0.30


DNAT实验

 虚拟机配置

        其中网关由于双网段配置两张网卡

 

内网服务器

1.修改IP地址

vim /etc/sysconfig/network-scripts/ifcfg-ens33
    IPADDR=192.168.80.20
    GATEWAY=192.168.80.30
    #DNS1=    DNS不用注释
systemctl restart network

 2.准备web服务,用于测试访问

若先准备Apache再更改网卡IP,需要重启Apache服务,以将网页发布到新的网卡地址

yum install -y httpd #安装Apache web服务器
cd /var/www/html
echo 'THIS IS A WEB' > test.html
systemctl start httpd

netstat -lntp | grep :80

3.关闭防火墙 清空iptables规则

systemctl stop firewalld.service
systemctl disable firewalld.service
setenforce 0
#关闭防火墙
iptables -F && iptables -t nat -F
#清除filter表与nat表所有规则

外网客户端

1.修改IP地址

vim /etc/sysconfig/network-scripts/ifcfg-ens33
    IPADDR=12.0.0.128
    GATEWAY=12.0.0.30
    #DNS1=    DNS不用注释
systemctl restart network

 2.关闭防火墙 清空iptables规则

systemctl stop firewalld.service
systemctl disable firewalld.service
setenforce 0
#关闭防火墙
iptables -F && iptables -t nat -F
#清除filter表与nat表所有规则

网关

 1.修改网卡IP地址

ifconfig 
#查看增加的网卡设备号

ens33作为内网网卡
ens36作为外网网卡

vim /etc/sysconfig/network-scripts/ifcfg-ens33 #修改内网网卡配置文件
    IPADDR=192.168.80.30
    NAME=ens33
    DEVICE=ens33
    #GATEWAY= 网关不用注释
    #DNS1=    DNS不用注释

cp /etc/sysconfig/network-scripts/ifcfg-ens33 /etc/sysconfig/network-scripts/ifcfg-ens36
#将ens33配置作为ens36模板修改

vim /etc/sysconfig/network-scripts/ifcfg-ens36 #修改外网网卡配置文件
    IPADDR=12.0.0.30
    NAME=ens36   #连接名称 可以不改
    DEVICE=ens36 #网卡设备名 必须改
    #GATEWAY= 网关不用注释
    #DNS1=    DNS不用注释

systemctl restart network

2.安装iptables 关闭防火墙 清空iptables规则

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

另外清除iptables的所有规则,以免先前制定的规则对实验产生影响。

systemctl stop firewalld.service
systemctl disable firewalld.service
setenforce 0
#关闭防火墙
yum -y install iptables iptables-services
systemctl enable --now iptables.service
#默认已经安装iptables,但是没有安装 iptables.service(该服务安装后可以使用systemctl管理iptables)
iptables -F && iptables -t nat -F
#清除filter表与nat表所有规则

3.打开IP路由转发

​vim /etc/sysctl.conf
    net.ipv4.ip_forward = 1

sysctl -p #重新读取配置文件

4.设置iptables规则(允许转发 ^ DNAT ^ SNAT地址转换)

设置filter表forward链 192.168.80.0网段12.0.0.0/24网段 允许转发

iptables -t filter -A FORWARD -s 192.168.80.0/24 -j ACCEPT
#iptables -t filter -A FORWARD -s 192.168.80.0/24 -p --deport 80 -j ACCEPT 指定80端口允许转发
iptables -t filter -A FORWARD -s 12.0.0.0/24 -j ACCEPT

iptables -nL

 设置DNAT地址转换 

iptables -t nat -A PREROUTING -i ens36 -d 12.0.0.30 -p tcp --dport 8080 -j DNAT --to 192.168.80.20:80
#表nat 链PRETROUTING 入站网卡ens36 DNAT转换目的地址12.0.0.30:8080为192.168.80.20:80
iptables -nL -t nat

设置SNAT地址转换 

iptables -t nat -A POSTROUTING -s 192.168.80.0/24 -o ens36 -j SNAT --to 12.0.0.30
#表nat 链POSTROUTING 出站网卡ens36 源地址192.168.80.0网段SNAT转换为12.0.0.30
iptables -nL -t nat

配置完成 访问测试

访问公网网关地址12.0.0.30:8080、12.0.0.30:8080/test.html

自动DNAT到内网192.168.0.20主机

在实验过程中出现了这种灵异现象,查了半天定位到client和gateway不通,看ifconfig,每次重启网卡后三五秒ip就被刷没了。按照经验去找是不是 DHCP冲突了,DHCP是关着的也没开,不影响。

最后发现是Linux管理网络的有两个机制,起冲突了。直接停掉NetworkManager,重启网络,重回风平浪静

systemctl stop NetworkManager
systemctl restart network

通过抓包查看DNAT/SNAT情况

在网关ens36抓包,查看DNAT前地址

tcpdump -i ens36 -s0 net 12.0.0.0/24 -w /opt/gatewayens36.cap

#抓包 入站网卡ens36 完整包  地址包含12.0.0.0网段 输出文件 /opt/ens36

在内网服务器ens33抓包,查看DNAT后地址

tcpdump -i ens33 -s0 net 12.0.0.0/24 -w /opt/serverens33.cap

使用winscp工具导出 抓包记录

可见,(外网客户机)12.0.0.128→12.0.0.30(网关公网ip)的请求被DNAT转换为(外网客户机)12.0.0.128→192.168.80.20(内网服务器私网ip)

并且返回的数据包也经过了SNAT,(内网服务器私网ip)192.168.80.20→12.0.0.128(外网客户机)转换为(网关公网ip)12.0.0.30→12.0.0.128(外网客户机)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/553323.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Vue2.0源码学习】虚拟DOM篇-Vue中的DOM-Diff

1. 前言 在上一篇文章介绍VNode的时候我们说了&#xff0c;VNode最大的用途就是在数据变化前后生成真实DOM对应的虚拟DOM节点&#xff0c;然后就可以对比新旧两份VNode&#xff0c;找出差异所在&#xff0c;然后更新有差异的DOM节点&#xff0c;最终达到以最少操作真实DOM更新…

FasterRCNN训练自己的数据集

2016年提出的Faster RCNN目标检测模型是深度学习现代目标检测算法的开山之作&#xff0c;也是第一个真正全流程都是神经网络的目标检测模型。 其主要步骤如下&#xff1a; 1&#xff0c;使用CNN对输入图片提取feature map. 2&#xff0c;对feature map上的每个点设计一套不同大…

Roboflow的使用

文章目录 前言一、使用labelimg标注数据集二、导入roboflow1.注册roboflow账户2.导入图片2.1 创建工作区workspace&#xff08;非必须&#xff09;2.2 创建项目 project2.3 导入 3、导出图片4、同一个数据集可以导出不同类型 前言 我自己也是一个小白不是很会&#xff0c;如果…

ASO优化之怎么做好关键词本地化覆盖

如果想要我们的应用走向国际化&#xff0c;被多个国家/地区使用&#xff0c;那么做好关键词本地化覆盖至关重要。我们可以主要针对中文和英文进行设置&#xff08;准备两套元数据&#xff09;&#xff0c;这样能够迅速增加应用商店ASO关键词覆盖数量。 那么我们要在哪里设置&a…

小白也能懂的薛斯通道抄底指标以及公式(附源码)

什么是薛斯通道&#xff1f; 上个世纪70年代&#xff0c;美国人薛斯最早发明了薛斯通道。 他本人曾是研究火箭运行的。 薛斯通道包括两组通道指标&#xff0c;分别是长期大通道指标&#xff08;100天&#xff09;和短期小通道指标&#xff08;10天&#xff09;。 股价实际上是被…

Netflix 团队解决了 Linux 内核中的 FUSE 死锁

Laf 公众号已接入了 AI 绘画工具 Midjourney&#xff0c;可以让你轻松画出很多“大师”级的作品。同时还接入了 AI 聊天机器人&#xff0c;支持 GPT、Claude 以及 Laf 专有模型&#xff0c;可通过指令来随意切换模型。欢迎前来调戏&#x1f447; <<< 左右滑动见更多 &…

Go与神经网络:张量运算

0. 背景 2023年年初&#xff0c;我们很可能是见证了一次新工业革命的起点&#xff0c;也可能是见证了AGI(Artificial general intelligence&#xff0c;通用人工智能)[1]孕育的开始。ChatGPT应用以及后续GPT-4大模型的出现&#xff0c;其震撼程度远超当年AlphaGo战胜人类顶尖围…

微信小程序-页面跳转wxAPI

官方文档地址&#xff1a;https://developers.weixin.qq.com/miniprogram/dev/api/route/wx.navigateTo.html wx.navigateTo(Object object) 更改首页代码&#xff0c;添加一个按钮&#xff0c;绑定一个事件的点击&#xff1a; <!--index.wxml--> <text>首页</t…

《前端》HTML常用标签

文章目录 HTML导读HTML格式常用标签标题标签段落标签格式化标签超链接标签标签的几种形式 表格标签列表标签表单标签按钮标签无语义标签 ​&#x1f451;作者主页&#xff1a;Java冰激凌 &#x1f4d6;专栏链接&#xff1a;前端 HTML导读 html是超文本标记语言 一般直接运行在…

33从零开始学Java之方法的递归调用到底是怎么回事?

作者&#xff1a;孙玉昌&#xff0c;昵称【一一哥】&#xff0c;另外【壹壹哥】也是我哦 千锋教育高级教研员、CSDN博客专家、万粉博主、阿里云专家博主、掘金优质作者 前言 在之前的文章中&#xff0c;壹哥给大家讲解了方法的定义、调用及参数、返回值等内容&#xff0c;接下…

广告行业中那些趣事系列62:keybert在实际业务中的使用分享

导读&#xff1a;本文是“数据拾光者”专栏的第六十二篇文章&#xff0c;这个系列将介绍在广告行业中自然语言处理和推荐系统实践。本篇作为之前keybert的补充主要介绍了keybert在实际业务中的使用分享&#xff0c;对于希望在实际业务场景中使用keybert的小伙伴可能有帮助。 欢…

微信小程序-页面生命周期方法

在经过上一篇文章的介绍之后&#xff0c;我们知道了大体的生命周期在什么时候执行&#xff0c;这次主要是以代码的形式来展示一下具体的阶段执行什么生命周期方法。 首先我们编写一个代码可以从首页跳转到日志页面&#xff1a; <!--index.wxml--> <text>首页</t…

项目中excel表格中由合同内容--转换为验收清单的办法(python操作excel表格)

需求&#xff1a; 把合同内容--转换为验收清单的办法&#xff08;python操作excel表格&#xff09; 1.字段重新排序 2.选择需要的表格列 原始的表格内容&#xff1a; 需要的格式&#xff1a; 涉及的技术点&#xff1a; 1.读取原始表格“readexcel1.xlsx”内容&#xff0c;修改…

第十一章 Productions最佳实践 - 生产电子表格

文章目录 第十一章 Productions最佳实践 - 生产电子表格生产电子表格界面设计 第十一章 Productions最佳实践 - 生产电子表格 生产电子表格 维护一个电子表格是很有帮助的&#xff0c;它可以逐个应用程序地组织信息系统。作为一般准则&#xff0c;应该为每个提供传入或传出数…

# 性能诊断 JProfiler 工具使用

性能诊断 JProfiler 工具使用 JProfiler是一个重量级的JVM监控工具&#xff0c;提供对JVM精确监控&#xff0c;其中堆遍历、CPU剖析、线程剖析看成定位当前系统瓶颈的得力工具。可以统计压测过程中JVM的监控数据&#xff0c;定位性能问题。 官网地址&#xff1a;Java Profiler…

初识linux之网络基础概念

目录 一、网络发展 1. 独立模式 2. 网络互联 二、认识协议 1. 为什么要有协议 2. 什么是协议 三、网络协议初识 1. 协议分层 2. 协议分层的优点 3. 理解分层 4. OSI七层模型 4.1 概念 4.2 模型形式 4.3 各层的作用 5. TCP/IP五层&#xff08;或四层&#xff09…

书评 | 《深入理解高并发编程:JDK核心技术》

书评 | 《深入理解高并发编程&#xff1a;JDK核心技术》 作者简介 冰河&#xff1a;互联网资深技术专家、数据库技术专家、分布式与微服务架构专家&#xff1b;多年来一直致力于分布式系统架构、微服务、分布式数据库、分布式事务与大数据技术的研究&#xff0c;在高并发、高可…

MySQL高级篇——关联查询和子查询优化

导航&#xff1a; 【黑马Java笔记踩坑汇总】Java基础进阶JavaWebSSMSpringBoot瑞吉外卖SpringCloud黑马旅游谷粒商城学成在线设计模式牛客面试题 目录 1. 关联查询优化 1.0 优化方案 1.1 数据准备 1.2 左外连接&#xff1a;优先右表创建索引&#xff0c;连接字段类型要一致…

numpy-stl实战3D建模【Python】

想象一下&#xff0c;我们需要用 python 编程语言构建某个物体的三维模型&#xff0c;然后将其可视化&#xff0c;或者准备一个文件以便在 3D 打印机上打印。 有几个库可以解决这些问题。 让我们来看看&#xff0c;如何在 Python 中从点、边和图元构建 3D 模型。 如何执行基本的…

如何对图片进行卷积计算

1 问题 如何对图片进行卷积计算&#xff1f; 2 方法 先导入torch和torch里的nn类&#xff0c;然后设置一个指定尺寸的随机像素值的图片&#xff0c;然后使用nn.conv2d函数进行卷积计算&#xff0c;然后建立全连接层&#xff0c;最后得到新的图片的尺寸 步骤: (1) 导入实验所需要…