精华内容
下载资源
问答
  • 2019-10-09 22:58:39

    工作中遇到一起防火墙双向地址映射的故障,对防火墙的工作原理和目标地址转换、 源地址转换有了进一步的了解,看到此文章,觉得茅塞顿开,记录于此。

    结果说在前面
    网络结构非常简单:外网-防火墙-内网。内网中架有网站,在外网使用域名访问。 内网中机器需要上外网,也需要用域名互访。 在这种情况下,地址转换规则应当这样配:

    外网访问内网,只需要做目标地址转换,不需要做源地址转换。

    内网通过域名访问内网,除了做目标地址转换,还必须做源地址转换。

    上面第一条有一种“例外”情况,就是网关配置错误的情况,比如我们遇到的: 内网6有 2 块网卡,都配置了同一网段的内网地址,并且每块网卡都配置了网关。 由于是同一网段,所以两个网关是一样的。 在这种情况下,外网访问也必须做源地址转换, 否则内网能收到请求,但处理结果无法返回外网,外网看到的结果是没有回应。

    防火墙数据包转换发送原理
    为什么会这样?这要从防火墙的原理说起。 上面的外网访问内网,正常处理过程应该是这样的:

    防火墙收到外网访问请求数据包,格式中包含【防火墙外网IP 外网用户IP】

    防火墙进行目标地址转换,数据包变成【内网IP 外网用户IP】

    内网服务器收到请求,进行处理,返回结果数据包【外网用户IP 内网IP】, 由于目标地址是外网IP,所有经过路由,此数据包被发向网关(防火墙)

    针对返回数据包,防火墙做目标地址转换的反操作, 数据包变成【外网用户IP 防火墙外网IP】

    数据包发回请求用户。

    刚才说到的“例外”情况,问题就出在步骤 3,内网服务器返回结果数据包中, 内网IP 不是防火墙指向的那个 IP,而是这太内网服务器的另一个 IP 地址, 也就是说内网服务器通过网卡1接受了请求,却从网卡2发送返回数据。 这样的数据包到了防火墙之后,目标地址转换的反操作会失败(内网IP 不一致), 所以数据依然会通过防火墙发给用户,但却是一个新的 TCP 会话/连接, 无法和原先的用户请求包对应。 结果就是新的数据包到了用户那里,不知道是给谁的, 而用户原先发送的请求,也一直“收不到”回应数据包。 外在表现就是用户看到请求发送成功,却没有回应。

    在这种情况下,如果同时做了源地址转换是能够通的,处理过程如下:

    防火墙收到外网访问请求数据包,格式中包含【防火墙外网IP 外网用户IP】

    防火墙进行目标地址转换,数据包变成【内网IP 外网用户IP】, 进行源地址转换,数据包变成【内网IP 防火墙/网关IP】

    内网服务器收到请求,进行处理,返回结果数据包【防火墙/网关IP 内网IP】, 由于目标地址仍然是防火墙/网关IP,所以防火墙能够找到相应的连接, 会接受数据包并进行处理。

    针对返回数据包,防火墙 做源地址转换的反操作,数据包变成【外网用户IP 内网IP】, 做目标地址转换的反操作, 数据包变成【外网用户IP 防火墙外网IP】®

    数据包发回请求用户。

    可以看到,即使®操作失败,由于防火墙已经将内网服务器返回数据包和 防火墙接收的外网用户请求连接成功对应, 结果数据包的目标地址也成功转换成了外网用户IP, 所以数据能够成功发回请求用户,并和用户请求会话/连接相对应。

    从另外一个角度看,外网访问做双向地址转换虽然可行,但有一个缺点, 就是数据包到达内网服务器时,外网用户IP 被转换成了防火墙/网关IP, 这样内网中的应用程序就无法获取外网用户的真实IP了, 只能看到请求来自防火墙/网关IP。

    内网通过域名访问内网
    上面的都理解之后,内网通过域名访问内网为什么必须要做双向转换就清楚了。 问题同样出在接受请求的服务器处理完,发送返回数据包时。

    内网1 通过域名访问内网6,在没有做源地址转换时的情形:

    由于是通过域名访问,所以请求数据通过防火墙转发给内网6, 用户IP是内网地址(这是关键)

    内网6处理完毕发送结果数据包,返回数据包的目标地址就是内网1的地址 由于同在一个子网内,数据包会通过交换机直接发向内网1,不过防火墙

    问题产生了,在内网1 上,请求数据直接发向防火墙,返回数据直接来自内网6, 不对应,又是一宗没有回应数据包的情形。

    如果同时做了源地址转换,问题就能够解决。因为内网1 的请求数据在通过防火墙时, 用户地址(内网1 IP)会被转换成防火墙/网关IP, 返回数据包也就会发往防火墙/网关IP,再被防火墙转换发回 内网1, 不存在内网1 和内网6 的直接对话, TCP 数据包也能对应上,访问就没有问题了。

    更多相关内容
  • NAT(地址转换技术)详解

    万次阅读 多人点赞 2018-03-17 16:31:35
    ip地址基础知识 NAT技术的工作原理和特点 静态NAT 动态NAT NAT重载(经常应用到实际中) NAT技术的优缺点 优点 缺点 NAT穿越技术 应用层网关(ALG) ALG的实际应用 NAT技术的未来 参考文献 NAT产生背景...

    目录

    NAT产生背景

    今天,无数快乐的互联网用户在尽情享受Internet带来的乐趣。他们浏览新闻,搜索资料,下载软件,广交新朋,分享信息,甚至于足不出户获取一切日用所需。企业利用互联网发布信息,传递资料和订单,提供技术支持,完成日常办公。然而,Internet在给亿万用户带来便利的同时,自身却面临一个致命的问题:构建这个无所不能的Internet的基础IPv4协议已经不能再提供新的网络地址了。

    2011年2月3日中国农历新年, IANA对外宣布:IPv4地址空间最后5个地址块已经被分配给下属的5个地区委员会。2011年4月15日,亚太区委员会APNIC对外宣布,除了个别保留地址外,本区域所有的IPv4地址基本耗尽。一时之间,IPv4地址作为一种濒危资源身价陡增,各大网络公司出巨资收购剩余的空闲地址。其实,IPv4地址不足问题已不是新问题,早在20年以前,IPv4地址即将耗尽的问题就已经摆在Internet先驱们面前。这不禁让我们想去了解,是什么技术使这一危机延缓了尽20年。

    要找到问题的答案,让我们先来简略回顾一下IPv4协议。

    IPv4即网际网协议第4版——Internet Protocol Version 4的缩写。IPv4定义一个跨越异种网络互连的超级网,它为每个网际网的节点分配全球唯一IP地址。如果我们把Internet比作一个邮政系统,那么IP地址的作用就等同于包含城市、街区、门牌编号在内的完整地址。IPv4使用32bits整数表达一个地址,地址最大范围就是232 约为43亿。以IP创始时期可被联网的设备来看,这样的一个空间已经很大,很难被短时间用完。然而,事实远远超出人们的设想,计算机网络在此后的几十年里迅速壮大,网络终端数量呈爆炸性增长。

    更为糟糕的是,为了路由和管理方便,43亿的地址空间被按照不同前缀长度划分为A,B,C,D类地址网络和保留地址。其中,A类网络地址127段,每段包括主机地址约1678万个。B类网络地址16384段,每段包括65536个主机地址。
    ANA向超大型企业/组织分配A类网络地址,一次一段。向中型企业或教育机构分配B类网络地址,一次一段。这样一种分配策略使得IP地址浪费很严重,很多被分配出去的地址没有真实被利用,地址消耗很快。以至于二十世纪90年代初,网络专家们意识到,这样大手大脚下去,IPv4地址很快就要耗光了。于是,人们开始考虑IPv4的替代方案,同时采取一系列的措施来减缓IPv4地址的消耗。正是在这样一个背景之下,本期的主角闪亮登场,它就是网络地址转换——NAT。

    NAT是一项神奇的技术,说它神奇在于它的出现几乎使IPv4起死回生。在IPv4已经被认为行将结束历史使命之后近20年时间里,人们几乎忘了IPv4的地址空间即将耗尽这样一个事实——在新技术日新月异的时代,20年可算一段漫长的历史。更不用说,在NAT产生以后,网络终端的数量呈加速上升趋势,对IP地址的需求剧烈增加。此足见NAT技术之成功,影响之深远。

    说它神奇,更因为NAT给IP网络模型带来了深远影响,其身影遍布网络每个角落。根据一份最近的研究报告,70%的P2P用户位于NAT网关以内。因为P2P主要运行在终端用户的个人电脑之上,这个数字意味着大多数PC通过NAT网关连接到Internet。如果加上2G和3G方式联网的智能手机等移动终端,在NAT网关之后的用户远远超过这个比例。

    ip地址基础知识

    同学你现在做两个操作

    • 打开你的命令行输入ipconfig查询你的Ip地址
    • 打开百度,输入Ip查询,查询你的ip地址

    你是不是发现了一件很神奇的事情,这两个地址是不一样的。但是我们又经常说每个主机只有一个ip,这个ip是他的身份标识。这完全矛盾啊。这就引出了我们今天要讲的NAT技术
    其实并不矛盾。这里我们要引入公网ip和私网ip这两个概念,关于这个问题的解读。大家可以参看我的博文。为什么百度查到的ip和ipconfig查到的不一样

    NAT技术的工作原理和特点

    NAT名字很准确,网络地址转换,就是替换IP报文头部的地址信息。NAT通常部署在一个组织的网络出口位置,通过将内部网络IP地址替换为出口的IP地址提供公网可达性和上层协议的连接能力。那么,什么是内部网络IP地址?

    RFC1918规定了三个保留地址段落:10.0.0.0-10.255.255.255;172.16.0.0-172.31.255.255;192.168.0.0-192.168.255.255。这三个范围分别处于A,B,C类的地址段,不向特定的用户分配,被IANA作为私有地址保留。这些地址可以在任何组织或企业内部使用,和其他Internet地址的区别就是,仅能在内部使用,不能作为全球路由地址。这就是说,出了组织的管理范围这些地址就不再有意义,无论是作为源地址,还是目的地址。对于一个封闭的组织,如果其网络不连接到Internet,就可以使用这些地址而不用向IANA提出申请,而在内部的路由管理和报文传递方式与其他网络没有差异。

    对于有Internet访问需求而内部又使用私有地址的网络,就要在组织的出口位置部署NAT网关,在报文离开私网进入Internet时,将源IP替换为公网地址,通常是出口设备的接口地址。一个对外的访问请求在到达目标以后,表现为由本组织出口设备发起,因此被请求的服务端可将响应由Internet发回出口网关。出口网关再将目的地址替换为私网的源主机地址,发回内部。这样一次由私网主机向公网服务端的请求和响应就在通信两端均无感知的情况下完成了。依据这种模型,数量庞大的内网主机就不再需要公有IP地址了。
    NAT的转换示意图如下所示
    这里写图片描述
    我们一般使用私网ip作为局域网内部的主机标识,使用公网ip作为互联网上通信的标识
    在整个NAT的转换中,最关键的流程有以下几点

    • 网络被分为私网和公网两个部分,NAT网关设置在私网到公网的路由出口位置,双向流量必须都要经过NAT网关
    • 网络访问只能先由私网侧发起,公网无法主动访问私网主机;
    • NAT网关在两个访问方向上完成两次地址的转换或翻译,出方向做源信息替换,入方向做目的信息替换;
    • NAT网关的存在对通信双方是保持透明的;
    • NAT网关为了实现双向翻译的功能,需要维护一张关联表,把会话的信息保存下来。

    静态NAT

    如果一个内部主机唯一占用一个公网IP,这种方式被称为一对一模型。此种方式下,转换上层协议就是不必要的,因为一个公网IP就能唯一对应一个内部主机。显然,这种方式对节约公网IP没有太大意义,主要是为了实现一些特殊的组网需求。比如用户希望隐藏内部主机的真实IP,或者实现两个IP地址重叠网络的通信。
    这里写图片描述

    动态NAT

    它能够将未注册的IP地址映射到注册IP地址池中的一个地址。不像使用静态NAT那样,你无需静态地配置路由器,使其将每个内部地址映射到一个外部地址,但必须有足够的公有因特网IP地址,让连接到因特网的主机都能够同时发送和接收分组

    这里写图片描述

    NAT重载(经常应用到实际中)

    这是最常用的NAT类型。NAT重载也是动态NAT,它利用源端口将多个私网ip地址映射到一个公网ip地址(多对一)。那么,它的独特之处何在呢?它也被称为端口地址特换(PAT)。通过使用PAT(NAT重载),只需使用一个公网ip地址,就可将数千名用户连接到因特网。其核心之处就在于利用端口号实现公网和私网的转换。
    面对私网内部数量庞大的主机,如果NAT只进行IP地址的简单替换,就会产生一个问题:当有多个内部主机去访问同一个服务器时,从返回的信息不足以区分响应应该转发到哪个内部主机。此时,需要NAT设备根据传输层信息或其他上层协议去区分不同的会话,并且可能要对上层协议的标识进行转换,比如TCP或UDP端口号。这样NAT网关就可以将不同的内部连接访问映射到同一公网IP的不同传输层端口,通过这种方式实现公网IP的复用和解复用。这种方式也被称为端口转换PAT、NAPT或IP伪装,但更多时候直接被称为NAT,因为它是最典型的一种应用模式。
    这里写图片描述
    举个例子,客户端172.18.250.6和百度服务器202.108.22.5通信,172.18.250.6发送数据时,先转换为219.155.6.240:1723(任意>1024的随机端口),然后再利用这个身份发送数据给百度服务器,然后百度服务器回应数据并发送给219.155.6.240:1723,NAT网关检查自己的关联表,意识到这是自己地私网中172.18.250.6的数据包,然后把这个数据发送给客户端

    也就是说,我们利用端口号的唯一性实现了公网ip转换为私网ip的这一步。PAT(NAT重载)能够使用传输层端口号来标识主机,因此,从理论上说,最多可让大约65000台主机共用一个公有IP地址

    NAT技术的优缺点

    优点

    • 节省合法的公有ip地址
    • 地址重叠时,提供 解决办法
    • 网络发生变化时,避免重新编址(这个问题具有亲身体会,原本所在的实习单位搬迁,我们搬到了新的住处,网络环境发生了一些变化,但是由于nat技术的特点,我们局域网的地址并没有发生改变,我们依然使用着最初的编址方案)

      NAT对我们来说最大的贡献就是帮助我们节省了大量的ip资源

    缺点

    在介绍NAT的诸多缺点之前,我们先简单介绍下什么是IP的端到端通信:
    IP协议的一个重要贡献是把世界变得平等。在理论上,具有IP地址的每个站点在协议层面有相当的获取服务和提供服务的能力,不同的IP地址之间没有差异。人们熟知的服务器和客户机实际是在应用协议层上的角色区分,而在网络层和传输层没有差异。一个具有IP地址的主机既可以是客户机,也可以是服务器,大部分情况下,既是客户机,也是服务器。端到端对等看起来是很平常的事情,而意义并不寻常。但在以往的技术中,很多协议体系下的网络限定了终端的能力。正是IP的这个开放性,使得TCP/IP协议族可以提供丰富的功能,为应用实现提供了广阔平台。因为所有的IP主机都可以服务器的形式出现,所以通讯设计可以更加灵活。使用UNIX/LINUX的系统充分利用了这个特性,使得任何一个主机都可以建立自己的HTTP、SMTP、POP3、DNS、DHCP等服务。与此同时,很多应用也是把客户端和服务器的角色组合起来完成功能。例如在VoIP应用中,用户端向注册服务器登录自己的IP地址和端口信息过程中,主机是客户端;而在呼叫到达时,呼叫处理服务器向用户端发送呼叫请求时,用户端实际工作在服务器模式下。在语音媒体流信道建立过程后,通讯双向发送语音数据,发送端是客户模式,接收端是服务器模式。而在P2P的应用中,一个用户的主机既为下载的客户,同时也向其他客户提供数据,是一种C/S混合的模型。上层应用之所以能这样设计,是因为IP协议栈定义了这样的能力。试想一下,如果IP提供的能力不对等,那么每个通信会话都只能是单方向发起的,这会极大限制通信的能力。细心的读者会发现,前面介绍NAT的一个特性正是这样一种限制。没错,NAT最大的弊端正在于此——破坏了IP端到端通信的能力。
    NAT的弊端
    首先,NAT使IP会话的保持时效变短。因为一个会话建立后会在NAT设备上建立一个关联表,在会话静默的这段时间,NAT网关会进行老化操作。这是任何一个NAT网关必须做的事情,因为IP和端口资源有限,通信的需求无限,所以必须在会话结束后回收资源。通常TCP会话通过协商的方式主动关闭连接,NAT网关可以跟踪这些报文,但总是存在例外的情况,要依赖自己的定时器去回收资源。而基于UDP的通信协议很难确定何时通信结束,所以NAT网关主要依赖超时机制回收外部端口。通过定时器老化回收会带来一个问题,如果应用需要维持连接的时间大于NAT网关的设置,通信就会意外中断。因为网关回收相关转换表资源以后,新的数据到达时就找不到相关的转换信息,必须建立新的连接。当这个新数据是由公网侧向私网侧发送时,就会发生无法触发新连接建立,也不能通知到私网侧的主机去重建连接的情况。这时候通信就会中断,不能自动恢复。即使新数据是从私网侧发向公网侧,因为重建的会话表往往使用不同于之前的公网IP和端口地址,公网侧主机也无法对应到之前的通信上,导致用户可感知的连接中断。NAT网关要把回收空闲连接的时间设置到不发生持续的资源流失,又维持大部分连接不被意外中断,是一件比较有难度的事情。在NAT已经普及化的时代,很多应用协议的设计者已经考虑到了这种情况,所以一般会设置一个连接保活的机制,即在一段时间没有数据需要发送时,主动发送一个NAT能感知到而又没有实际数据的保活消息,这么做的主要目的就是重置NAT的会话定时器。

    其次,NAT在实现上将多个内部主机发出的连接复用到一个IP上,这就使依赖IP进行主机跟踪的机制都失效了。如网络管理中需要的基于网络流量分析的应用无法跟踪到终端用户与流量的具体行为的关系。基于用户行为的日志分析也变得困难,因为一个IP被很多用户共享,如果存在恶意的用户行为,很难定位到发起连接的那个主机。即便有一些机制提供了在NAT网关上进行连接跟踪的方法,但是把这种变换关系接续起来也困难重重。基于IP的用户授权不再可靠,因为拥有一个IP的不等于一个用户或主机。一个服务器也不能简单把同一IP的访问视作同一主机发起的,不能进行关联。有些服务器设置有连接限制,同一时刻只接纳来自一个IP的有限访问(有时是仅一个访问),这会造成不同用户之间的服务抢占和排队。有时服务器端这样做是出于DOS攻击防护的考虑,因为一个用户正常情况下不应该建立大量的连接请求,过度使用服务资源被理解为攻击行为。但是这在NAT存在时不能简单按照连接数判断。
    总之,缺点大概如下:

    • 无法进行端到端的ip跟踪(破坏了端对端通信的平等性)
    • 很多应用层协议无法识别(比如ftp协议 )

    NAT穿越技术

    前面解释了NAT的弊端,为了解决IP端到端应用在NAT环境下遇到的问题,网络协议的设计者们创造了各种武器来进行应对。但遗憾的是,这里每一种方法都不完美,还需要在内部主机、应用程序或者NAT网关上增加额外的处理。

    应用层网关(ALG)

    前面我们已经介绍到了,NAT实现了对UDP或TCP报文头中的的IP地址及端口转换功能,但对应用层数据载荷中的字段无能为力(也就是净载中的数据无法修改),在许多应用层协议中,比如多媒体协议(H.323、SIP等)、FTP、SQLNET等,TCP/UDP载荷中带有地址或者端口信息,这些内容不能被NAT进行有效的转换,就可能导致问题。也就是说,NAT只是将数据包的包头的ip地址和端口号进行了转换,但是没有对包内数据中的ip地址和端口号进行转换于是我们开始设想能不能使用一种行之有效的方法保证包头的ip和端口号与包中数据里的Ip地址和端口号都转化为公网的ip地址和端口号。

    ALG的实际应用

    对于ALG的实现机制还是不清楚,如果有懂的大佬,推荐下书籍
    下面我们举个FTP传输的例子来简单介绍一下ALG的实际应用
    这里写图片描述
    图中私网侧的主机要访问公网的FTP服务器。
    NAT设备上配置了私网地址192.168.1.2到公网地址8.8.8.11的映射,实现地址的NAT转换,以支持私网主机对公网的访问。组网中,若没有ALG对报文载荷的处理,私网主机发送的PORT报文到达服务器端后,服务器无法根据私网地址进行寻址,也就无法建立正确的数据连接。整个通信过程包括如下四个阶段:

    (1) 私网主机和公网FTP服务器之间通过TCP三次握手成功建立控制连接。

    (2) 控制连接建立后,私网主机向FTP服务器发送PORT报文,报文中携带私网主机指定的数据连接的目的地址和端口,用于通知服务器使用该地址和端口和自己进行数据连接。

    (3) PORT报文在经过支持ALG特性的NAT设备时,报文载荷中的私网地址和端口会被转换成对应的公网地址和端口。即设备将收到的PORT报文载荷中的私网地址192.168.1.2转换成公网地址8.8.8.11,端口1084转换成12487。

    (4) 公网的FTP服务器收到PORT报文后,解析其内容,并向私网主机发起数据连接,该数据连接的目的地址为8.8.8.11,目的端口为12487(注意:一般情况下,该报文源端口为20,但由于FTP协议没有严格规定,有的服务器发出的数据连接源端口为大于1024的随机端口,如本例采用的是wftpd服务器,采用的源端口为3004)。由于该目的地址是一个公网地址,因此后续的数据连接就能够成功建立,从而实现私网主机对公网服务器的访问。

    NAT技术的未来

    在知乎上看到过这样一种言论,随着ipV6技术的到来,NAT技术已经不再需要了。在我看来,技术的革命一定是一步一步实现的,比如先是在局部地区使用IPV6,然后再逐步扩大其规模,减少IPv4的规模,所以NAT技术还是需要的。而且到了那个时候,网络世界中会充斥着两种地址ipV4和ipV6,这个时候更需要NAT技术了,因为NAT的中文翻译叫做网络地址转换啊。所以学好这个知识点对于我们理解网络是至关重要的。每到此时都会感慨,学校学到的知识真的只是皮毛,但是却是我现在所有知识的基础。

    参考文献

    1. 《CCNA学习指南》点此处下载此书
    2. ALG原理与应用
    3. P2P技术详解
    展开全文
  • python根据百度地图api将地址转成经纬度
  • PCIe地址转换服务(ATS)详解

    千次阅读 多人点赞 2021-09-11 23:33:06
    PCIe地址转换服务(ATS)详解

    ❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️


    🔥 1. 为何PCIe需要ATS?

    ✨1.1 为何需要DMA地址转换?

      为节省CPU资源,IO function常采用DMA方式访问内存。虽说在诸多实现方案中IO function看到的物理地址空间与CPU无异,但也不乏例外。在有些方案中,IO function看到的地址空间只是真实物理空间的handle,需要RC将DMA请求进行一次地址转换才能将访问到真实物理存储地址,此外还涉及到DMA访问地址空间的合法性检查。幸好,目前绝大部分系统结构都支持对来自IO function的DMA请求进行地址转换。

    ✨1.2 DMA地址转换的益处

    • 确认IO function DMA 请求的合法性,防止非法DMA请求产生破环;
      支持scatter-gater,通过地址转换,scatter-gather DMA一次传输访问多个物理上不连续的地址块;
    • 通过改变传输地址,RC无需与IO function协调即可实现消息信号中断的重定向;
    • 可以将32bit位宽的IO funtion映射到更大的系统地址空间;
    • 易于实现虚拟化传输。

    ✨1.3 DMA地址转换的不良影响及解决方案

      RC进行DMA地址转换是需要时间的,相较于不进行地址转换,显然进行DMA地址转换会增加DMA访问的时间。尤其是访问驻留内存转换表时,采用地址转换的方案会大大增加DMA访问的时间。当单次传输需要多次内存访问时,地址转换无疑会大大降低传输效率。

      为了减小地址转换的以上不良影响,设计人员常常在需要进行地址转换的地方添加地址转换缓存(Address Translation Cache, ATC)。在CPU中,这种地址转换缓存通常是指转译后备缓冲区(Translation Look-aside Bufer, TLB);在IO地址转换中,我们常用ATC来跟CPU的TLB加以区分。TLB与ATC的区别:TLB一次只服务于CPU的单个线程,而ATC服务于PCIe设备的多个IO function,每个IO function都相当于一个独立的线程。


    ✨1.4 设备采用ATC的益处

    • 设备端的ATC能够减轻地址转换代理(Translation Agent, TA)的地址转换压力;
    • 开启了ATC使设备对系统ATC size的依赖更小;
    • 发往中心复合体的地址都是预先转换过的,潜在减小了访问时延,增加传输效率。


    ❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️

    🔥 2. ATS协议介绍

      PCIe设备及根复合体RC之间采用请求-完成协议来实现地址转换服务ATS。ATS主要包括两部分:

    • 地址转换(Translation):用以将ATPT中的转换地址缓存到本地ATC,包括地址转换请求及地址转换完成。
    • 地址作废(Invalidation):用以当ATPT中地址转换发生变化时,将ATC中的对应转换地址作废,包括地址转换作废请求及地址转换作废完成。

    ✨2.1 ATS地址转换协议(ATS Translation)

      PCIe Device/Function发送存储器读写请求前,首先在本地ATC查找是否有该地址的Entry。该地址为转换前地址,是DMA看到的虚地址;该地址在ATC中的Entry是指该虚地址经过地址转化后的真实物理地址。若在ATC内查找成功,直接采用转换后地址进行访问,否则给TA发送该虚地址的地址转换请求。

    在这里插入图片描述

      上图展示了一个基本的ATS转换请求-完成的操作。其动态工作流程如下:

    1. Device/Function产生ATS转换请求,经PCIe拓扑路由到达RC,RC将该请求推给TA;
    2. TA在收到地址转换请求后,查找其本地ATPT,并给Device/Function反馈查找结果(成功或失败)。

    2.1.1 ATS地址转换请求

      为了实现ATS,存储器读写TLP头标中新定义了地址类型(Address Type, AT)域来表征Device发给RC的地址是否经过了地址转换、是否为地址转换请求。AT域是存储器读请求、AtomicOp及ATS地址转换请求的专属域,在其他事务中该域为Reserved预留。AT域值解释如下:00b->未转换的地址;01b->地址转换请求;10b->已转换的地址;11b->预留。TA检测到AT=11b时会当成UR处理。

    1)ATS地址转换请求帧格式

      带有ATC的Device可以选择发送经过/未经地址转换的存储器访问请求。 存储器访问请求的TLP头标(64bit)格式如下图所示。ATS地址转换请求的TLP头标格式与存储器读请求TLP头标格式相似,ATS地址转换请求头标格式如下图所示。

    在这里插入图片描述
    在这里插入图片描述

    比较可见,地址转换请求与ATS地址转换请求TLP头标的主要区别在于以下3点:

    ① 地址转换请求的AT=01b,存储器读请求的AT=00b或10b;
    ② 地址转换请求的地址位[11:0]预留,存储器读请求的地址为[1:0]预留;
    ③ 地址转换请求有NW域,存储器读请求没有NW域。

      地址转换请求头标中其他各域补充解释如下:

    • Attr: 转换请求及转换完成没有排序要求,设置该域开启宽松排序,开启宽松排序后TA可根据实际情况决定是否对其收到的事务进行重排,此时发起请求的Device不能依赖TA保序。
    • Length: 该域用以表明当前转换请求需要返回多少笔转换完成包,每一笔转换完成包长8Byte,多笔转换完成包的地址间STU(最小转换单位)对齐地址递增。需要注意的是,length值需为偶数,最大值为RCB(读完成边界)。若length超出最大值或为奇数,TA会将该TLP当成畸形包进行处理。
    • Untranslated Address: 需要进行转换的地址,支持32bit及64bit,该地址域不含地址比特[11:0],TA依据该地址判断转换请求的有效性。对于请求多笔地址转换的情况,若ATPT中的转换后地址不满足转换请求的范围(2^(STU+12)*length/2),TA不会反馈该笔转换包。如果请求者未设置了页对齐,转换请求地址位比特[11:2]可以是任意值,否则必须为0,TA中也必须忽略[11:2]。
    • NW: 非写标志位,若该位置一,表明该转换后的地址只读,Device不能往该地址发送写请求。若需要写该地址,需要Device重新发送地址转换请求将该位清除。
    2)PCIe系统对ATS地址转换请求的处理

      为了减小设计复杂度、简化PCIe系统ATS的集成工作,ATS地址转换请求/完成的处理过程与PCIe读请求/读完成极其相似,在某些方面甚至完全相同,具体表现为:

    • ATS组件兼容PCIe-1.1组件;
    • ATS通过新的能力及关联结构进行开启,软件在发送ATS TLP之前需确认该设备具有ATS能力且已开启,否则不能发送ATS TLP,DMA 读写请求中的AT域也应置为0,即未转换的地址。
    • ATS TLP路由方式为地址或RID路由;
    • ATS TLP事务排序方式最寻PCIe的事务排序方式;
    • ATS TLP流经PCIe-1.1交换节点时需保持不变;
    • Device/Function可以混合发送转换即未转换请求。

      TA收到地址转换请求后会进行如下判断及操作:

    • 判断Device/Function是否开启了ATS能力;
    • 判断Device/Function发送的ATS地址转换请求地址是否合法、该Device/Function是否有权限访问该地址;
    • 判断TA自身是否能够响应该ATS请求;
    • 发送转换成功或失败信号给RC,RC产生请求完成TLP回复给发起转换请求的Device/Function。

    3)ATS地址转换请求注意事项 ⚠️⚠️📢📢

    • Device/Function可以一次连续发送多个地址转换请求,TC可以相同也可以不同。一笔ATS转换请求对应一笔或多笔转换完成,RC一次可以连续返回多笔请求完成TLP,某地址的转换完成TLP的TC需与其转换请求的TC保持一致。
    • 若某虚地址在ATC中没有对应Entry,Device/Function在发送其ATS转换请求并收到转换完成(成功)之前,不能发送标记为translated的该地址存储器访问请求。
    • ATC只能通过ATS协议进行填充,即发送ATS地址转换请求并收到该地址的转换完成(成功)。
    • ATC只能通过ATS协议进行修改,主机系统软件只能通过ATS转换作废操作对ATC内容进行修改,其他任何操作都不能修改ATC内容。即使是系统复位、Device/Function的复位操作,也只能更改invalidate entry不能更改ATC内容;
      ATS有转换请求超时退出机制,若发出地址转换请求后迟迟等不到转换完成,会超时退出。ATS转换请求的请求超时设置与存储器读请求相同。

    2.1.2 ATS地址转换完成

      TA在收到地址转换请求之后,需要给Device/Function反馈转换结果。Device/Function收到TA反馈的ATS转换完成包后会根据完成状态更新其ATC或将该地址标记为不存在,并依据完成结果进一步发送经过/未经地址转换的存储器读写请求。

    1) ATS地址转换完成帧格式

      转换完成TLP头标如下图所示。
    在这里插入图片描述

    • Cpl.Status: 地址转换完成状态。000b -> 成功;001b -> 不支持的请求(UR),TA地址转换失败。Device/Function收到该状态后需关闭ATC,且在重新开启ATC之前不应发送任何已转换地址的内存访问请求;010b -> 配置请求重传(CRS),若Device/Function收到该状态,需将其当作畸形包处理;100b -> CA,TA出现异常导致其无法处理该转换请求;其他 -> 预留,若 Device/Function收到该完成状态,当UR处理。只有在状态为000b时才表示地址转换成功,该头标后边紧跟data包,否则没有data包。
    • Byte Count:
    • Lower Address:
    • TC: Cpl/CplD的TC应与该地址的转换请求TC值相同。

      若TA无法对Device/Function要求转换的地址进行转换,TA会回复Cpl,此时Byte Count及Lower Address域需要置0,但实际应用中不建议采用这两个域中的值做任何判断。若ATS地址转换成功,在completion消息包后应紧跟携带有转换后地址的数据包CplD,其格式如下图所示。

    在这里插入图片描述
      各域的解释如下表:

    释义
    Translated Address转换之后的地址。
    S转换size。
    NNon-snooped accesses, 非侦探访问标志位,
    Reserved预留,ATC忽略这些位
    Global全局映射标志位。决定ATC是否将该转换后的地址映射到所有的PASID。
    Exe可执行标志位。决定该地址的code是否是可执行的,一般仅用于有PASID TLP前缀且execute requested置一的转换请求。该位置一时,R位必须置一。
    Priv特权模式访问标志位。
    U置一表示该范围地址仅允许通过非转换的地址进行访问。
    W,R标志该地址范围是否可写可读

    在这里插入图片描述

    补充解释:

    • Translated Address:Device/Function收到CplD后,若W=0且R=0,或U=1,则Device/Function不能使用当前转换地址。一旦转换地址缓存进ATC,Device/Function不能通过除地址转换作废协议以外的任何方式修改或删除ATC中该地址Entry。在开启ATS之前或收到转换CplD之前,不能通过任何方式填充ATC。开启ATS能力之前的ATC中的内容在开启了ATS后不也能直接使用,要么忽略不用,要不通过invalid协议将其作废,要使用的话需重新发送地址转换请求。
    • S:值0b表示4096Byte,为1的话,需要继续看地址bit[62:12]的值,bit[12]=1 -> 8096byte,bit[12]=1 & bit[13]=0 -> 16384byte,以此类推,参照图。bit[63:12]全为1时的行为尚未定义。若该size值比STU小,应将该笔TLP视为UR。该规则同样适用于invalidate完成TLP,bit[63:12]全为1时表示invalid所有ATC中的内容。
    • U:对于命令缓存等复用率很高的地址,将转换后的地址存入ATC,每次访问的时候直接发送转换后地址能够提升效率;但是对于数据缓存等复用率很低的地址,数据变化较频繁,地址映射变化也频繁,这样当地址映射发生变换的时候,TA就可以不用发送该地址的invalid给ATC。但是,当U=1或W/R=1时,ATC可以对该地址的U/W/R/Exe/Priv/S进行缓存,若该地址的这些属性发生变动,TA仍然需要发送invalid给ATC。

    注意:地址转换完成TLP可以设置其Attr为宽松排序来提升整体性能。

    2)有多笔地址转换的转换完成的情况

      通过设置转换请求TLP头标的Length域,ATC可以在一次地址转换请求中请求TA返回多笔连续虚地址的地址转换。在地址转换请求size(完成长度*4)不大于最大读请求size(或RCB)前提下,Length可设置为所请求转换长度的两倍。若Device/Function请求多笔转换,在不超过转换请求数量的情况下TA可返回一笔或多笔转换结果,即便是TA返回的转换包少于请求的数量,也不视为出错。

      若转换完成包含多笔地址转换数据,所有的转换结果中size必须相同,且相邻地址转换数据对应的虚地址应该是连续的。

      若转换数据的R=0且W=0,TA需设置size域及转换后地址域的低bit位设置合适的值。

      一次成功的ATS地址转换完成应包含至少一笔CplD,转换完成包中每一笔转换地址都在地址转换请求的范围内。

      若转换完成CplD的Byte Count值大于Length值的四倍,则意味着需要额外的转换完成CplD才能结束当前的转换完成事务。

      若转换完成CplD的Byte Count域值等于Length域值的四倍,该CplD意味着其对应转换请求的结束。此时,若Byte Count和Lower Address的和不是RCB的多(>=1)倍,说明当前CplD是这多笔转换完成包序列的最后一笔CplD。若此前没有收到过该地址转换请求的其他CplD,则表明出现错误(请求了多笔只收到一笔,当让是出错了),此前收到的转换结果应全部丢弃。

      注意⚠️⚠️📢📢:若干一次请求了多笔地址转换,实际返回的地址转换完成包数量有可能笔请求的多(CplD序列被拆分),也有可能比请求的少(CplD被截短)。有诸多原因会使TA截短CplD,例如Device、Function请求对一段地址范围的地址进行转换,但只有部分有效,TA就会将无效的部分截去,只留有效的部分并返回CplD,此时有效地址转换的CplD不会报错。有诸多原因会使TA拆分转换完成CplD,例如地址转换请求的地址范围跨越了RCB边界,TA就会将一笔请求完成拆成两笔CplD进行发送。


    ✨2.2 ATS地址转换作废协议(ATS Invalidation)

      如果TA发现其本地某个地址映射发生变化,其需告知Device/Function无需继续在ATC中维护该虚地址Entry。TA通过给Device/Function发送一笔或多笔带有作废地址信息的地址转换作废请求来关闭ATC中该虚地址Entry,单笔作废请求对应至少一笔作废完成包。以单笔地址转换作废请求及作废完成为例,ATS地址转换作废操作如下图所示。
    在这里插入图片描述

      ATS地址转换作废动态流程有以下三步:

    1. 系统软件更新TA的地址转换表ATPT后,TA发送对应地址的转换作废请求给Device/Function;
    2. Device/Function收到来自TA的地址转换作废请求后,将其ATC指定虚地址Entry清除(但也不能立即清除)。但Device/Function不必立即清除其ATC中的对应entry;
    3. Device/Function在确保发送队列中所有使用待作废转换后地址TLP传输到TA之后,反馈作废完成包给TA。作废完成TLP中的ITAG应与其作废请求中的ITag保持一致(仅针对单笔Cpl,多笔Cpl的ITag Vector可以合并)。

    2.2.1 ATS地址转换作废请求

      如前文所述,当TA端地址映射发生变动时,其需要将这种变动告知ATC,使ATC中的相应地址变换作废。TA通过发送地址转换作废请求给ATC来保证ATPT及ATC地址映射的一致性。地址转换作废请求TLP的头标格式如图所示。

    在这里插入图片描述

      地址转换作废请求是带有64bit数据载荷的消息MsgD,其数据载荷中有携带有待作废的地址范围的起始值。地址转换作废请求TLP头标可采用任意TC值。作废请求中Itag值范围为0~31,用以对发出去的作废请求加以区分。在收到某笔作废请求的请求完成之前,该笔作废请求使用的ITag不允许重复使用。

      若ATC在收到的作废请求size小于STU,ATC可以将其当作UR处理,也可以不全作废地址范围为大于等于STU。Device/Function在收到作废请求后需要在~1分钟(+50%-0%)之内回复完成,否则ATPT会通报等待作废完成超时并释放该作废请求使用的ITag。

      作废请求的数据载荷TLP格式如下图所示。S域用以指明要作废的地址范围,使用方法与转换请求S域相同。Glocal Invalidate域是全局invalidate标志位,决定ATC是否将该作废请求应用到所有的PASID。地址位bit[63:12]全为1时表示invalid所有ATC中的内容。

    在这里插入图片描述

    2.2.2 ATS地址转换作废完成

      Device/Function完成TA的地址转换作废操作后回复作废完成消息给TA。作废完成消息TLP格式如下图所示。

    在这里插入图片描述

      地址转换作废完成包是基于ID路由的消息事务,Requester ID是该ATC所在的Function ID,Device ID是发送作废请求的TA ID,其值与作废请求的Requester ID相同。考虑到一个ATC仅对应一个TA,ATC可以在其收到的第一笔作废请求中提取出Request ID作为完成事务的Device ID,接下来的每次作废完成包中都采用该ID作为Device ID,而不必每次都重新提取,从而提升系统传输性能。

      完成计数域CC表示针对当前作废请求ATC需要反馈的作废完成包的数量,CC域为0时表示要发送8笔响应。TA端应能收集这些作废完成包并根据CC及ITag判断某笔作废请求是否成功完成。

      作废完成包可以采用任意TC值进行发送,其值与作废请求包的TC无关。

      ITag Vector用以表明该作废完成包对应哪笔作废请求,ITag Vector域与作废请求包中的Itag值相呼应。比如作废请求包中ITag值为a,则作废完成包 ITag Vector的bit[a]应为1,其余位为0。对于仅ITag Vector不同但TC、CC、requester ID完全相同的多笔作废完成包,也可应将这几笔作废完成包的ITag Vector或在一起,从而合并成为一笔作废完成包。

      如果某Device/Function不支持ATS却收到了地址转换作废请求,该Device/Function会将其作为UR处理。带有ATS能力的Device/Function,即便其ATS没有开启,也应能够接收作废请求并回复作废完成。

      注意⚠️⚠️📢📢

      ATC回应作废完成之前必须确定一下几件事:

    • 所有新发起的请求不能使用旧的已经作废掉的转换地址;
    • 发送队列中所有采用旧的已作废转换地址的outstanding读请求必须已经完全发送完毕或者被废弃;
    • 发送队列中所有采用旧的已转换地址的outstanding转发写请求必须已经被全部发至TA。若ATC不知道写请求是否到达TA,则ATC需采用与写请求相同TC发送作废完成包,有多少笔TC不同的写请求就采用与该笔写请求相同的TC发送多少笔作废完成包,通过相同TC事务间的PCIe事务排序规则来确保写请求能够先于作废完成包达到TA。这些作废完成包的CC值应相同。

    2.2.3 ATS地址转换作废流控(Invalidate Flow Control)

      对于不同的设计,其cache结构及排队策略也不同,这也意味着地址作废包的时延及吞吐量不同,这就难免出现TA发送作废请求的速率超出ATC的服务速率情况。当TA发送作废请求的速率超出ATC的服务速率时,由于其流控机制的信用量耗尽,会阻塞TA继续发送作废请求,这也会阻塞其他采用相同流控信用量的事务,从而影响性能。为避免这种情况的发生,可在TA端软件设计更高级的流控机制。

      为了实现流控,ATC必须在反压之前及时公布其作废请求事务的信用余量。

      在以下几种情况时,可以不开启地址作废流控:

    • Device/Function有能力处理以最大速率达到的作废请求;
    • Device/Function极少出现反压的情况,出现反压对性能影响也可以忽略不计;
    • Device/Function能够在不反压的情况下缓存下所有发过来的作废请求。

    ✨2.3 ATS协议存在的问题及解决办法

      ATS服务最大的问题在于它是基于信任的,是ATC自己声称它发出的地址是经过翻译还是没有经过翻译的。如果ATC生成这个地址已经翻译,就可以越过IOMMU的隔离。这个问题可以通过ACS来保护,ACS能够决定一个TLP能够正常路由、阻塞或重定向,可以在桥上禁止ATS消息。



    ❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️

    🔥 3. PCIe ATS配置

      所有支持ATS的Function扩展配置空间中必须有ATS扩展能力结构,如下图所示。

    在这里插入图片描述

      ATS扩展能力结构分为3部分:

    • PCIe扩展能力头标,用以表明该Function具有的能力;
    • ATS控制寄存器,表明该ATS invalidate queue的深度、是否支持页对齐、是否支持全局invalidate、是否支持宽松排序;
    • ATS能力寄存器,用以设置STU及启用ATS。

      分别如下图所示。

    在这里插入图片描述


    ❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️

    📖 参考

    1. PCI Express Base Specification Revision 5.0 Version 1.0 (22 May 2019)
    2. PCI Express Technology - Comprehensive Guide to Generation 1.x, 2.x and 3.0. Mike Jacson, Ravi Budruk, MindShare, Inc.
    3. PCI-SIG, Address Translation Services(PPT)
    4. Address Translation Services Revision 1.1, January 26, 2009
    5. ARM系列 – SMMU(一)
    6. ARM系列 – SMMU(二)
    7. IOMMU原理分析以及在Linux中初始化
    8. PCIe/SMMU ATS analysis note
    9. Introduction to PCIe Access Control Services
    10. PCIe SR-IOV:为什么需要SR-IOV
    11. Linux source code

    展开全文
  • NAT网络地址转换

    千次阅读 2022-03-15 22:16:53
    是网络地址转换 Network address translation 的缩写,是一种可以将内部地址转换成外部网络地址,简称就是将内网也就是局域网地址转换成外网也就是公有网络地址。 1.NAT的工作原理: ●NAT用来将内网地址和端口号转换...

    一、NAT

    是网络地址转换 Network address translation 的缩写,是一种可以将内部地址转换成外部网络地址,简称就是将内网也就是局域网地址转换成外网也就是公有网络地址。

    1.NAT的工作原理:

    ●NAT用来将内网地址和端口号转换成合法的公网地址和端口号,建立一个会话,与公网主机进行通信
    ●NAT外部的主机无法主动跟位于NAT内部的主机通信,NAT内部主机想要通信,必须主动和公网的一个TP通信,路由器负贵建立一个映时关系,从而实现数据的转发

    2. NAT功能:

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

    1.宽带分享:这是NAT主机的最大功能。

    2.安全防护:NAT之内的PC联机到Internet。上面时,他所显示的IP是NAT主机的公网IP,所以client端的PC就具有一定程度的安全了,外界在进行portscan (端口扫描)的时候,就侦测不到源client端的PC。

    3.NAT的优缺点

    优点∶节省公有合法工P地址、处理地址重叠、增强灵活性、安全性

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

    4.NAT转换过程

    数据包从内网到外网时,会转换源IP地址,由私网地址转换成公网地址.
    数据包从外网到内网时,会转换目的IP地址,由公网地址转换成私网地址.

    二、静态NAT和动态NAT

    1.静态NAT

    静态NAT实现私网地址和公网地址的一对一转换。有多少个私网地址就需要配置多少个公网地址。静态NAT不能节约公网地址,但可以起到隐藏内部网络的作用。

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

    静态NAT的配置

    第1种:全局模式下设置静态NAT

    [R1] nat static global 8.8.8.8 inside 192.168.10.10

    [R1] int g0/0/1 ##外网口

    [R1-GigabitEthernet0/0/l] nat static enable ###在网口上启动nat static enable功能

    在这里插入图片描述

    第2种:直接在接口上声明nat static

    [R1] int g0/0/1 ###外网口

    [R1-GigabitEthernet0/0/1] nat static global 8.8.8.8 inside 192.168.10.10

    [R1] dis nat static ###查看NAT静态配置信息

    在这里插入图片描述

    2.动态NAT

    动态NAT∶多个私网IP地址对应多个公网工P地址.基于地址池—对—映射

    动态NAT的配置

    1、配置外部网口和内部网口的IP地址

    2、定义合法IP地址池

    [R1] nat address-group 1 212.0.0.100 212.0.0.200 ###新建一个名为1的nat地址池

    3、定义访问控制列表

    [R1] acl 2000

    ###创建ACL,允许源地址为192.168.20.0/24网段和11.0.0.0/24的数据通过

    {
    acl种类:
    基本acl (2000-2999) :只能匹配源ip地址。
    高级acl (3000-3999):可以匹配源ip、目标ip、源端口、I目标端口等三层和四层的字段和协议。
    二)层ACL (4000-4999):根据数据包的源MAC地址、目的MAC地址、802.1q优先级、三层协议类型等二层信息制定规则。
    }

    [R1-acl-basic-2000] rule permit source 192.168.20.0 0.0.0.255
    (拒绝 deny)

    [R1-acl-basic-2000] rule permit source 11.0.0.0 0.0.0.255

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

    [R1-acl-basic-2000] int g0/0/1 ###外网口

    [R1-GigabitEthernet0/0/1] nat outbound 2000 address-group 1 no-pat

    ###将ACL2000匹配的数据转换为改接口的IP地址作为源地址(no pat 不做端口转换,只做IP地址转换,默认为pat)

    [R1] dis nat outbound ###查看NAT Outbound的信息

    在这里插入图片描述

    三、PAT

    1.PAT端口多路复用

    PAT又称为NAPT(Network Address Port Translation),它实现一个公网地址和多个私网地址之间的映射,因此可以节约公网地址。PAT的基本原理是将不同私网地址的报文的源IP地址转换为同一公网地址,但他们被转换为该地址的不同端口号,因而仍然能够共享同一地址。

    2.PAT的作用

    1.改变数据包的IP地址和端口号
    2.能够大量节约公网IP地址

    2.PAT的类型

    动态PAT:包含NAPT(NAT1对1。NAPT多对一转换。)和Easy IP;EasyIp:多个私网IP地址对应路由器外网接口公网IP地址(比如12.0.0.1)
    静态PAT:包括NAT Server.

    四、PAT的配置

    NAPT
    多个私网IP地址∶对应固定外网IP地址(比如200.1.1.10)。

    配置方法

    1.配置外部网口和内部网口的IP地址
    2.定义合法IP地址池
    [R1] nat address-group 1 200.1.1.10 200.1.1.10 ##使用一个固定IP
    3.定义访问控制列表

    [R1] acl 2000 ###允许源地址为192.168.30.0/24网段的数据通过

    [R1-acl-adv-2000] rule permit source 192.168.30.0 0.0.0.255

    4.在外网口上设置IP地址转换。
    [R1-acl -basic- 2000] int g0/0/1 ###外网口。

    [Rl-GigabitEthernet0/0/1] nat outbound 2000 address-group 1

    EasyIp:
    多个私网IP地址对应路由器外网接口公网IP地址(比如12.0.0.1)

    定义合法lP地址池
    由于直接实验外网口IP地址所以不用再定义IP地址池

    1.定义访问控制列表
    [R1]acl 3000
    允许源地址为192.168.30.0/24网段的数据通过
    [R1-acl-adv-3000]rule permit ip source 192.168.30.0 0.0.0.255

    2.在外网口上设置lP地址转换
    [R1]int go/0/1
    外网口

    3.[R1-GigabitEthernet0/0/1]nat outbound 3000
    当acl3000匹配的源IP数据到达此接口时,转换为该接口的IP地址做为源地址

    4.[R1]display nat session all
    查看NAT的流表信息

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

    [R1] int g0/0/1 ###返回的出口

    [R1-GigabitEthernet0/0/1] nat server protocol tcp global 9.9.9.9 www inside 192.168.10.100 www

    ###在连接公网的接口上将私网服务器地址和公网地址做一对NAT映射绑定

    [R1-Gigabi tEthernet0/0/1] nat server protocol tcp global current-interface 8080 inside 10.1.1.1 www

    ###在连接公网的接口, 上将私网服务器地址和外网接口做一对NAT映射绑定

    8080端口是被用于WWW代理服务的,可以实现网页浏览,经常在访问某个网站或使用代理服务器的时候,会加上“:8080”端口号。为了避免病毒的攻击,可以把8080端口关闭

    [R1-GigabitEthernet0/0/1] nat server protocol tcp global current-interface 2121 inside 10.1.1.2 ftp

    端口为21可以直接使用关键字"ftp"代替

    在这里插入图片描述
    NAT server 配置如下:
    在这里插入图片描述

    在这里插入图片描述
    抓包
    在这里插入图片描述
    在这里插入图片描述

    展开全文
  • (1)了解IP地址分为公网IP和私网IP、私网IP地址有哪些。 (2)了解NAT技术应用的背景 (3)了解NAT技术的分类,掌握各自...(4)熟悉实现公网IP地址和私网IP地址之间转换的相关命令。 (5)深度理解路由器的工作原理。
  • NAT网络地址转换协议

    千次阅读 2022-03-15 17:16:25
    文章目录一、NAT认识私有网络二、NAT的工作原理NAT包含4类地址三、...认识NAT(Network Address Translation):网络地址转换协议,一般用于实现私有网络与公有网络之间的访问 认识私有网络 A类私有地址:10.0.0.0~10.
  • 网络地址转换(NAT)技术

    千次阅读 2022-02-14 20:58:19
    网络地址转换原理 NAT技术的基本原理 NAT技术通过对IP报文头中的源地址或目的地址进行转换,可以使大量的私网IP地址通过共享少量的公网IP地址来访问公网。 NAT是将IP报文报头中的IP地址转换为另一个IP地址的过程,...
  • 细致讲解一下NAT网络地址转换技术

    千次阅读 2022-02-25 17:58:34
    一说到NAT(Network Address Tranlation,网络地址转换技术),很多人都是听说过,但是不怎末了解,我接下来给大家细致的讲一讲,就是以聊天的形式进行,我们都知道当今的互联网发展迅速,网络设备也是以倍数增长,...
  • 网络地址转换技术

    千次阅读 2020-03-29 20:02:02
    网络地址转换技术   目的是解决私有IP地址无法连上互联网的问题   如:内部用户往往使用的是私有IP地址,但是这些私有IP地址是无法访问互联网的,这个私有IP地址是无法访问互联网上的资源的。所以内部网络的私有...
  • IPv4与IPv6地址转换

    千次阅读 2020-08-19 12:25:10
    梳理了IETF的先关RFC文件,汇总IPv4与IPv6地址转换映射的方法。笔者资历较浅,难免有错误之处,还望指正。如真正深入研究,可以查看标准RFC文档。IETF官网文档下载链接 本文总体上根据RFC文档出版的时间先后顺序,...
  • BCH地址转换

    千次阅读 2022-03-26 11:46:00
    https://cashaddr.bitcoincash.org/ BCH地址(原比特币系列)地址和BCH规则地址转换
  • 华为路由器和交换机配置地址转换

    千次阅读 2020-12-23 14:12:16
    华为路由器和交换机配置地址转换本文来自:[url]http://bbs.51cto.com/thread-34943-1-1.html[/url]一. 端口:路由器——ethernet(以太口)、Serial(串口)、loopback(虚拟端口)交换机——ethernet、vlan、loopback...
  • 网络技术:NAT 网络地址转换及原理

    千次阅读 2021-09-03 16:03:24
    网络地址转换(NAT)技术的理论部分可以看博客——网络层——NAT。NAT 的功能大致为:在局域网中组织会为内部主机分配私有地址,当内部主机发送数据包到外部网络时私有地址就会自动转换为公有 IP 地址,公有 IP 地址...
  • NAT详解(网络地址转换

    千次阅读 2021-12-23 15:23:59
    一种地址转换技术,将ip数据报报头中的IP地址转换为另一个ip地址,并通过转换端口号达到地址重用的目的,是一种可以缓解IPv4公网地址枯竭的过渡技术。 概念: NAT(Network Address Translation),是指网络地址转换...
  • 多个程序交替访问内存地址可能冲突 且可能读到别的程序内存中的数据 如果程序很大内存容量可能不够 程序过多的话上面三个问题都会指数增长 所以要解决这样的问题: 要让每个程序有自己单独的房间(即有一个私有的从...
  • NAT地址转换

    千次阅读 2022-01-21 18:29:30
    为了实现外出访问公司内部服务器,可以对路由器设置地址转换,这样映射之后,外面的人可以使用公司外网进行访问内部服务器 打开ensp拖入两台路由器,一台PC机,一台服务器,并用线连接完成 配置每个设备的接口IP...
  • 华为NAT(地址转换技术)

    万次阅读 多人点赞 2020-09-06 16:45:44
    NAT属于接入广域网(WAN)技术,是一种将私有(保留)地址转化为合法公网IP地址的IP地址转换技术,它被广泛应用于各种类型 Internet接入方式和各种类型的网络中。 2、NAT类型 (1)静态----NAT(static NAT):内部...
  • ensp-网络地址转换

    千次阅读 2020-04-24 23:15:47
    网络地址转换(NAT)技术实现了私有网络中的主机与公共网络中的资源之间的通信,还提供了一定的安全功能,并且也会在网络迁移时成为管理员的首选方案 NAT原理 NAT简介: 改变IP报文中的源或目的地址的一种处理方式...
  • 网络地址转换NAT

    千次阅读 2022-04-01 15:50:16
    1、局域网内主机如何与互联网上主机通信   假设局域网内主机分配到本地IP地址,但想和互联网上的主机通信。那么应当采取什么措施呢?...  网络地址转换NAT(Network Address Translation)方法是
  • 地址转换方式 1.**NAT NO-PAT(动态转换):**多对多转换,不转换端口,只转换源IP地址2. NAPT(network and port translation ,网络地址和端口转换)类似pat:napt既转换报文源地址,又转换源端口。转换后的ip...
  • 防火墙网络地址转换技术(NAT)

    千次阅读 2021-03-13 19:45:39
    防火墙NAT地址转换技术使用场景:NAT处理流程:基于源地址转换的NATNo-PATNAPTsmart NAT:Easy-ip:基于目的地址转换的NAT服务器映射Nat-Server服务器负载均衡SLB黑洞路由: 使用场景: 私网用户访问Internet:通过...
  • 地址转换NAT实验

    千次阅读 2021-12-26 18:19:21
    网络设备NAT实验
  • 第22节 NAT——实现公私有IP地址转换

    千次阅读 2022-01-07 16:53:23
    1. 了解IP地址的分类、私有地址有哪些。 2. 了解NAT技术应用的背景 3. 了解NAT技术的分类,掌握各自的原理。 4. 熟悉相关命令。 5. 深度理解路由器的工作原理。
  • IP地址转换与域名解析

    千次阅读 2020-02-27 20:57:20
    IP地址转换与域名解析IP地址与端口IP地址转换相关类域名解析代码分析![在这里插入图片描述](https://img-blog.csdnimg.cn/20200227205232196.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10...
  • 采用NAT(Network Address Translation,网络地址转换)技术可实现中小型企业私有网络IP地址有地址IP地址之间的转换,NAT是私有网络在节约IP地址的前提下访问互联网的常用工具。当然,NAT还具备其他的功能,诸如增强...
  • 华为NAT地址转换配置

    千次阅读 2021-12-16 08:51:03
    一、 静态NAT地址转换 1、[Huawei]ip route-static 0.0.0.0 0.0.0.0 202.19.18.2 //写默认路由 2、[Huawei-GigabitEthernet0/0/0]nat static global 202.19.18.5 inside 192.168.10.1 //进外部端口做静态nat地址转换...
  • 思科路由器配置NAT地址转换

    千次阅读 2021-11-25 21:14:08
    静态NAT转换 采用如图所示的结构,每个端口配置如下的ip 首先得理解这个结构,r4的s2/0端口和r6和pc8共同组成外网 r4的f0/0和交换机s2以及pc6 pc7组成内网, 因此配完ip后,还得保证r4能ping通pc8 同样pc8也能ping...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,371,982
精华内容 548,792
关键字:

地址转换