第九章:NAT(网络地址转换协议)

article/2025/9/20 23:47:19

文章目录

  • 一、NAT
    • 1、NAT介绍
      • ①公有网络地址
      • ②私有网络地址
    • 2、NAT工作原理
    • 3、NAT功能
  • 二、NAT的实现方式
    • 1、静态转换(static Translation)
      • 实验对比
    • 2、动态转换
      • 2.1 ACL(访问控制列表)
      • 2.2 配置动态NAT
      • 实验效果
    • 3、端口多路复用
      • 3.1 PAT的作用
      • 3.2 PAT类型
      • 3.3 EasyIP配置
      • 3.4 静态PAT配置
  • 三、总结

一、NAT

1、NAT介绍

●NAT称为 “网络地址转换协议” ,用于实现私有网络和公有网络之间的互访。

●回顾一下网络地址:

①公有网络地址

是指在互联网上全球唯一的IP地址

●A类:1.0.0.1 ~ 126.255.255.254

●127开头的IP地址代表本机地址,

●B类:128.0.0.1 ~ 191.255.255.254

●C类:192.0.0.1 ~ 223.255.255.254

●D类:224.0.0.1 ~ 239.255.255.254

●E类:240.0.0.1 ~ 255.255.255.254

②私有网络地址

私有网络地址是指内部网络或主机的IP地址,IANA(互联网数字分配机构)规定将下列的IP保留用作死亡地址,不在internet上被分配,可在一个单位公司内部使用:

●A类私有地址:10.0.0.0~10.255.255.255

●B类私有地址:172.16.0.0~172.31.255.255

●C类私有地址:192.168.0.0~192.168.255.255

2、NAT工作原理

NAT用来将内网地址和端口号转换成合法的公网地址和端口号,建立一个会话,与共外网主机进行通信。

●特点:

NAT外部的主机无法跟位于NAT内部的主机通信,NAT内部主机想要通信,必须主动和公网的一个IP通信,路由器负责建立一个映射关系,从而实现数据的转发。

image-20220427171141156

●小结:

数据有来也有回

数据包是从内网------》外网(会转换源IP地址,由私网地址转换成公网地址)

数据包是从外网------》内网(会转换目的IP地址,由公网地址转换成内网地址)

3、NAT功能

●NAT不仅解决了IP地址不足的问题,而且还能够有效的避免来自网络外部的入侵,隐藏并保护网络内部的计算机。

**①宽带分享:**这是NAT主机最大的功能

**②安全防护:**NAT之内的PC端到internet上面时,他所显示的IP是NAT主机的公网IP,所以客户端段的PC就具有一定程度的安全性,外界在进行portscan(端口扫描)的时候,就侦测不到源客户端的pc。

**优点:**节省公有合法IP地址,处理地址重叠、增强灵活性、安全性。

**缺点:**延迟增大、配置和维护的复制性,不支持某些应用(比如VPN)

二、NAT的实现方式

1、静态转换(static Translation)

●静态NAT实现私网地址和公网地址的一对一转换,有多个私网地址就需要配置多少个公网地址。

●静态NAT不能节约公网地址,但可以起到隐藏内部网络的作用

●内部网络向外部网络发送报文时,静态将报文的原地址替换为对应的公网地址。

●外部网络向内部网络发送响应报文时,静态NAT将报文的目的地址替换为相应的私网地址。

●有两种配置方法

①全局模式下设置静态NAT

[R1]nat static global 10.0.0.5 inside 192.168.10.10  ###全局设置内网IP映射为公网IP
#中文:静态NAT   全局  转换后的公网IP 内部 内网IP
[R1]int  g0/0/1   ###外网口[R1-GigabitEthernet0/0/1]nat static enable     ###在网口上启动nat功能

②直接在接口上申明nat static

[R1]int g0/0/1   ###外网口[R1-GigabitEthernet0/0/1]nat static global 10.0.0.5 inside 192.168.10.10  ###全局设置内网IP映射为公网IP[R1]dis nat static   ###查看NAT静态配置信息

实验对比

image-20220427194142184

●说明:蓝色部分为内网,通过路由器AR1访问外部服务器。上述拓扑图进行正常配置,然后抓包查看公网时源IP和目标IP的地址,抓包图可以看出,源IP为:192.168.10.10,目标IP:10.0.0.2,这正是我们配置的IP。

后续将配置NAT静态,再次查看源和目标IP

