学习日志--NAT(Network Address Translation)网络地址转换

news2024/9/20 22:24:42

目录

一、什么是NAT网络地址转换

二、配置并检查实验环境

三、NAT实现原理

四、NAT实现静态配置一对一

五、NAT实现动态配置一对一

六、PAT端口地址转换一对多

七、NAT优化easyIP的问题

八、NAT网络地址转换PAT多对多转换(特殊情况)

九、NAT---server问题

十、NAT黑洞(特殊情况)


一、什么是NAT网络地址转换

NAT网络地址转换技术,是用来确保公司的私有网络主机能访问外部公有网络,并且确保外部公有主机能访问公司内部的私有服务器。好比如说,公司内部的员工需要上网去查找资料需要访问外面网络的服务器,外面网络的主机想要访问公司内网的服务器,了解公司的详细信息。

私有地址:10.x.x.x || 172.16.x.x----->172.31.x.x || 192.168.x.x基本上都属于私有地址,私有地址一般用在公司内部的主机上使用。在公司内部设置私有地址是因为公有地址的租金比较昂贵,需要由运营商统一分配,自己不能灵活自定义配置IP地址。

二、配置并检查实验环境

NAT实验拓扑图

用AR2220当作两个连接内网和外网的路由器,上面是Internet外网,下面是公司的内网。给实验设备配置好IP地址和接口IP地址。

在公司出口的路由器AR1上配置默认路由
命令:[R1]ip route-static 0.0.0.0 0 GigabitEthernet 0/0/1 12.1.1.2,设置的默认路由是向12.1.1.2转发,跳到internet的路由器上
设置默认路由,当内网匹配的信息不在路由表条目上时,向默认路由转发,比如说要ping百度但是路由表没有百度的信息没有80.1.1.0网段的路由信息,则路由就会从默认路由转出跳到12.1.1.2Internet的路由器上Internet的路由器有80.1.1.0的网段,然后AR1就能和百度ping通。

配置好后,测试各主机能不能ping通自己的网关,查询配置是不是有问题,测试百度服务器能不能通网关。

检查配置环境,测试公司的出口路由器AR1能不能通baidu服务器,只有出口路由能通百度服务器证明数据能转发到百度服务器数据也能回到出口路由AR1,这样下面的主机才有可能访问百度服务器。

在出口路由器上测试能不能通baidu服务器能通。

到这里,确定好实验环境没有问题之后,可以开始实验。

三、NAT实现原理

现在的环境是,主机能通出口路由,出口路由能到百度,现在试试,主机能不能到百度。发现,主机不能到百度。
意识到,并不是主机能到路由,路由能到百度,主机就能到百度,在网络上这两者并没有直接的关系,网关访问百度用的是网关的 IP地址,主机访问百度用的是主机的IP地址,这两者是不一样的,而是需要看每一台设备能不能转发数据,数据回包能不能回来。

现在探究,为什么主机不能通百度。

我们在AR1的g0/0/1接口上抓包,在用路由器ping百度。数据发送出去会按照目的地址转发路由,在从默认路由出去到Internet路由器上,Internet路由器有80.1.1.0的路由信息,就从这里转发出去,然后回包。

看百度是怎么回应的,在Internet路由器的g0/0/2口抓包,再用AR1通一下百度说明,AR1的ICMP请求到了百度这里,然后百度给了回包,源地址是80.1.1.1目的地址是12.1.1.1。在百度的数据到Internet路由器上,查路由信息,Internet路由器上有12.1.1.1的路由信息,于是转发给12.1.1.1,可以回包。

下面用主机通百度,查看数据包,看看问题出在哪里在AR1的抓包数据显示,只有请求,没有回包在Internet路由器上的数据包显示既有请求又有回报,源地址80.1.1.1目的地址是192.168.1.1。可以看出,在AR1上的ICMP请求已经发到百度上了,而且百度也已经发送回包了,也就是说,Internet路由没有把百度的回包转发给AR1。查Internet路由器的路由信息发现没有转发到私人地址的路由信息192.168.1.0,所以无法发送数据到私有网络,所以就会把百度的回包数据丢弃。

整个过程就是,主机将数据交给网关,然后网关查表是转发给80.1.1.0网段的,于是转发给Internet路由,然后再转发给百度,百度再回包转发给Internet路由,由于Internet路由没有192.168.1.0的路由信息,所以就不转发,就丢弃百度的回包数据。回包数据不能回来,就无法ping通。

