草庐IT

NAT基础:NAT技术原理,静态NAT、动态NAT、NAPT、Easy IP、NAT Server的原理,以及各NAT的配置方法和转换示例。

Python-派大星 2023-04-10 原文

目录

 

NAT 技术原理:

 静态NAT原理:

静态NAT(土豪用法):

 NAT转换示例:

 静态NAT配置方法介绍:

1、方式一:

2、方式二:

静态NAT的配置实例:

动态NAT原理:

动态NAT转换示例(1):

动态NAT配置介绍:

NAPT原理:

NAPT的配置方法:

 查看nat映射表:

Easy IP:

 Easy IP配置方法:

 NAT Server(静态PAT):

 NAT Server转换示例:

NAT Server配置示例:


NAT 技术原理:

NAT:对IP数据报文中的IP地址进行转换,是一种在现网中被广泛部署的技术,一般部署在网络出口设备,例如路由器或防火墙上。

        NAT的典型应用场景,在私有网络内部(园区、家庭)使用私有地址,出口设备部署NAT,对于“从内到外”的流量,网络设备通过NAT将数据包的源地址进行转换(转换成特定的公有地址),而对于“从外到内的”流量,则对数据包的目的地址进行转换。

        通过私有地址的使用结合NAT技术,可以有效节约公网IPv4地址。

 静态NAT原理:

静态NAT(土豪用法):

        一个私有地址对应并固定一个公有地址,现在企业几乎不会使用(因为并不会节省公网IP地址,也并不安全,因为可以直接通过公网地址找到主机。)

        每个私有地址都有一个与之对应并且固定的公有地址,即私有地址和公有地址的关系是一对一的映射。

支持双向互访:

        私有地址访问Internet经过出口设备NAT转换时,会被转换成对应的公有地址。同时,外部网络访问内部网络时,其报文中携带的公有地址(目的地址)也会被NAT设备转换成对应的私有地址。

 NAT转换示例:

 静态NAT配置方法介绍:

1、方式一:

接口视图下配置静态NAT,在连接外网的接口上配置:

给每个私有地址都配置一个公有地址,一对一转换(土豪用法)

nat static global +(gloval-address--公网地址) inside +(host-address--内网主机的私网地址)

例:
nat static global 10.10.1.1 inside 192.168.1.1

2、方式二:

1、系统视图下配置静态NAT:

nat static global +(global-address) inside +(host-address)

配置命令相同,视图为系统视图,之后在具体的接口下开启静态NAT

2、进入需要开启NAT的接口,在接口下启用NAT static功能:

nat static enable

 给多个主机配置静态NAT示例:

静态NAT的配置实例:

一个公网地址对应一个私网地址。

配完后需要在公网路由器配置回来的路由,回来时目标地址的私网地址改成公网地址即可。

动态NAT原理:

动态NAT:静态NAT严格地一对一进行地址映射,这就是导致即便内网主机长时间离线或者不发送数据时,与之对应的公有地址也处于使用状态,为了避免地址浪费,动态NAT提出了地址池的概念:所有可用的公有地址组成的地址池。

        当内部主机访问外部网络时,临时分配一个地址池中未使用的地址,并将改地址标记为“In Use”。当该主机不在访问外部网络时回收分配的地址,重新标记为“Not Use”。

        地址池中有多少个公网地址,就可以有多少个主机一起上网。例如有三个公网地址,那就有三个主机可以一起上网,第四个主机想要上网时会因为没有公网地址而访问不了外网。只能等待分配出去的公网地址被回收,才能被分配到公网地址上网。所以在现在的阶段,动态NAT也是使用的比较少的。

动态NAT转换示例(1):

        首先把公网地址组成一个地址池,当内网主机要访问外网的时候,报文到达了路由器,路由器会根据地址池中没有被使用的地址,在没有使用的地址中给他分配一个,做地址转换,然后把这个分配过去的公网地址做上“In Use”的标记,表示正在使用。 然后将数据发送给外网。

        这样就会产生一个临时的NAT表项,生成的是临时的NAT映射表。如果这个公网地址长时间没有与外网通信,这个临时的NAT表项里的地址会存在老化现象,老化就相当于被删掉了,最后会被回收到动态NAT地址池,等待重新分配。如果表项不断的转换地,老化时间就会不断刷新,如果没有转换地址,老化时间到了,改地址就会被回收。

 注意:

        动态的地址分配是看地址池中哪个地址空闲了,才做出的临时分配。例如上午获取的公网地址时122.1.2.2,中午出去吃饭空闲了,地址被回收了。下午再来时访问外网被分配的地址可能就是122.1.2.3了。

        所以说动态NAT地址分配的公网地址不是固定的,而是会存在变化的。

        而静态NAT配置好后,公网地址是固定不变的,内网主机会一直使用这个静态NAT分配的公网地址。

        回包时也是根据映射表查看公网地址对应的私网地址,进行地址转换,发送到内网主机。

