亦余心之所善兮,虽九死其犹未悔。这篇文章主要讲述#yyds干货盘点# HCIE-Security Day6:5个实验搞定源NAT相关的知识,希望能为你提供帮助。
NAT是一种地址转换技术,可以将ipv4报文头中的地址做转换,通常情况下,利用nat技术将ipv4报文头中的私网地址转换为公网地址,实现了内网设备与公网设备的互访。
从实现上来说,NAT转换设备都维护一张地址转换表。地址转换的机制分为:
内部网络主机的ip地址和端口转换为nat转换设备外部网络地址和端口
外部网络主机的ip地址和端口转换位nat转换设备内部网路地址和端口
即私有地址+端口与共有地址+端口之间互相转换。
常见的nat转化设备由路由器、防火墙等。
NAT分类
SNAT对报文中的源地址进行转换。通过源nat将私网ip地址转换为公网ip地址,使私网用户可以利用公网地址访问internet。
当私网用户访问公网时,报文到达fw,fw将报文的源ip地址由私网地址转换为公网地址
当回程报文返回fw时,fw再将报文的目的地址由公网地址转换位私网地址。
No-pat
只转换地址,不转换端口,实现私网到公网地址一对一转换,适用于上网人数少,公网地址多的常见使用。
分为local no-pat:生成的server-map表项中包含了安全区域参数,只有此安全区域的server可以访问内网host
global no-pat:生成的server-map表项中不包含安全区域参数,所有安全区域的server可以访问内网host
【#yyds干货盘点# HCIE-Security Day6(5个实验搞定源NAT)】
具体过程
参考报文转发流程
1、fw收到host发送的报文后,根据目的地址判断报文需要在trust和untrust区域之间流动,通过安全策略检查后继而查找nat策略,发现需要对报文进行地址转换。
2、fw根据轮询算法从nat地址池中选择一个空闲的公网ip地址,替换报文的源地址,并建立server-map表和会话表,然后将报文发送到公网。
正向server-map表项保证了特定私网用户访问公网时,快速地址转换,提高fw处理效率。
反向server-map表项允许公网用户主动访问私网用户,将报文进行地址转换。
3、fw收到公网回包后,匹配会话表中表项,将报文的目的地址替换为host的ip地址,然后将报文发送到私网。
4、如果地址池中地址分配光了,剩余内网主机的外网访问需求将无法满足,直到地址池中有空闲地址。
实验一:私网用户通过NAT NO-PAT访问internet(访问明确的目的server)需求和拓扑某工作室在网络边界处部署了FW作为安全网关。为了使私网中10.1.1.0/24网段的用户可以正常访问Internet,需要在FW上配置源NAT策略。由于需要上网的用户少且访问明确的目的Server,FW采用NAT No-PAT的地址转换方式,将匹配上NAT策略的私网地址进行一对一转换。工作室向ISP申请了6个IP地址(1.1.1.10~1.1.1.15)作为私网地址转换后的公网地址。其中Router是ISP提供的接入网关。
(扫码回复NAT1获取完整实验拓扑环境及配置)
配置步骤1、配置终端设备及网络设备接口ip地址、划分安全区域2、配置路由fw1上配置
ip route-static 1.1.2.2 255.255.255.255 1.1.1.254
3、配置安全策略security-policy
rule name 1
source-zone trust
destination-zone untrust
source-address 10.1.1.0 mask 255.255.255.0//注意这里是nat前的地址,因为在进行源nat前要执行安全策略
destination-address 1.1.2.2 mask 255.255.255.255
service http
service icmp
action permit
4、配置NAT4.1 配置地址池
nat address-group 1
mode no-pat global//使用global不关联安全区域
section 1.1.1.10 1.1.1.15
4.2 配置NAT策略
nat-policy
rule name 1
source-zone trust
destination-zone untrust
source-address 10.1.1.0 mask 255.255.255.0
destination-address 1.1.2.2 mask 255.255.255.255
action source-nat address-group 1
//实现私网指定网段访问非目的server时不进行源地址转换
rule name 2
source-zone trust
destination-zone untrust
source-address 10.1.1.0 mask 255.255.255.0
destination-address any
action no-nat
测试和分析在client1上ping serverping 1.1.2.2
在fw的g1/0/0抓包
在fw的g1/0/1?抓包
说明在fw对报文源地址nat前,其源地址是10.1.1.10,目的地址是1.1.2.2,经过fw源nat后,其源地址是1.1.1.10,目的地址是1.1.2.2。而回包的源地址是1.1.2.2,目的地址是1.1.1.10,回包被nat后,其源地址是1.1.2.2,而目的地址是10.1.1.10。
查看fw的会话表和sever-map表项
在client1上访问server的http服务
在fw的g1/0/0抓包
在fw的g1/0/1?抓包
说明在fw对报文源地址nat前后,http的请求报文的源端口始终是随机端口2049,目的端口始终是http端口80,http的回应报文的源端口始终是http端口80,目的端口始终是随机端口2049。
查看fw的会话表和sever-map表项
可以看到no-pat默认生成reverse的表项,这在配置了粗糙的安全策略的情况下会造成安全隐患。如果配置了从untrust到trust方向的安全策略放行icmp报文,那么公网的ping包也可以直接被nat地址后被发送到私网并被响应。
NAPT
同时转化地址和端口,实现多个私网地址共用一个或者多个公网地址,适用于公网地址数量少,需要上网的私网用户数量大的场景。
具体过程1、fw收到私网报文后,根据目的地址判断报文区域流向,通过安全策略检查后继而查找nat策略,发现需要对报文进行地址转换。
2、fw根据源地址 hash算法从nat地址池中选择一个公网地址,替换报文的源地址,同时使用新的端口号替换报文的源端口号,并建立会话表(没有建立server-map表),然后将报文转发到公网。
3、fw收到公网回包后,匹配会话表中表项,转换还原回包目的地址和目的端口,然后将报文转发到私网。
实验二:私网用户通过NAPT访问Internet(限制公网地址对应的私网地址数)
需求和拓扑某公司在网络边界处部署了FW作为安全网关。为了使私网中10.1.1.0/24网段的用户可以正常访问Internet,需要在FW上配置源NAT策略。除了公网接口的IP地址外,公司还向ISP申请了6个IP地址(1.1.1.10~1.1.1.15)作为私网地址转换后的公网地址。当大量的内网用户上网时会导致NAT转换时端口冲突,因此需要限制公网地址对应的私网地址数,保证用户正常上网。其中Router是ISP提供的接入网关。
(扫码回复NAT2获取完整实验拓扑环境及配置)
配置步骤1、配置终端设备及网络设备接口地址2、配置路由ip route-static 2.2.2.2 255.255.255.255 1.1.1.254
3、配置安全策略security-policy
rule name 1
source-zone trust
destination-zone untrust
source-address 10.1.1.0 mask 255.255.255.0
destination-address 2.2.2.0 mask 255.255.255.0
service ftp
service icmp
action permit
4、配置NAT//配置nat地址池
nat address-group 1 0
mode pat
section 0 1.1.1.10 1.1.1.15
srcip-car-num 256//私网与公网地址比例为256:1
推荐阅读
- HCIE-Security Day1(防火墙了解实验环境搭建三种方式管理防火墙)
- 何时使用Django(与其他开发栈的比较)
- 堆排序实际上在哪里使用()
- 哪一种排序算法的内存写操作最少()
- 如何使用C库函数difftime()(代码示例)
- 实现数据仓库有哪些困难()
- 在C#中以降序对数组进行排序的不同方法
- 在C#中创建对象的不同方法有哪些()
- 在Golang中连接两个字符串的不同方法