认识到如果PC机是私有地址,那么再访问Internet的时候,是无法收到回复的数据报,主机能发请求,但是收不到回复。那就是如果PC机是私有地址,那么再访问Internet的时候,就要通过NAT技术进行网络地址转换,将私有IP地址转换为公有IP地址。

NAT网络地址转换技术的实质就是建立映射表将Global全局地址和Local本地地址建立绑定关系。在NAT映射表上主要有内部地址和全局地址,两者之间会有一个对应关系,如果在一个内部数据发送过来的是候,会查找NAT表然后转换为全局地址;如果在外部数据发送过来,会查找NAT表然后转化为内部地址。然后根据内部地址的路由信息,转发到PC。

NAT转换,从内到外是转换源地址(私有地址),源192.168.1.1(私有)目的80.1.1.1;从外到内回包数据或则请求数据是转换目的地址(私有地址),源80.1.1.1目的192.168.1.1(私有地址)。

所以说为什么私网访问公网要NAT私有地址转换为公有地址,原因就是因为,公网上的路由器没有私网的路由信息,数据会丢弃。

四、NAT实现静态配置一对一

静态NAT转换,就是每一个内部地址和外部地址进行一对一的绑定。转换后的公有地址不能和路由器的接口地址冲突,不允许转换后的公有地址和内网出接口路由器的接口的地址一样。在本实验中是AR1的g0/0/1接口。

为了方便比较,将两个子网掩码是30的修改为24位的在AR1和Internet的路由器下的两个掩码为30的接口改为24位掩码的地址。

公有地址需要和运营商申请获得。

配置静态NAT,在内网出接口的路由器的出接口上做配置,如AR1的g0/0/1
命令:[R1-GigabitEthernet0/0/1]nat static global 12.1.1.101 inside 192.168.1.1,NAT静态全局变量12.1.1.101内部地址192.168.1.1,意思是将全局地址12.1.1.101和内部地址192.168.1.1绑定
命令:[R1-GigabitEthernet0/0/1]nat static global 12.1.1.102 inside 192.168.1.2,将全局地址12.1.1.102和内部地址192.168.1.2绑定
命令:[R1-GigabitEthernet0/0/1]nat static global 12.1.1.103 inside 192.168.1.3,将全局地址12.1.1.103和内部地址192.168.1.3绑定
命令:[R1]dis nat static,产看NAT的地址转换表

配置好后,看一下NAT具体是怎么转换的

在PC1上进行抓包,在AR1的g0/0/1口抓包,在百度的服务器上抓包,设置好后,在用PC1ping百度80.1.1.1。通了PC1上的抓包,从发包数据源地址192.168.1.1发送到目的地址80.1.1.1,回包数据源地址80.1.1.1目的地址192.168.1.1AR1的g0/0/1的数据抓包,发包数据源地址变成了12.1.1.101目的地址是80.1.1.1。地址已经发生了转换。回报数据源地址80.1.1.1目的地址12.1.1.101,所以说NAT转换出去的时候转换源地址百度的回包数据,源地址是80.1.1.1目的地址是12.1.1.101。在百度回包的数据中是回给IP12.1.1.101的,但是在PC1的数据回包中是回给192.168.1.1的数据,所以说NAT转换回包的时候是转换目的地址。

在配置的时候给192.168.1.2和192.168.1.3配置了全局地址,现在就用PC2和PC3通一下百度,看能不能通。PC2能通PC3能通。

在尝试以下client1失败。因为并没有给192.168.1.4配置公有地址,就不能进行网络地址转换,回包就不能回来。如果要想client1访问百度的话,就要给client192.168.1.4配置公有地址。

所以说静态NAT网络地址转换会造成当公司内部的主机数量比较庞大的时候,会消耗较多的公有地址,需要较大的公有地址的租金成本。

五、NAT实现动态配置一对一

动态NAT的本质关系就是,创建一个外部的公有地址组和内部的本地地址池。让公有地址和主机地址主动匹配。

先将配置好的静态NAT删除掉。
命令:[R1-GigabitEthernet0/0/1]undo nat static global 12.1.1.101 inside 192.168.1.1
命令:[R1-GigabitEthernet0/0/1]undo nat static global 12.1.1.102 inside 192.168.1.2
命令:[R1-GigabitEthernet0/0/1]undo nat static global 12.1.1.103 inside 192.168.1.3