动态NAT配置介绍:

1、创建地址池:

nat address-group group-index start-address end-address 

配置公有地址范围,其中group-index为地址池编号,start-address、end-address分别为地址池起始地址、结束地址。

例:
nat address-group 1 122.1.2.1 122.1.2.3  --- 允许三个用户同时访问外网,因为地址池有三个外网地址。

第一步配置地址池范围,可以配置一个公网地址,也可以配置一个范围的公网地址。有多少个公网地址就有多少个主机可以同时访问外网,所以现在动态NAT用的也比较少。

2、配置地址转换ACL规则:

Acl number
Rule permit source source-address source-wildcard

配置基础acl,匹配需要进行动态转换的源地址范围。

例:acl 2000
Rule 5 permit source 192.168.1.0 0.0.0.255   --- 允许192.168.1.0这个网段的IP地址使用这个地址池。

        配置第二步的作用是允许某网段IP地址通过,只对这个范围的IP地址进行NAT地址转换,限制其他网段或其他范围的IP地址进行NAT地址转换。

        在有多个地址池时,用acl访问控制列表可以控制哪些内网地址用哪个地址池。

3、接口视图下配置带地址池的NAT Outbound:

Nat outbound acl-number address-group group-index [no-pat] ---动态nat末尾一定要加no-pat

例:
进入外网出口:
nat outbound 2000 address-group 1 no-pat    ---acl编号+地址池编号+no-pat   只有报文的源地址匹配访问控制列表的时候,才会允许使用这个地址池中的地址。

 接口下关联ACL与地址池进行动态地址转换,no-pat参数指定不进行端口转换

注:第三步配置好后,要将对方路由器配置路由表,配置的回程路由目的地址是地址池中的地址,要让转换的地址有回来的路。

