防火墙的源NAT技术详解-武汉科云

为什么要变化数据包的IP地址呢?因为在IPv4网络中公网地址不够用了。

 

ipv4地址就被划分成了两类:

bfdc0253de5640108a6ea237ee370db8.png

1、私网ip地址:任何企业,任何家庭,任何人,任何网络设备可以去配置的ip地址【你在学校里的学号,武汉工程大学的学号是20xx1111,那么另外一个学校清华大学20xx1111】工作范围只在局域网本地。在一个学校里,不可能有两个学生使用相同的学号。【一个网络内,你只要确保IP地址不冲突即可】

 

                             10.0.0.0-10.255.255.255

 

                             172.16.0.0-172.31.255.255

 

                             192.168.0.0-192.168.255.255

 

2、公网ip地址:你在咱们国内的身份证号,不能冲突啊。

 

                             除了上述列出来的私网地址以外,其他地址都是公网地址。

 

                             127.x.x.x :环回地址,用于测试本地和一些本机软件的连通性

 

                             224.组播地址:224.0.0.0-235.255.255.255

 

                            

 

2.隐藏网络结构,保护安全

通过NAT技术,将内网服务器的地址进行隐藏,攻击者无法根据公网地址来判断我内部网络结构和服务器私网IP地址

假设有攻击者知道内网服务器知道了和公网IP地址的映射关系,

此时也可以通过蜜罐的方式,将地址映射关系修改一下,将内网地址划分到安全设备上,用于模拟服务器,

攻击者对地址进行攻击时,其实攻击的并不是真是的服务器,二十我的安全设备,我就可以知道是谁来攻击我,将他的IP地址封禁

 

 

问题:私网IP地址为什么无法直接访问公网IP地址

假设A和B具备相同的私网IP地址,现在A和B同时访问百度服务器搜索不同的东西,百度服务器收到两个数据包之后,无法知道回包该给谁,俩源IP地址都一样,百度服务器收到之后就懵逼了

 

最初NAT技术用到的是静态NAT:

 

1、手动书写私网IP地址和公网IP地址的映射关系

 

1、弊端之处在于当设备众多时操作量太大

私网地址和公网地址是一对一静态绑定的,想要其他人上网,就需要在将这个公网地址绑定给其他用户才可以,这个对于管理员来说非常恶心

 

2、静态NAT是1(公网IP):1(私网IP)映射,如果多对一进行映射的话,回来的数据包无法还原,不知道哪个包是找哪个设备的了。

 

3、既然公网IP和私网IP只能1对1的话,那你的意思是 我有一百台电脑要上网,我就要找运营商申请100个公网IP,是这个意思吗?半对

为什么这里说半对呢:主要是看用户上网的并发量

1、如果一百个用户,通过不同的时间段进行上网,那么只需要一个公网IP地址就可以上网(管理员需要手动切换)

2、如果一百个用户,同一时间段上网,那么就需要一百个公网IP地址

 

现在还有一个问题:假设真的向运营商申请了100个公网地址,那么可不可以直接在用户终端进行配置

答案是肯定不可以的,因为网络架构不仅仅只有用户的接入层,还有汇聚层,核心层,出口等,

这种情况就可以理解为,两个公网地址之间跨了一个私网地址构成的网络,要想要通信,需要将中间的网络的IP地址也规划为公网IP地址

那么,这个地址消耗数量就太大了

 

还有一个方面,将公网地址规划给个人之后,这个地址只能是个人使用,但是如果将这个公网地址做NAT,那么就可以支持不同用户在不同时间段内上网

 

 

地址转换流程:

1、当数据到达NAT设备上之后,将源私网IP地址转化为公网IP地址,然后进行数据转发

2、当回程报文到达NAT设备上之后,将目的公网IP地址转化为私网IP地址,然后进行数据转发

 

数据报转发过程中公私网地址转换,对于用户来说,是毫无感知的,用户并不知道地址进行了转换,只知道我是用私网地址就可以上网

 

 

 

 

 

 

动态NAT:(静态NAT)作为早期NAT的基本机制,我们了解一下即可。

 

动态去分配地址:----NAT NO-PAT

NO-PAT:no   Port  address  translation ------不进行端口转换

 

你不是嫌弃静态NAT需要手动绑定、解绑私网IP和公网IP吗,那我NAT NO-PAT,把你需要转换的---公网地址做成一个池子。(谁来找我要,我就给谁分配池里子未使用的公网地址,并且在分配之后,会将该公网地址标注为use状态)

处于该状态的公网地址,不能再给其他用户使用

 

只解决了需要不断的手动绑定私网IP地址和公网IP地址映射的这么一个操作。

 

仍然没有解决一个公网地址在同一时间只能给一个私网地址去使用的这么一个特点。

 

 

动态NAT--no-pat和NAPT配置流程一模一样,但是一个在地址池中设置的类型为no-pat,一个为pat,华为默认创建地址池之后,类型就为pat(NAPT方式)

 

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------上面两个技术了解即可

 

 

动态NAT的NAPT技术

N(network)   A  (address)    And     P(port)T(translation)(网络地址和端口转换)

0c8f93f4f8d44651abe0ad5f239d3e73.png

     

问题:为什么一个公网iP只能映射给一个私网IP的根本原因是:

如果一个公网IP给多个私网IP做了映射的话,那么回来的数据包,本设备就不知道如何区分到底应该交给谁了。【这个问题如果解决了,就可以实现1个公网IP给多个私网IP去使用了】

 