配置动态NAT
命令:[R1]nat address-group 1 12.1.1.101 12.1.1.103,创建一个公有地址组,组号是1(组号从0-7),公有地址从12.1.1.101到12.1.1.103。

然后创建本地地址池,通过ACL来创建本地地址池
命令:[R1]acl 2000,创建ACL列表
命令:[R1-acl-basic-2000]rule 10 permit source 192.168.1.0 0.0.0.255,配置列表规则,允许192.168.1.0的网段通过
命令:[R1-GigabitEthernet0/0/1]nat outbound 2000 address-group 1 no-pat ,在接口下对地址池和地址组进行绑定

配置好后看主机能不能通百度,迅速用PC1通百度,PC2通百度,PC3通百度,client1访问百度,ping的时候动作迅速一点。PC1能通,但是只通了三次PC2不通PC3不通client1访问失败。

本来三个公有地址应该配三个主机但是为什么只有PC1通了,而且还是通三次。

到AR1路由器上查看NAT的会话表
命令:[R1]dis nat session all,查看会话表的信息发现三个公有地址都分配给了PC1。ping五个包,有三个包通,有两个包不通,三个包获得了公有地址,然后两个包没有获得公有地址,而且主机PC2和PC3也没有获得公有地址。

等会话表清0后,在用主机每次ping一个包试一下,ping完之后,回到路由器查看会话表PC1ping一次成功PC2ping一次成功PC3ping一次成功。查看会话表,现在三个主机地址转换成三个新的公有地址。

当nat地址组里面的地址用光的时候,再有主机想要访百度,就不能分配地址,就不能访问成功。在会话表上,当数据发送的时候,路由器会查看数据的源地址能不能匹配地址池里的地址,能匹配就分配公有地址组里的地址进行绑定,当分配完之后,还有主机想要分配就不能在分配了,即使新进入的数据的源地址匹配ACL规则,但是公有地址组的地址被用完了,就不能分配给主机了。

动态配置NAT就是在使用转发数据的时候,将本地地址和公有地址进行绑定,在不使用的时候,地址就会解除绑定,会话表就会清空。

现在用client1访问百度刚才访问百度失败,现在访问百度成功。

现在从右到左依次访问百度,然后查看会话表的信息然后现在是192.168.1.4分配到12.1.1.101,192.168.1.3分配到12.1.1.102,192.168.1.2分配到12.1.1.103,然后192.168.1.1没有分配到公有地址。所以整个绑定过程是动态的,谁先用谁就先绑定公有地址,用完之后就解除绑定。

动态NAT本质上还是一对一的地址转换,不过只是变成动态的,变得更灵活一点。但是也存在一个问题,如果公司的员工100个人同时上网,那么,无论是动态转换还是静态转换,都将需要100个公有地址,也需要消耗资源。

六、PAT端口地址转换一对多

在动态配置和静态配置都存在的问题中,希望能通过一个地址,就能帮助内部的多台主机同时访问Internet,就需要NAT端口转换技术,一个公有地址转换多个私有地址,也可以多个公有地址转换多个私有地址。

如果是一对多的地址转换,比如将192.168.1.1、192.168.1.2、192.168.1.3都绑定到12.1.1.101,那么在发送数据访问百度的时候,就都能访问,但是,在数据回包的时候出问题了,同一个公有地址转私有地址,但是不知道转哪个私有地址。

PAT实现过程,在转换IP地址的同时,转换数据包中的端口信息。

命令:[R1-GigabitEthernet0/0/1]undo nat outbound 2000 address-group 1 no-pat ,把原来配置的动态NAT删除

配置端口一对多
命令:[R1]nat address-group 2 12.1.1.101 12.1.1.101,创建一个公有地址组只有一个公有地址12.1.1.101
命令:[R1-GigabitEthernet0/0/1]nat outbound 2000 address-group 2,将私有地址池和公有地址组绑定

配置好后,在AR1g0/0/1和g0/0/0上抓包,然后用客户端去访问百度服务器成功访问百度服务器。

查看g0/0/0抓包的数据在请求的时候是源地址192.168.1.4访问目的地址80.1.1.1,源端口是2050目的端口是80。