image-20220427194743324

●说明:配置NAT静态后,重新抓包发现,源目标IP发生改变,源IP已被转换为公网IP地址。需要注意的是:转换后的公网IP地址不能与公网接口IP冲突。

2、动态转换

多个私网IP地址对应多个公网IP地址,基于地址池映射。相当于就多对多映射。

2.1 ACL(访问控制列表)

●在理解动态转换之前,需要了解ACL是什么。

●ACL为访问控制列表,主要作用就是允许或拒绝源地址和反掩码(/24的反掩码:0.0.0.255)通过

●简单理解:相当于一种协议,门槛,如果要用到动态NAT就必须使用ACL来进行定义数据怎么通过以什么方向通过。

①工作原理

当数据包从接口经过时,由于接口启动了ACL,此时路由器会对报文进行检查,然后做出相应的处理。

②ACL种类

基本ACL(2000-2999):只能匹配源IP地址

高级ACL(3000-3999):可以匹配源IP,目标IP,源端口、目标端口等三层和四层的字段和协议

二层ACL(4000-4999):根据数据包的源MAC地址、目的MAC地址、802.1q优先级、二层协议类型等二层信息指定规则。

③ACL的应用原则

基本ACL,尽量用在靠近目的点

高级ACL,尽量在靠近源的地方(可以保护带宽和其它资源)

2.2 配置动态NAT

●定义外网地址池

[R1]nat address-group 1 200.10.100.10 200.10.100.20   ###新建一个名为1的nat公网地址池,范围是200.10.100.10 到200.10.100.20

●定义ACL访问列表

[R1]acl 2000   ###创建ACL[R1-ACL-BASIC-2000]rule permit source 192.168.1.0 0.0.0.255中文:    规则  允许   源头 (要通过的IP地址和反掩码,注:如果要允许所有通过IP为:0.0.0.0)
###允许192.168.1.0网段通过(将permit换成deny则是拒绝)

●在外网口上设置动态IP地址转换

[R1]int g0/0/1   ###进入外网口[R1-GigabitEthernet0/0/1] nat outbound 2000 address-group 1中文:  端口出的方向          地址组为
###将ACL 2000匹配的数据转换为地址组里面的任意一个
[R1]dis nat outbound    ###查看nat信息表

实验效果

image-20220427210045562

●说明:根据静态NAT对比实验,理解了如果不设置NAT,抓包将会出现我们配置的源和目标IP,这里直接体现当我们配置了动态NAT时查看抓包数据。

●使用PC2去pingPC3时,原来源IP应为:192.168.1.20,现设置了动态NAT后,源IP将会在公网地址池中随机映射一个公网IP。由抓包数据发现源IP已变为200.10.12,属于我们设置的公网地址池中的一个。

●再来看一下PC1pingPC3时源IP将会映射什么样的公网IP。

image-20220427210746240

●说明:可发现源IP已变成200.10.100.17,也在公网地址池范围内。

3、端口多路复用

3.1 PAT的作用

●改变数据包的IP地址和端口号

●能大量节约公网IP地址

3.2 PAT类型

●动态PAT:包括NAPT和EasyIP

●静态PAT:包括NAT Server

3.3 EasyIP配置

●Easy IP:多个私网IP地址对应路由器外网接口公网IP地址,相当于多对一

优势:不需要像静态NAT和动态NAT那样消耗大量的公网IP地址。

●定义ACL访问控制列表

[R1]acl 2000   ###创建ACL[R1-acl-adv-2000]rule permit source 192.168.1.0 0.0.0.255
#允许192.168.1.0网段ip地址通过

在外网口上设置动态IP地址转换

[R1]int g0/0/1   ##进入外网口[R1-GigabitEthernet0/0/1]nat outbound 2000  ##当ACL2000匹配到源ip数据到达此接口时,转换为该接口的IP地址作为公网ip地址(此处不需要再标识地址池,因为前面没有定义,且是转换为端口ip)[R1]display nat outbound   ###查看nat信息表

●实验效果

image-20220427222857317

●说明:在PC2上进行配置PC3,可发现源ip地址已被转换为:200.10.100.1。

image-20220427223639402

●说明:在PC1上进行pingPC3,可发现源ip转换的外网地址与PC2转换的一致,所以可以呈现出多对一的效果。

3.4 静态PAT配置

●NAT Server:端口映射,将私网地址端口映射到公网地址,实现内网服务器供外网用户访问。

