nat report finished

This commit is contained in:
2025-10-27 10:42:16 +08:00
parent 8e381cbbfd
commit a01f750663
50 changed files with 25152 additions and 0 deletions

320
9_NAT/nat.typ Normal file
View File

@ -0,0 +1,320 @@
#import "labtemplate.typ": *
#show: nudtlabpaper.with(title: "NAT配置",
author: "程景愉",
id: "202302723005",
training_type: "无军籍",
grade: "2023",
major: "网络工程",
department: "计算机学院",
advisor: "张军",
jobtitle: "工程师",
lab: "306-707",
date: "2025.09.30",
header_str: "《网络工程》实验报告",
)
#set page(header: [
#set par(spacing: 6pt)
#align(center)[#text(size: 11pt)[《网络工程》实验报告]]
#v(-0.3em)
#line(length: 100%, stroke: (thickness: 1pt))
],)
#show heading: it => box(width: 100%)[
#v(0.50em)
#set text(font: hei)
#it.body
]
#outline(title: "目录",depth: 3, indent: 1em)
#pagebreak()
#outline(
title: [图目录],
target: figure.where(kind: image),
)
#show heading: it => box(width: 100%)[
#v(0.50em)
#set text(font: hei)
#counter(heading).display()
// #h(0.5em)
#it.body
]
#set enum(indent: 0.5em,body-indent: 0.5em,)
#pagebreak()
= 实验目的
- 了解NAT网络地址转换的基本概念及其在网络中的作用
- 掌握NAT的三种主要类型静态NAT、动态NAT和PAT端口地址转换
- 理解NAT的工作原理特别是NAPT和NAT Server的工作机制
- 掌握在华为防火墙上配置NAT的步骤和方法能够通过实际操作验证NAT的功能
- 通过实验加深对NAT在网络安全中的应用的理解。
= 实验原理
== NAT的概念
=== NAT概述
#para[
网络地址转换Network Address TranslationNAT是一种将私有网络地址转换为公共网络地址的技术。NAT技术是为了解决IPv4地址资源短缺问题而提出的它通过将内部网络的私有地址转换为公共地址实现内部网络与外部网络的通信。NAT技术是一种在网络层对IP地址进行转换的技术主要用于解决IPv4地址资源短缺问题。
]
#para[
随着网络应用的增多IPv4地址枯竭的问题越来越严重。尽管IPv6可以从根本上解决IPv4地址空间不足问题但目前众多网络设备和网络应用大多是基于IPv4的因此在IPv6广泛应用之前使用一些过渡技术如CIDR、私网地址等是解决这个问题的主要方式NAT就是这众多过渡技术中的一种。
]
#para[
当私网用户访问公网的报文到达网关设备后如果网关设备上部署了NAT功能设备会将收到的IP数据报文头中的IP地址转换为另一个IP地址端口号转换为另一个端口号之后转发给公网。在这个过程中设备可以用同一个公网地址来转换多个私网用户发过来的报文并通过端口号来区分不同的私网用户从而达到地址复用的目的。
]
#para[
早期的NAT是指Basic NATBasic NAT在技术上实现比较简单只支持地址转换不支持端口转换。因此Basic NAT只能解决私网主机访问公网问题无法解决IPv4地址短缺问题。后期的NAT主要是指网络地址端口转换NAPTNetwork Address Port TranslationNAPT既支持地址转换也支持端口转换允许多台私网主机共享一个公网IP地址访问公网因此NAPT才可以真正改善IP地址短缺问题。
]
=== NAT主要功能
#para[
NAT主要有如下几个功能
]
1. IP地址转换将内部网络的私有地址转换为公共地址实现内部网络与外部网络的通信。
2. 端口转换将内部网络的私有端口转换为公共端口实现多个内部主机共享一个公共IP地址。
3. 地址复用多个内部主机共享一个公共IP地址提高地址利用率。
4. 安全防护NAT可以隐藏内部网络的真实IP地址提高网络安全性。
5. 减少IPv4地址的消耗NAT技术可以减少IPv4地址的消耗延长IPv4地址的使用寿命。
#pagebreak()
== NAT的类型
#para[
NAT技术主要有三种类型静态NAT、动态NAT和PAT端口地址转换。静态NAT是一种将内部网络的私有地址转换为公共地址的技术将内部网络的私有地址与公共地址一一对应实现内部网络与外部网络的通信。动态NAT是一种将内部网络的私有地址转换为公共地址的技术将内部网络的私有地址与公共地址动态对应实现内部网络与外部网络的通信。PAT是一种将内部网络的私有地址转换为公共地址的技术将内部网络的私有地址与公共地址动态对应同时还将端口号进行转换实现内部网络与外部网络的通信。
]
=== SNAT源NAT
#para[
源NAT在NAT转换时仅对报文中的源地址进行转换主要应用于私网用户访问公网的场景。当私网用户主机访问Internet时私网用户主机发送的报文到达NAT设备后设备通过源NAT技术将报文中的私网IPv4地址转换成公网IPv4地址从而使私网用户可以正常访问Internet。
]
#para[
根据转换时是否同时转换源端口号源NAT可以细分为如下几种类型详见@figure10
]
#figure(
image("download10.png",fit:"stretch",width: 100%),
caption: [源NAT分类]
)<figure10>
=== DNAT目的NAT
#para[
目的NAT在NAT转换时仅对报文中的目的地址和目的端口号进行转换主要应用于公网用户访问私网服务的场景。当公网用户主机发送的报文到达NAT设备后设备通过目的NAT技术将报文中的公网IPv4地址转换成私网IPv4地址从而使公网用户可以使用公网地址访问私网服务。
]
#para[
根据转换前后的地址是否存在一种固定的映射关系目的NAT可以细分为如下几种类型详见@figure11
]
#figure(
image("download11.png",fit:"stretch",width: 100%),
caption: [目的NAT分类]
)<figure11>
#pagebreak()
=== 双向NAT
#para[
双向NAT指的是在转换过程中同时转换报文的源信息和目的信息。双向NAT不是一个单独的功能而是源NAT和目的NAT的组合。双向NAT是针对同一条流在其经过设备时同时转换报文的源地址和目的地址。双向NAT主要应用在同时有外网用户访问内部服务器和私网用户访问内部服务器的场景。
]
=== STUN中定义的NAT类型
#para[
STUN 标准中根据私网IP地址和端口到NAT出口的公网IP地址和端口的映射方式把NAT分为如下四种类型详见@figure12
]
#figure(
image("download12.png",fit:"stretch",width: 100%),
caption: [STUN中定义的NAT类型]
)<figure12>
- Full Cone NAT完全锥型NAT
- Restricted Cone NAT限制锥型NAT
- Port Restricted Cone NAT端口限制锥型NAT
- Symmetric NAT对称NAT
== NAT的工作原理
#para[
根据前面的分类我分别从源NAT和目的NAT中各选一种NAT为代表介绍其工作原理。其他类型的NAT虽然在转换时转换的内容有细微差别但是工作原理都相似不再重复介绍。此外双向NAT是源NAT和目的NAT的组合双向NAT的工作原理也不再重复介绍。
]
=== NAPT工作原理
#para[
NAPT在进行地址转换的同时还进行端口转换可以实现多个私网用户共同使用一个公网IP地址上网。NAPT根据端口来区分不同用户真正做到了地址复用。
]
#figure(
image("download13.png",fit:"stretch",width: 80%),
caption: [NAPT工作原理示意图]
)<figure13>
#para[
当Host访问Web Server时设备的处理过程如下
]
1. 设备收到Host发送的报文后查找NAT策略发现需要对报文进行地址转换。
2. 设备根据源IP Hash算法从NAT地址池中选择一个公网IP地址替换报文的源IP地址同时使用新的端口号替换报文的源端口号并建立会话表然后将报文发送至Internet。
3. 设备收到Web Server响应Host的报文后通过查找会话表匹配到步骤2中建立的表项将报文的目的地址替换为Host的IP地址将报文的目的端口号替换为原始的端口号然后将报文发送至Intranet。
=== NAT Server工作原理
#para[
使用NAT Server时需要先在设备上配置公网地址和私网地址的固定映射关系。配置完成后设备将会生成Server-Map表项存放公网地址和私网地址的映射关系。该表项将一直存在除非NAT Server的配置被删除。
]
#figure(
image("download14.png",fit:"stretch",width: 65%),
caption: [NAT Server工作原理示意图]
)<figure14>
#para[
内部Server的私网IPv4地址为192.168.1.2/24对外的公网IPv4地址为1.1.1.10端口号都为80它们之间的映射关系在设备上已提前配置好。当Host访问Server时设备的处理过程如下
]
1. 设备收到Internet上用户访问1.1.1.10的报文的首包后查找并匹配到Server-Map表项将报文的目的IP地址转换为192.168.1.2。
2. 设备建立会话表然后将报文发送至Intranet。
3. 设备收到Server响应Host的报文后通过查找会话表匹配到步骤2中建立的表项将报文的源地址替换为1.1.1.10然后将报文发送至Internet。
4. 后续Host继续发送给Server的报文设备都会直接根据会话表项的记录对其进行转换而不会再去查找Server-map表项。
== NAT的应用
#para[
上文已介绍过不同的NAT类型适用于不同的应用场景。下面介绍几种典型的NAT应用。
]
=== 私网用户通过NAPT访问Internet
#para[
在许多小区、学校和企业的私网规划中由于公网地址资源有限通常给私网用户分配私网IPv4地址。此时可以配置源NAT来实现私网用户访问Internet。用户可以根据自己拥有的公网IPv4地址的个数选择使用NAPT或者Easy IP。
]
#para[
当用户拥有的公网IP地址个数较多时配置了NAT设备出接口的IP地址和其他应用之后还有可用的空闲公网IP地址时可以选择NAPT。NAPT使用地址池内的IPv4地址作为私网主机转换后的公网IPv4地址。如@figure15 所示在设备上配置NAPT实现私网主机访问Internet功能。
]
#figure(
image("download15.png",fit:"stretch",width: 65%),
caption: [私网用户通过NAPT访问Internet]
)<figure15>
=== 私网用户通过Easy IP访问Internet
#para[
当用户拥有的公网IPv4地址个数较少时配置了NAT设备出接口的IPv4地址和其他应用之后没有可用的空闲公网IPv4地址时可以选择Easy IP。Easy IP使用出接口的IPv4地址作为私网主机转换后的公网IPv4地址。如@figure16 所示在设备上配置Easy IP实现私网主机访问Internet功能。
]
=== 公网用户通过NAT Server访问私网服务器
#para[
在某些场合私网中有一些服务器需要向公网用户提供服务比如私网中部署的一些Web服务器、FTP服务器等NAT支持这样的应用此时可以配置NAT Server来实现公网用户访问私网服务器。如下图所示在设备上配置NAT Server固定“公网IP地址端口号”与“私网IP地址端口号”间的映射关系实现公网主机通过该映射关系访问私网服务器功能。
]
#figure(
image("download16.png",fit:"stretch",width: 65%),
caption: [公网用户通过NAT Server访问私网服务器]
)<figure16>
= 实验环境
== 实验背景
#para[
本实验在华为USG6303E-AC防火墙上进行通过配置NAT实现私网用户访问公网的功能。实验中将介绍NAT的配置步骤和注意事项并通过实际操作验证NAT的工作原理和效果。
]
== 实验设备
#align(center)[#table(
columns: (auto, auto,auto),
rows:(2em,2em,3em),
inset: 10pt,
align: horizon+center,
table.header(
[*设备名称*], [*设备型号*], [*设备数量*]
),
"防火墙", "华为USG6303E-AC", "1",
"PC", "联想启天M410
Windows 10", "3",
)]
#para[
另有网线若干。
]
= 实验步骤及结果
== 实验拓扑
#para[
按实验背景,绘制拓扑图如下:
]
#figure(image("实验拓扑.png",format: "png",fit:"stretch",width: 100%),caption: "实验拓扑图")
== 按照拓扑图接线
#para[
按照拓扑图接线。
]
#figure(image("机柜正面连线.png",format: "jpg",fit:"stretch",width: 60%),caption: "机柜接线图")
== 配置基本网络
=== 配置PC
- 配置PC1的IP地址为`192.168.1.2/24`,网关为`192.168.1.1`
- 配置PC2的IP地址为`10.13.1.2/24`,网关为`10.13.1.1`
#para[
步骤简单展示图略。这样配置之后PC1、PC2分别属于`trust``untrust`区域管理PC通过MGMT网口管理防火墙。
]
== 配置防火墙
=== 配置接口
#para[
配置`trust`区域接口`G0/0/1`的IP地址为`192.168.1.1/24`,区域为`trust`
]
#figure(image("trust接口配置.jpg",format: "jpg",fit:"stretch",width: 100%),caption: "trust接口配置")
#para[
配置`untrust`区域接口`G0/0/2`的IP地址为`10.13.1.2/24`,区域为`untrust`
]
#figure(image("untrust接口配置.jpg",format: "jpg",fit:"stretch",width: 100%),caption: "untrust接口配置")
=== 配置安全策略
#para[
@figure17 所示配置安全策略:允许`trust`区域的用户访问`untrust`区域的网络图中dmz策略非本实验重点
]
#figure(image("安全策略配置.jpg",format: "jpg",fit:"stretch",width: 100%),caption: "安全策略配置")<figure17>
=== 配置NAT
#para[
进入“策略”→“NAT策略”界面配置NAT策略@figure18 所示。
]
#para[
配置源NAT`trust`区域的用户的私网IP地址转换为`untrust`区域的公网IP地址:
]
#figure(image("NAT配置.jpg",format: "jpg",fit:"stretch",width: 100%),caption: "trust访问外网源地址转换")<figure18>
== 验证NAT功能
#para[
配置完成后PC1访问外网查看NAT策略表@figure19 所示:
]
#figure(image("ping之前.jpg",format: "jpg",fit:"stretch",width: 100%),caption: "NAT转换表ping之前")<figure19>
#para[
注意到图中的命中次数为3。
]
#para[
下面在PC1上ping外网PC2@figure20 所示可以ping通。
]
#figure(image("nat-trust.jpg",format: "jpg",fit:"stretch",width: 80%),caption: "PC1 ping PC2")<figure20>
#para[
此时再次查看NAT策略表@figure21 所示:
]
#figure(image("ping之后.jpg",format: "jpg",fit:"stretch",width: 100%),caption: "NAT转换表ping之后")<figure21>
#para[
注意到图中的命中次数为4命中转换策略说明NAT转换成功。
]
= 实验总结
#para[
本次实验通过在华为USG6303E-AC防火墙上配置NAT成功实现了私网用户访问公网的功能。通过实验我深入了解了NAT的基本概念、类型及其工作原理。实验过程中配置了防火墙的接口、安全策略和NAT策略并通过验证NAT功能确认了NAT转换的成功。
]
#para[
实验的主要收获如下:
]
1. NAT的基本概念NAT是一种将私有网络地址转换为公共网络地址的技术主要用于解决IPv4地址资源短缺问题同时也能提高网络的安全性。
2. NAT的类型我掌握了静态NAT、动态NAT和PAT的区别及其适用场景特别是PAT端口地址转换在地址复用中的重要作用。
3. NAT的工作原理通过实验我深入理解了NAPT和NAT Server的工作机制特别是NAPT如何通过端口号区分不同用户实现地址复用。
4. NAT的配置我学会了在华为防火墙上配置NAT的步骤包括接口配置、安全策略配置和NAT策略配置并通过实际操作验证了NAT的功能。
5. NAT的应用通过实验我认识到NAT在网络安全和地址复用中的广泛应用特别是在私网用户访问公网和公网用户访问私网服务器等场景中的重要作用。
#para[
实验过程中我也遇到了一些挑战例如在配置NAT策略时需要确保安全策略的正确配置否则会导致NAT转换失败。通过实验我不仅加深了对NAT技术的理解还提高了在实际网络环境中配置和调试NAT的能力。
]
#para[
总的来说本次实验达到了预期的目标帮助我更好地掌握了NAT技术及其在网络中的应用。未来我可以进一步探索NAT在复杂网络环境中的高级应用如双向NAT和NAT与VPN的结合等。
]
#show heading: it => box(width: 100%)[
#v(0.50em)
#set text(font: hei)
// #counter(heading).display()
// #h(0.5em)
#it.body
]
#pagebreak()
#bibliography("ref.yml",full: true,title: "参考文献",style:"gb-7714-2015-numeric")
/*
根据这个网站的格式示范https://github.com/typst/hayagriva/blob/main/docs/file-format.md
为这个网页生成.yml文件
https://blog.csdn.net/jxjdhdnd/article/details/138009187
*/