查看g0/0/1抓包的数据地址转换后变成了12.1.1.101目的地址是80.1.1.1,源端口变成了296目的端口还是80,转换的时候只转换源地址和源端口。

在g0/0/1上的回包数据是源地址80.1.1.1到目的地址12.1.1.101,源端口是80,目的端口是296,相当于原步调换

在g0/0/0上的回包数据源地址是80.1.1.1目的地址变成了192.168.1.4,源端口是80,目的端口是2050,回包的时候只改变目的地址和目的端口。

地址转换过程中,从内到外的数据是转换源地址和端口,从外到内的数据是转换目的地址和端口。添加一个客户端做比较。用client2访问百度client2成功访问百度

查看g0/0/0的数据源地址是192.168.1.5目的地址是80.1.1.1,源端口是2049目的端口是80

查看g0/0/1的数据源地址转换成了12.1.1.101目的地址还是80.1.1.1,源端口转换成了552目的端口还是80

看g0/0/1的回包数据源地址是80.1.1.1目的地址是12.1.1.101,源端口是80目的端口是552

看g0/0/0的回包数据回包数据源地址还是80.1.1.1目的地址转换为了192.168.1.5,源端口还是80,目的端口转换为了2049。

所以说回包的数据可以根据不同的端口去转发数据,根据端口去匹配转换后的地址。

现在用主机PC1和PC2去通百度,通一个包,看看ping的回包数据有什么不一样

先看路由器上的NAT会话表
命令:[R1]dis nat session all,查看NAT会话表信息
会话表中私有地址192.168.1.2转换成了公有地址12.1.1.101,IcmpId的值原值是36471转换为10269;私有地址192.168.1.1转换成了公有地址12.1.1.101,IcmpId的值原值是36468转换为10268。这是NAT的转换情况。因为ICMP的请求没有端口,但是ICMP的数据包有编号,在做NAT变换的时候,就依靠改变ICMP数据包的编号来转换。不通的ICMP数据包编号绑定着不同的IP地址。

在g0/0/0上的请求数据

源地址是192.168.1.1目的地址是80.1.1.1,有一个LE的值36468,叫做icmp的id值

在看g0/0/1的请求数据源地址转换成了12.1.1.101目的地址不变,LE的值由36468转为了10268,和会话表中的一致

在看g0/0/1的回包数据回包数据源地址是80.1.1.1目的地址是12.1.1.101,icmp的id(LE)的值是10268

在g0/0/0上的回包数据

源地址是80.1.1.1目的地址转换为了192.168.1.1,LE的值由10268转为了36468,和会话表中的一致,不过回包数据是相反的ID转换。

再看g0/0/0的请求数据源地址是192.168.1.2,目的地址是80.1.1.1,LE的值是36471

再看g0/0/1的请求数据数据源地址转换成了12.1.1.101目的地址还是80.1.1.1,LE的值由36471转换为10269,和会话表中的一致

看g0/0/1的回包回包的源地址是80.1.1.1目的地址是12.1.1.101,LE的值是10269

在看g0/0/0上的回包数据源地址还是80.1.1.1目的地址转换成了192.168.1.2,LE的值转由10269换成了36471,和会话表中的一致。

所以在网络地址端口转换中,发包的时候没有问题,回包的时候,同一个公有地址会遇到不知道转换成哪个私有地址的问题,会根据路由器建立的NAT会话表去匹配端口信息也好,数据包的ID也好,去找到数据包带有的数据特征去匹配私有地址。

七、NAT优化easyIP的问题

easy-IP还是用网络端口地址转换一个公有地址对多个私有地址进行转换,只不过easy-ip是利用路由器本身接口的IP地址进行转换,比如AR1接口中的12.1.1.1IP地址,就不需要再另外申请公有i地址。

在路由器上删除之前配置的动态NAT
命令:[R1-GigabitEthernet0/0/1]undo nat outbound 2000 address-group 2

easy-ip的配置
命令:[R1-GigabitEthernet0/0/1]nat outbound 2000,不配置地址组,意味着直接用路由器的接口地址来进行NAT转换。

用主机PC1通一下百度,在g0/0/1上抓包ping通之后,发现,源192.168.1.1的地址转换为了12.1.1.1的地址

八、NAT网络地址转换PAT多对多转换(特殊情况)

PAT多对多转换是在一个公有地址不够用的情况下,配置多个公有地址对多个私有地址