no-pat(No-Port Address Translation,非端口地址转换

动态NAT选择地址池中的地址进行地址转换时不会转换端口号,即No-PAT

 

 动态nat在华为ensp模拟器中不能够很好的实现,所以不推荐在模拟器上配置。

NAPT原理:

1、NAPT的NAT映射表比动态NAT的NAT映射表多了端口号,不同的私网地址会被分配到不同的端口号。同个公有地址也会被分到不同的端口号。

2、在做地址转换时,一个公有地址会被分配到不同的端口号,对应多个私有地址。

3、回包的时候也是依靠NAT映射表中的地址端口号,查找与之对应的地址进行回包。

4、相同的公网地址回包时,就是依靠端口号进行区分。然后找到该端口号对应的私有地址进行回包。

5、在做地址转换时,NAT映射表中公有地址端口号是不会重复的,除非老化后,该端口号被回收,该端口号才会被重新分配。详情可看产品手册。

6、使用NAPT技术的话,理论上一个公有地址可以被分配到65535+65535个端口号(TCP 1-65535 UDP 1-65535),也就是说一个公有地址可以分配给几万个个私有地址使用。

NAPT与动态NAT的区别:

1、动态NAT选择地址池中的地址转换时不会转换端口号,即no-pat,动态nat是非端口地址转换。公有地址与私有地址还是1:1的映射关系,无法提高公有地址利用率。

2、NAPT(Network address and port Translation,网络地址端口转换),NAPT是网络地址端口转换 :从地址池中选择地址进行地址转换时不仅转换IP地址,同时也会对端口号进行转换,从而实现公有地址与私有地址的1:N映射(一个公有地址对应多个私有地址),可以有效提高公有地址的利用率。

NAPT的配置方法:

对比动态NAT的配置方法,NAPT只需要在动态NAT的基础上,把no-pat删掉即可。

 查看nat映射表:

Dis nat session all 

Easy IP:

Easy IP:实现原理和NAPT相同,同时转换IP地址、传输层端口,区别在于Easy IP没有地址池的概念,使用接口地址做为NAT转换公有地址。

        Easy IP适用于不具有固定公网IP的场景:如通过DHCP、PPPoE拨号获取的私有网络出口,可以直接获取到的动态地址进行转换。

        Easy IP适用于小型公司或者家庭网络,没必要让运营商分配公有地址的时候使用。这时候就可以直接利用出口路由器的外网接口的地址来做一个NAPT。

 Easy IP配置方法:

  1. 直接创建ACL列表
  2. 配置访问规则,允许哪些内网用户进行地址转换
  3. 进入外网接口使用命令:nat outbound 2000    ---(首先接口要配置IP地址,才能转换)

将通过的数据IP地址转换成接口的IP地址

Easy IP配置示例:

只需要用ACL将内网主机的地址段规定好,然后在在外网接口上直接用就行了

 NAT Server(静态PAT):

NAT Server和静态NAT类似。

静态NAT 是 地址的一对一转换,允许外部主机访问内网主机的所有端口,可以双向互访,不安全。

NAT Server 是地址和端口的 一对一转换,只能让外部主机访问内网服务器的特定端口,更加的安全,仅支持单项互访,及外网主动访问内网。一般用于提供外网主机访问内网服务器的场景。

NAT Server使用场景:

NAT Server:指定[公有地址:端口]与[私有地址:端口]的一对一映射关系,将内网服务器映射到公网,当私有网络中的服务器需要对公网提供服务时使用。

外网主机主动访问[公有地址:端口]实现对内网服务器的访问。

当希望外部设备访问公司内部服务的时候,就可以使用NAT Server技术,可以让外部设备访问设定好的服务,不能访问公司所有服务,只允许访问这些允许访问的服务。

 NAT Server转换示例:

 

NAT Server配置示例:

在R1上配置NAT Server将内网服务器 192.168.1.10的80端口映射到公有地址122.1.2.1的8080端口。

配置方法:

1、进入连接外网接口:

2、进入接口后配置公有IP地址

3、配置nat server 转换,将Tcp协议访问202.10.10.1为目标地址的数据转换成192.168.1.10 8080端口。

nat sever protocol tcp global 202.10.10.1(运营商分配的公有地址) www inside 192.168.1.10 8080

有关NAT基础:NAT技术原理,静态NAT、动态NAT、NAPT、Easy IP、NAT Server的原理,以及各NAT的配置方法和转换示例。的更多相关文章

  1. ruby - 什么是填充的 Base64 编码字符串以及如何在 ruby​​ 中生成它们? - 2

    我正在使用的第三方API的文档状态:"[O]urAPIonlyacceptspaddedBase64encodedstrings."什么是“填充的Base64编码字符串”以及如何在Ruby中生成它们。下面的代码是我第一次尝试创建转换为Base64的JSON格式数据。xa=Base64.encode64(a.to_json) 最佳答案 他们说的padding其实就是Base64本身的一部分。它是末尾的“=”和“==”。Base64将3个字节的数据包编码为4个编码字符。所以如果你的输入数据有长度n和n%3=1=>"=="末尾用于填充n%

  2. 【鸿蒙应用开发系列】- 获取系统设备信息以及版本API兼容调用方式 - 2

    在应用开发中,有时候我们需要获取系统的设备信息,用于数据上报和行为分析。那在鸿蒙系统中,我们应该怎么去获取设备的系统信息呢,比如说获取手机的系统版本号、手机的制造商、手机型号等数据。1、获取方式这里分为两种情况,一种是设备信息的获取,一种是系统信息的获取。1.1、获取设备信息获取设备信息,鸿蒙的SDK包为我们提供了DeviceInfo类,通过该类的一些静态方法,可以获取设备信息,DeviceInfo类的包路径为:ohos.system.DeviceInfo.具体的方法如下:ModifierandTypeMethodDescriptionstatic StringgetAbiList​()Obt

  3. Unity 热更新技术 | (三) Lua语言基本介绍及下载安装 - 2

    ?博客主页:https://xiaoy.blog.csdn.net?本文由呆呆敲代码的小Y原创,首发于CSDN??学习专栏推荐:Unity系统学习专栏?游戏制作专栏推荐:游戏制作?Unity实战100例专栏推荐:Unity实战100例教程?欢迎点赞?收藏⭐留言?如有错误敬请指正!?未来很长,值得我们全力奔赴更美好的生活✨------------------❤️分割线❤️-------------------------

  4. postman接口测试工具-基础使用教程 - 2

    1.postman介绍Postman一款非常流行的API调试工具。其实,开发人员用的更多。因为测试人员做接口测试会有更多选择,例如Jmeter、soapUI等。不过,对于开发过程中去调试接口,Postman确实足够的简单方便,而且功能强大。2.下载安装官网地址:https://www.postman.com/下载完成后双击安装吧,安装过程极其简单,无需任何操作3.使用教程这里以百度为例,工具使用简单,填写URL地址即可发送请求,在下方查看响应结果和响应状态码常用方法都有支持请求方法:getpostputdeleteGet、Post、Put与Delete的作用get:请求方法一般是用于数据查询,

  5. 软件测试基础 - 2

    Ⅰ软件测试基础一、软件测试基础理论1、软件测试的必要性所有的产品或者服务上线都需要测试2、测试的发展过程3、什么是软件测试找bug,发现缺陷4、测试的定义使用人工或自动的手段来运行或者测试某个系统的过程。目的在于检测它是否满足规定的需求。弄清预期结果和实际结果的差别。5、测试的目的以最小的人力、物力和时间找出软件中潜在的错误和缺陷6、测试的原则28原则:20%的主要功能要重点测(eg:支付宝的支付功能,其他功能都是次要的)80%的错误存在于20%的代码中7、测试标准8、测试的基本要求功能测试性能测试安全性测试兼容性测试易用性测试外观界面测试可靠性测试二、质量模型衡量一个优秀软件的维度①功能性功

  6. MIMO-OFDM无线通信技术及MATLAB实现(1)无线信道:传播和衰落 - 2

     MIMO技术的优缺点优点通过下面三个增益来总体概括:阵列增益。阵列增益是指由于接收机通过对接收信号的相干合并而活得的平均SNR的提高。在发射机不知道信道信息的情况下,MIMO系统可以获得的阵列增益与接收天线数成正比复用增益。在采用空间复用方案的MIMO系统中,可以获得复用增益,即信道容量成倍增加。信道容量的增加与min(Nt,Nr)成正比分集增益。在采用空间分集方案的MIMO系统中,可以获得分集增益,即可靠性性能的改善。分集增益用独立衰落支路数来描述,即分集指数。在使用了空时编码的MIMO系统中,由于接收天线或发射天线之间的间距较远,可认为它们各自的大尺度衰落是相互独立的,因此分布式MIMO

  7. 阿里云国际版免费试用:如何注册以及注意事项 - 2

    作为新的阿里云用户,您可以50免费试用多种优惠,价值高达1,700美元(或8,500美元)。这将让您了解和体验阿里云平台上提供的一系列产品和服务。如果您以个人身份注册免费试用,您将获得价值1,700美元的优惠。但是,如果您是注册公司,您可以选择企业免费试用,提交基本信息通过企业实名注册验证,即可开始价值$8,500的免费试用!本教程介绍了如何设置您的帐户并使用您的免费试用版。​关于免费试用在我们开始此试用之前,您还必须遵守以下条款和条件才能访问您的免费试用:只有在一年内创建的账户才有资格获得阿里云免费试用。通过此免费试用优惠,用户可以免费试用免费试用活动页面上列出的每种产品一次。如果您有多个帐

  8. ES基础入门 - 2

    ES一、简介1、ElasticStackES技术栈:ElasticSearch:存数据+搜索;QL;Kibana:Web可视化平台,分析。LogStash:日志收集,Log4j:产生日志;log.info(xxx)。。。。使用场景:metrics:指标监控…2、基本概念Index(索引)动词:保存(插入)名词:类似MySQL数据库,给数据Type(类型)已废弃,以前类似MySQL的表现在用索引对数据分类Document(文档)真正要保存的一个JSON数据{name:"tcx"}二、入门实战{"name":"DESKTOP-1TSVGKG","cluster_name":"elasticsear

  9. ruby - 在 Ruby 中动态创建数组 - 2

    有没有办法在Ruby中动态创建数组?例如,假设我想遍历用户输入的书籍数组:books=gets.chomp用户输入:"TheGreatGatsby,CrimeandPunishment,Dracula,Fahrenheit451,PrideandPrejudice,SenseandSensibility,Slaughterhouse-Five,TheAdventuresofHuckleberryFinn"我把它变成一个数组:books_array=books.split(",")现在,对于用户输入的每一本书,我想用Ruby创建一个数组。伪代码来做到这一点:x=0books_array.

  10. ruby - 是否可以将 IRB 提示配置为动态更改? - 2

    我想在IRB中浏览文件系统并让提示更改以反射(reflect)当前工作目录,但我不知道如何在每个命令后进行提示更新。最终,我想在日常工作中更多地使用IRB,让bash溜走。我在我的.irbrc中试过这个:require'fileutils'includeFileUtilsIRB.conf[:PROMPT][:CUSTOM]={:PROMPT_N=>"\e[1m:\e[m",:PROMPT_I=>"\e[1m#{pwd}>\e[m",:PROMPT_S=>"FOO",:PROMPT_C=>"\e[1m#{pwd}>\e[m",:RETURN=>""}IRB.conf[:PROMPT_MO

随机推荐