现阶段:只靠IP地址无法实现区分,所以NAPT引入了IP地址+端口号两种方式一起转换

 

当我们部署NAPT时,如果想要对能够通过防火墙的流量做更精细化的管控的话,记住,部署安全策略时,源IP地址在这个场景下书写NAT之前的IP地址。

 

 

 

 

动态NAT中的NAPT模式,和源NAT一样,都需要配置地址池,私网用户直接使用公网地址池中的地址进行网络地址转换功能

38797fd3524b4390bdc5124b63263493.png

地址池的配置:

53d5f258f7df46a5b107291a98b946b0.png

 

c34ce550ba8b4e9eb9ad2f8ff46f21ed.png

 

可选配置:

1775d895b3aa4dc39f2b18d6044edd0e.png

 

b0302dee50d04e4e9485c322eb8d69a0.png

 

NAPT的配置如上图所示(接口配置IP地址+接口加区域 略),配置完成之后,内网用户可以正常访问外部的服务器

现在有两个问题:

1、在防火墙的G1/0/1接口(Untrust区域的接口)上,抓ICMP报文,源IP地址是公网地址还是私网地址

答案:为公网IP地址,使用地址池中一个随机的公网IP地址

e79ea4824e5a4c5ab82476d78a38b499.png

2、在防火墙的G1/0/0接口(trust区域的接口)上,抓ICMP报文,源IP地址是公网地址还是私网地址

答案:为私网IP地址

65ebc36d7f0649708f14277c44d8a3db.png

 

 

经过上述两个测试,我们可以得出一个结论:

源NAT只有经过防火墙了才会进行地址转换,也可以直接理解为,在出接口上进行地址转换

 

 

问题1:假设现在地址池中使用的公网IP地址与防火墙接入运营商这一段的互联地址不在同一个网段中,怎么搞呀

正常情况下,数据包在经过防火墙之后,会将私网地址转换为公网地址,转换完成之后,根据默认地址发到运营商的网络中,

回程路由出了问题:我出接口IP地址和地址池中的IP地址不一样,但是回程数据包的目的IP地址是地址池中的公网地址

--------迷茫了,怎么搞,-----------------在这里,可以直接把公网地址池中的IP地址理解为出接口的IP地址即可

--------运营商只要知道回程数据包中的目的公网IP地址是来找我的,就会将这个数据转发回来,发给我出口设备上,运营商网络会进行数据转发

 

 

 

问题2:ICMP协议是网络层协议,没有传输层信息

d15f9a1a9d174646b099082135625d09.png

那么为什么在做完NAPT之后,ping测试之后,查看会话表时,会有端口号信息,这个端口号是啥玩意,不应该没有端口号信息吗

正常情况下,ICMP报文是没有传输层头部信息,没有SP和DP信息的

NAPT在针对ICMP协议工作时,会把ICMP报文字段的信息做一个计算,算出一个值,作为临时性的源端口号

在NAPT工作场景中,必须需要端口号才可以正常工作的协议,对于ICMP协议这种没有端口号信息的报文,只能通过算法计算出一个端口号,来保证NAPT正常运行

 

 

 

源NAT之NAPT的数据包处理流程:

1、数据包到达防火墙之后—>防火墙先判断该数据包能否通过我防火墙—>查安全策略—>确定数据包可以从防火墙通过后—>SNAT(NAPT)—>从对应接口发送出去。

问题1:这个流程中,我们没有安全策略可以吗

答案:不可以,安全策略时防火墙安身立命之本,所有经防火墙的跨区域的流量,必须要匹配安全策略之后,允许放行之后,才可以进行数据转发

 

 

 

注意点:当我公司内部只有一个公网IP地址,并且这个公网IP地址已经配置给了出口设备的出接口上,此时用NAPT还可以吗

当然可以,

1、首先创建一个地址池,地址池中起始公网IP地址和结尾公网IP地址都使用这个地址

2、配置安全策略

3、配置NAT策略,调用这个创建的地址池即可完成配置,

配置完成之后,发现用户依然可以正常上网,但是感觉这个流程有点繁琐

 

-------------------------第一个步骤创建地址池,纯纯脱裤子放屁,多此一举,就勾八一个IP地址配置什么地址池呢---------------一条鱼凭什么独占一个鱼塘

 

 

 

 

源NAT之EASY-IP方案:(简化版的NAPT)

93068397a1b6409d92fa4236c0a4bd52.png

优点:

1、配置量少,在NAPT的方案上简化了地址池部分的配置。不做地址池的NAPT罢了。可以理直接将easy-ip看成操作量少的NAPT罢了。

2、适用于公网IP地址不断变化的场景。(PPPoE拨号上网,你的公网IP地址每天可能都不一样100.1 200.1)

如果采用NAPT方式,此种方式下必须要用地址池,但是公网IP地址固定,那么当公网IP地址改变时,就需要修改地址池中的公网IP地址,这个过程很繁琐的

 

easy-ip配置:

nat-policy--------NAT策略

 rule name PC1-INTERNET

  source-zone trust

  destination-zone untrust

  source-address 192.168.1.1 mask 255.255.255.255

  action source-nat easy-ip

 

security-policy---------安全策略

 rule name pc1-internet

  source-zone trust

  destination-zone untrust

  source-address 私网地址

  action permit

 

 

源NAT之easy-ip的数据包转发流程:

1、数据包到达防火墙之后—>防火墙先判断该数据包能否通过我防火墙—>查安全策略—>确定数据包可以从防火墙通过后—>SNAT(EASY-IP)—>从对应接口发送出去。

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值