image-20220428000602248

●在外网口设置静态PAT转换

[R1]int g0/0/1   ###进入外网接口
[R1-GigabitEthernet0/0/1]nat server protocol tcp global 200.10.100.5 21 inside 192.168.1.10 21
###设置服务器ip和端口映射为公网ip地址和端口号(公网ip存储在本机回环上,且子网掩码为32,所以需要设置静态路由)
R1-GigabitEthernet0/0/1]display nat server   ###查看nat服务器
[R1]nat alg all enable 
#FTP服务默认数据端口没有开启,需要手动去开

●设置静态路由

[R1]ip route-static 0.0.0.0 0.0.0.0 200.10.100.2  ###设置默认路由
[R2]ip route-static 200.10.100.5 32 200.10.100.2  ###设置静态路由(目的地址是R1的公网地址,也就是服务器映射的公网地址,它存储在回环上面,子网掩码为32)

三、总结

●NAT 是对内网IP/PORT 转换为外网IP/PORT 的一种映射的技术
●NAT 的作用:
① 节省ipv4地址(跨2个网络环境的IP就可以借助于NAT的技术来支持重复IP)
② 安全性(让外网网络设备无法直接获取内网的IP/PORT)
③ 灵活性

●NAT 常用的方式:
① EasyIP ——》EIP : 一组内网地址映射为一个外网接口IP
场景:常规企业的公网IP 例如www.baidu.com 域名对应的IP
② 静态NAT
③ 静态PAT
④ 动态NAT-PAT
2 - 4 主要用于公司内部进行划分
●静态NAT 配置:
两种方式:一种在系统视图模式配置
一种在接口模式中配置

●动态NAT配置
需要配置ACL
●ACL 范围:
基本acl (2000-2999) :只能匹配源ip地址。 (与接口中的outbound 和inbound(方向)来配合)
高级acl (3000-3999) :可以匹配源ip、目标ip、源端口、目标端口等三层和四层的字段和协议。
二层ACL(4000-4999):根据数据包的源MAC地址、目的MAc地址、802.1q优先级、二层协议类型等二层信息制定规则。


http://chatgpt.dhexx.cn/article/HNKcgxuw.shtml

相关文章

【NAT网络地址转换(私网公网地址、静态NAT、动态NAT、NAPT、Easy IP、NAT Server)】-20211215、20211216

目录 一、NAT产生背景 1.产生背景 2.私网地址、公网地址​ 私网IP地址,既可以一定上缓解ip的不足,在私网里,ip地址可以随意使用。 公网地址,在需要访问公网时,运用网络地址转换NAT技术,可以实现。 二…

什么是私网,公网?

我们常说的内网和外网,通常是相对于防火墙而言的,在防火墙内部叫做内网,反之就是外网。 在一定程度上外网等同于公网,内网等同于私网。公网地址 公网地址是指在因特网上直接可达的地址,如果你有一个公网地址&#xff0…

NAT——公私网地址转换

NAT—网络地址转换 NAT NAT又称为网络地址转换,用于实现私有网络和公有网络之间的转换 私有和公有网络地址 公有网络地址是指互联网上全球唯一的IP地址 私有网络地址是指内部网络或者主机的IP地址 IANA(互联网数字分配机制)规定将下列的IP地…

公网地址和私网地址问题

服务器映射用于将内网服务器的私网地址映射为公网地址,供Internet用户访问。选择“静态映射”类型可以将每一台服务器映射成一个独立的公网IP地址。“服务器负载均衡”类型可以将多台服务器映射成同一个公网地址,Internet用户在访问这个公网地址时&#…

私网地址与Internet地址

一、A、B、C三类地址 可用地址范围备注A类1.0.0.1-126.255.255.254B类128.1.0.1-191.255.255.254C类192.0.1.1-223.255.255.254D类224.0.0.1-239.255.255.254D类为多播地址 说明: 1. 每一个地址都是用网络位主机位组成的。 2. 全0的和全1的网络位和主机位都要去掉…

计算机网络 网络层 私网地址和公网地址及子网划分