实验前先把之前的配置删除
命令:[R1-GigabitEthernet0/0/1]undo nat outbound  2000

配置PAT多对多我们将NAT的Address-group 1的三个地址去给私有地址配
命令:[R1-GigabitEthernet0/0/1]nat outbound 2000 address-group 1,命令后面不加no-pat,意思是做PAT多对多。

但是这中情况是很少见的,只能说是NAT的特殊情况。一个公有地址大约可以使用6万多台主机,三个就可以供18万台主机使用,这样的规模是很少见的。

有的时候公司使用多个公有地址的原因是分配给这个地址的带宽不够用,如果是100台主机分配100兆带宽,平均每个人分得1M带宽,一般会采取申请另一个公有IP地址来分配带宽,而不是因为分配的主机较庞大,一般来说一个公有地址就已经够用了。

九、NAT---server问题

当有外部网络需要访问内部的服务器的需求的时候就需要考虑到内部的服务器问题。

实验拓扑结构,在公司内网增添一个服务器,配置地址是192.168.1.102,这个服务器既能给内网提供服务,又能给外网提供服务。

配置好服务器地址后开启服务器http服务、开启ftp服务。

实验环境配置好后,用client1去访问一下内部的服务器,看内部能不能通能通,内部访问没有问题。

在Internet网络增添一个客户端client3模拟外部的用户访问内部的服务器配置Client3的IP地址是200.1.1.1/24,网关是200.1.1.254。在Client3和Internet路由器接口上配置好IP地址。

配只好之后,检查用client3先访问自己的网关能不能通。能通证明没问题。

在内部的主机访问外部的服务器的时候,是会在路由器上生成会NAT话表,根据会话表进行地址的转换然后访问到外部的服务器。但是现在client3客户端是200.1.1.1的内网地址不能直接访问到公司内网的服务器上。

公司内部的服务器如果需要被互联网中的设备直接访问,需要内部的服务器对外提供一个公有地址,公有地址要和直连的路由是一个网段的。外部的主机在访问内部的服务器的时候,是直接访问服务器向外提供的公有地址。

我们让Server7提供一个公有地址12.1.1.101。在外部的客户端访问内部的服务器的时候,访问的是12.1.1.101,数据包首先发送给自己的网关,网关根据12.1.1.0的路由信息转发数据到AR1,当这个流量进入到路由器,路由器会创建NAT的Server映射表,然后根据映射表会将数据包的目的地址由原来的12.1.1.101转换为后面的192.168.1.201。

配置easy-ip为服务器的公有地址的话是不能和服务器建立映射关系的,外部就不能访问进来。配置的地址和原来配置的地址组冲突,将内部服务器的地址修改为12.1.1.201。

命令:​​​​​​[R1-GigabitEthernet0/0/1]nat server global 12.1.1.201 inside 192.168.1.201,将公有地址给内网的服务器192.168.1.201。

配置好后,用外网的客户端访问内网的服务器,访问的地址是12.1.1.201访问成功。

在配置内网的服务器的时候,可以 直接做IP地址的转换,也可以做IP地址和端口的转换。

删除掉之前的配置
命令:[R1-GigabitEthernet0/0/1]undo nat server global 12.1.1.201 inside 192.168.1.201

配置NAT
命令:[R1-GigabitEthernet0/0/1]nat server protocol tcp global 12.1.1.201 8080 inside 1
92.168.1.201 80,NAT服务器配置协议TCP公有地址12.1.1.201、转换端口8080,内部地址192.168.1.201 内部端口80。意思是将内部的地址192.168.1.201转换为12.1.1.201,将tcp协议的80端口转换为8080。

在外网的客户端是不能直接访问内网服务器的80端口的,需要先访问开放的8080端口,然后再转80端口,才能访问内网的服务器,这样可以防止外面的用户随便访问公司内部的端口,再一些端口数据没有加密处理的情况下,可以将这些端口隐藏起来。

回到外部的客户端Client3再尝试访问公司内部的服务器直接访问80端口是失败的        将端口改为8080就可以成功访问到内部的服务器。

NATServer的本质还是需要将外部来的数据进行目的地址的转换。还是NAT转换的原理,从外访问到内是进行目的地址的转换,从内访问到外,是进行源地址的转换。

另外补充在公司内网增添一个服务器IP地址是192.168.1.202,然后开启http服务
现在可以通过同一个公有地址去转换不同的端口去实现访问另一个服务器
命令:[R1-GigabitEthernet0/0/1]nat server protocol tcp global 12.1.1.201 8081 inside 1
92.168.1.202 80,现在是将内网的服务器地址192.168.1.202转换为12.1.1.201,端口由原来的80转换为8081。http服务的默认端口号默认是80。外网的客户端访问内网服务器的端口8081,访问成功。

十、NAT黑洞(特殊情况)

在之前的学习中,向运营商申请了12.1.1.1的公有地址,在运营商路由器上配置的是12.1.1.2的地址,默认他们在同一个网段12.1.1.0。所以后面的所有配置都是基于这个网段12.1.1.0配置的,但是,在实际网络配置过程中,运营商为用户分配NAT地址的时候,这个NAT地址所在的子网又可能和运营商分配给用户接口的地址不在同一个子网。

现在模式实验,当运营商分配的地址是120.1.1.103的情况。

实验开始前,将之前配置的easy-ip删除掉
命令:[R1-GigabitEthernet0/0/1]undo nat outbound 2000

实验配置
现在运营商给我们分配用作NAT转换的地址是120.1.1.103,对这个地址做成地址组,用于NAT转换。
命令:[R1]nat address-group 3 120.1.1.103 120.1.1.103,给运营商分配的地址创建一个组
命令:[R1-GigabitEthernet0/0/1]nat outbound 2000 address-group 3,将运营商分配的地址组和私有地址池绑定,用PAT的转换方式。

配置好后,在公司内网的设备的地址回通过NAT将192.168.1.0网段的地址转换为120.1.1.0网段的地址,然后通过端口映射的方式转发出去。

现在用主机尝试通一下外网的百度服务器这次就失败,然后通过数据抓包进行分析,在AR1的g0/0/1上抓包。发现其实192.168.1.1的地址已经转换成了120.1.1.103的地址,但是只有request的包没有reply的包。

再在Internet路由器上抓g0/0/2的数据包。然后再用PC1去通百度服务器现在,看到百度有消息回包。那问题就处在Internet的路由器上,是这个路由器没有把回包数据转发到AR1上。现在是回包的数据报的地址已经转成公有地址,但是还是不能转发数据,原因是因为没有对应的路由信息。查看Internet的路由表的信息,发现有80.1.1.0网段的路由,有12.1.1.0网段的路由,但是没有其他地址的路由,没有120.1.1.0的网段的路由,所以,收到这个目的地址为120.1.1.0网段的数据包将会被丢弃。以前做的配置不会丢弃,是因为他们配置的NAT的IP是12.1.1.0网段的地址,再Internet的路由器的路由表中,有12.1.1.0网段的路由信息。当运营商给用户分配一个和路由器接口直连地址的不同网段的时候,在服务网络的时候就会因为找不到路由信息数据包被丢弃。

这种问题就需要在运营商上的路由器上给用户配置路由信息,配置一条和NAT分配地址相关的路由信息
命令:[ISP]ip route-static 120.1.1.103 255.255.255.255 GigabitEthernet 0/0/1 12.1.1.1,将去往120.1.1.103的数据包通过接口g0/0/1转发给12.1.1.1。

配置好后,用主机在次通百度这次就成功了。

在来到AR1上查看路由表的信息我们查到了120.1.1.103的路由信息,但是他的接口是InLoopBack0(黑洞接口),黑洞接口可以认为是路由器内部的接口。内部接口可以跟路由器里面的NAT模块连接,可以进行网络地址转换。

如果没有黑洞接口,会出现这样的问题。现在的环境是,AR1配置了默认路由,通过默认路由可以到达Internet的路由器,然后Internet的路由器可以通过运营商配置的静态路由到达AR1,如果说现在在Client3是200.1.1.1想要访问120.1.1.103,他的请求数据就会通过Internet的路由器到达AR1,但是因为没有黑洞接口,就不存在120.1.1.103的路由信息,在Client3的数据报到来的时候匹配不到120.1.1.103的路由信息,就会从AR1的默认路由出去到达Internet的路由器,但是Internet的路由器有120.1.1.103的静态路由,会把这个数据转发给AR1,然后在AR1上又匹配不到120.1.1.103的路由,于是又会通过默认路由转发到Internet的路由器,于是这个数据报不断从AR1和Internet的路由器不断循环转发。