公网地址 公有地址分配和管理由Inter NIC(Internet Network Information Center 因特网信息中心)负责。各级ISP使用的公网地址都需要向Inter NIC提出申请,有Inter NIC统一发放,这样就能确保地址块不冲突。 私网地址(不…

为什么百度查到的ip和ipconfig查到的不一样;详解公网Ip和私网ip;详解网络分类ABC;

IP可以分为Public IP 和 Private IP,出现这种规划的原因在于IPv4所能表示的IP太少而电脑太多以至于不够用,然而只有Public IP才能直接连接上网络,所以对于那些公司,学校,政府机构等场所,就可以集中使用私有的IP进行管理…

挑战华为社招:掌握数据库其实很容易

前言 我的一个朋友,开发四年了,没跳过槽,四年时间也不过是从最开始的10K涨到了15K,经常和我吐槽工资低。去年8月份左右开始了他“骑驴找马”的行动,从各种地方找学习资料、刷面试题。值得庆幸的是,他出去找工作时疫情还不严重,异常顺利的面进了蚂蚁,薪资更是翻了几倍。…

javaspringboot面试,挑战华为社招

前言 redis简单来说 就是一个数据库,不过与传统数据库不同的是 redis 的数据是存在内存中的,所以存写速度非常快,因此 redis 被广泛应用于缓存方向。另外,redis 也经常用来做分布式锁。redis 提供了多种数据类型来支持不同的业务…

挑战华为社招:不止面试题,笔记源码统统都有,最强技术实现

前言 说起来开始进行面试是11月倒数第二周,上午9点,我还在去公司的公交上,突然收到蚂蚁的面试电话,其实算不上真正的面试。面试官只是和我聊了下他们在做的事情(主要是做双十一这里大促的稳定性保障,偏中间…

挑战华为社招:字节跳动上千道精选面试题还不刷起来

前言 成为优秀的架构师是大部分初中级工程师的阶段性目标。优秀的架构师往往具备七种核心能力:编程能力、调试能力、编译部署能力、性能优化能力、业务架构能力、在线运维能力、项目管理能力和规划能力。 这几种能力之间的关系大概如下图。编程能力、调试能力和编…

华为社招面试

工作第三年,在某招聘软件上填写简历后接到华为HR面试邀请,面试部门为运营商路由器,网上查看岗位相关要求之后发现与自己十分不匹配,不过机会难得,所以决定抱着学习的态度去参加面试。 2018年3月3号周六前往华为北研所Q…

华为社招技术二面,总结复盘

点击上方“Java基基”,选择“设为星标” 做积极的人,而不是积极废人! 源码精品专栏 原创 | Java 2020 超神之路,很肝~中文详细注释的开源项目RPC 框架 Dubbo 源码解析网络应用框架 Netty 源码解析消息中间件 RocketMQ 源码解析数…

华为社招三面面经分享,现已拿到offer,定级D4对标17级

一面:(面试均是华为的开发,每轮面试完都有反问你想了解的) 修饰符和可见性抽象类抽象方法synchronized,volatile一些java类型相关的基础知识,比如springbuilder和springbuffer哪个线程安全为什么要使用spr…

华为社招面试(拿到offer)

前段时间华为主动联系我要不要面试,抱着试一下的心态接受了面试邀请,最后顺利拿到了offer,不过最终由于方方面面的原因还是没有去。 本文主要分享下,面试的大致过程。 1. 初步电话技术面试 主要问了下,项目C的后台开…

5年测试经验华为社招:半月3次面试,成功拿到Offer

背景经历 当时我工作近5年,明显感觉到了瓶颈期。具体来说,感觉自己用过很多测试框架和测试工具、做过一些测试开发、也有过高并发的性能测试,但是从技术深度上感觉不足,到后期时做事也没有明显挑战,完全适应了公司节奏…

华为Java社招面试经历详解【已拿到offer】

这篇文章主要介绍了华为Java社招面试经历,详细记录了华为java面试的流程、相关面试题与参考答案,需要的朋友可以参考下。 看看自己能答对多少,如果能回答70%的题目,就大胆去阿里以及各互联网公司试试身手吧。本篇建议大家收藏、备用~ 华为Java社招面试&…

js对象字符串

1. 基本包装类型 基本包装类型就是把简单数据类型包装成为复杂数据类型,这样基本数据类型就有了属性和方法。 var str andy; console.log(str.length); //代码之所以能执行,是因为js会把基本数据类型包装为复杂数据类型,过程如下&#xff…

JS对象简介

JS对象含义:拥有属性和方法的数据 对象种类:Array,Boolean,Date,Math,Number,String,RegExp,全局属性和函数; 方法:toString 把布尔值转为字符串,并返回结果,对所有对象都具备 创建对象: var…