下面说一说黑洞接口在client3上访问120.1.1.103一个报包,失败。这是因为,当请求数据发送到AR1路由器上时,路由器会根据路由表的信息去查找120.1.1.103的路由信息,查到说去InLoopBack0黑洞接口查看,这个InLoopBack0是和NAT转换模块相连的,提供NAT地址转换服务,根据NAT会话表进行地址转换,但是现在访问失败,说明地址转换失败,会话表创建失败。但是会话表的创建是在内部的数据访问外部的时候进行地址转换的时候生成的。现在就是外部的200.1.1.1访问内部的120.1.1.103,在数据包到AR1路由器的时候,查NAT会话表,匹配不到会话信息,数据就丢包处理,ping就不通。

现在的情况就是你内网主动ping外网可以成功,但是外网主动ping内网就失败进不来。这是因为NAT会话表在做映射的时候,将内部的地址和内部的端口转换成外部的新的地址和端口,发包数据和回包数据根据端口可以进行匹配能和NAT会话表中的信息一致,数据就可以通过。

在华为设备AR路由器上当配置NAT后,配置的公有地址会在设备中产生相关的UNR的一条路由信息。UNR路由信息可以将该公有地址的数据路由到InLoopBack0的内部接口,该内部接口可以关联NAT模块进行NAT的地址转换。当有NAT会话表就直接完成地址转换,当没有NAT会话表就直接将数据丢弃,就不会再次发送给运营商路由器,就不会出现循环转发。

从外部主动进来的数据NAT会话表不能生成,主动进来的数据就会丢弃,从内部主动发出的数据没能生成NAT会话表,就能转换地址,就能转发出去数据。之所以称是黑洞接口,是因为在匹配不到NAT会话表的时候,数据会被丢弃,数据又来无回就是黑洞。

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

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

相关文章

【Harmony OS 4.0】从零开始,快速上手

2019年8月份Harmony OS 1.0, 2020年9月份Harmony OS 2.0 2022年7月份Harmony OS 3.0 2023年3月份Harmony OS 4.0,不兼容 android app 1. 快速上手 1.1 下载并安装 DevEco Studio 1.2 创建项目并初始化 项目 build init 时报错:request to h…

产业经济大脑建设方案(三)

为了加速产业经济的智能化转型,我们建议建立一个全面集成的产业经济大脑系统,该系统结合人工智能、大数据分析和云计算技术,构建数据驱动的决策支持平台。该平台将实时采集和处理产业链各环节的数据,利用智能算法进行深度分析和预…

【C++】C++11新增特性

目录 C11简介: 1、统一的列表初始化: std::initializer_list 2、自动类型推导: auto: decltype: 3、final 和 override final: override: 4、默认成员函数控制: 显示缺省…

网络安全简介(入门篇)

目录 前言 一、什么是网络安全? 二、网络安全的重要性 1、保护数据安全和隐私 2、防止服务中断和数据丢失 3、防止经济损失和法律责任 4、维护公共安全和国家安全 5、提升技术发展和创新 三、网络安全等级保护 1、第一级(自主保护级&#xff0…

Java基础-Windows开发环境下Java8和OpenJDK17的自由切换

一、Java语言介绍 Java是一种广泛使用的编程语言和计算平台,具有平台无关性、稳定性和强大的生态系统。随着时间的推移,Java不断演进,推出了多个版本,每个版本都带来了新的功能和性能改进。 1. Java主流版本 Java的主流版本包括…

【排序篇】快速排序的非递归实现与归并排序的实现

🌈个人主页:Yui_ 🌈Linux专栏:Linux 🌈C语言笔记专栏:C语言笔记 🌈数据结构专栏:数据结构 文章目录 1 快速排序非递归2. 归并排序3.排序算法复杂度及稳定性分析 1 快速排序非递归 利…

Leetcode面试经典150题-14.最长公共前缀

解法都在代码里,不懂就留言或者私信 这个题比较简单,基本上是笔试的第一第二题 class Solution {/**最长公共前缀这种问题个人感觉最重要的是剪枝我理解可以先按照字符串的长度排个序,然后把第一个字符串的长度作为暂时的最长公共前缀的长度…

分享一个基于python爬虫的“今日头条”新闻数据分析可视化系统(源码、调试、LW、开题、PPT)

💕💕作者:计算机源码社 💕💕个人简介:本人 八年开发经验,擅长Java、Python、PHP、.NET、Node.js、Android、微信小程序、爬虫、大数据、机器学习等,大家有这一块的问题可以一起交流&…

【装修】出租屋改造计划,米家IoT全屋智能家居方案 投影仪与家庭ktv游戏影院方案

【装修】出租屋改造计划,米家IoT全屋智能家居方案 & 投影仪与家庭ktv游戏影院方案 文章目录 1、目标效果 & 预算2、网络:路由 & 中枢网关方案3、卧室:灯光系列 & 环境系列4、米家:其他房间(暂不装&…

C++ 内存布局 - Part2: 从内存布局角度看类型转换 static_cast, dynamic_cast, reinterpret_cast

0. 总论 开门见山,先把结论写在这里: 1)static_cast 在做基类指针和派生类指针之间的转换时,会根据编译时的静态偏移操作指针,但是没有运行期的类型安全检查,程序员需要自己确保类型的正确性,…

ollama轻松部署本地GraphRAG(避雷篇)

本篇文章主要介绍如何使用ollama本地部署微软的Graph RAG,,Graph RAG成为RAG一种新范式,对于全局总结性问题表现突出,当开始的技术路线是Qwen2vllmfastchat本地部署Grapg RAG,但是embedding 的openai服务怎么都跑不起来…

完整搭建windows下mysql8.0源码编译调试环境!

背景: 前段时间一直在看mysql相关的博客,所以对源码起了浓厚的兴趣,所以尝试通过vmware和vscode在windosw环境中搭建一套编译调试的环境~ 看了一下网上的搭建教程基本杂乱无章,想要从零跟着搭建出一个完善的调试环境也不是易事&…

redis I/O复用机制

I/O复用模型 传统阻塞I/O模型 串行化处理,就是要等,假如进行到accept操作,cpu需要等待客户端发送的数据到tcp接收缓冲区才能进行read操作,而在此期间cpu不能执行任何操作。 I/O复用 用一个进程监听大量连接,当某个连…

国产大模型领域跳槽:收入潜力解析

夏尽秋来,2024年国产大模型看似喧闹已止,进入稳定竞争期。 作为一种新的IT解决方案,国产大模型一出生便伴随着激烈竞争。 外有GPT4,内有多家公司角逐“中国版ChatGPT”。 据我所知,就国内某家头部大模型创业公司的收…

0817(持久层框架:JDBC,MyBatis)

三层架构(表现层,业务层,持久层) java中框架的概述(表现层、业务层、持久层的关系)_控制层业务层持久层的关系-CSDN博客 框架:框架一般处在低层应用平台(如J2EE)和高层…

利用keepalived达成服务高可用

官方网站Keepalived for Linux 1.keepalived简介 vrrp 协议的软件实现,原生设计目的为了 高可用 ipvs 服务 功能: 基于 vrrp 协议完成地址流动 为 vip 地址所在的节点生成 ipvs 规则 ( 在配置文件中预先定义 ) 为 ipvs 集群的各 RS 做健康状态检测 …

【Linux网络】NAT技术

欢迎来到 破晓的历程的 博客 ⛺️不负时光,不负己✈️ 引言 随着互联网的飞速发展,IP地址资源日益紧张,这促使了NAT(Network Address Translation,网络地址转换)技术的诞生与发展。NAT技术不仅解决了IPv4…

webshell免杀--免杀入门

前言 欢迎来到我的博客 个人主页:北岭敲键盘的荒漠猫-CSDN博客 本文主要整理webshell免杀的一些基础思路 入门级,不是很深入,主要是整理相关概念 免杀对象 1.各类杀毒软件 类似360,火绒等,查杀己方webshell的软件。 2.各类流量…

计算机网络系统速成

Http与Https Http与Https是两种重要的网络通信协议,它们在Web通信中扮演着关键角色。以下是对Http与Https的详细解析: 一、Http(超文本传输协议) 1. 定义与功能 定义:Http(HyperText Transfer Protocol…

打卡学习Python爬虫第三天|电影天堂案例

一、明确需求 目标:爬取最新更新的电影的豆瓣链接 观察网页和页面源代码,每部电影都有一个超链接去到子页面,我们需要的内容在子页面,如果我们一个一个子页面的去爬取会比较麻烦,可以尝试先通过首页爬取子页面的超链…