NAT(Network Address Translation),网络地址转换,是一种网络通信技术,主要用于解决IPv4地址不足的问题。NAT技术可以将一组内部网络的IP地址映射到一个或多个外部网络的IP地址,实现内外网络之间的通信。其主要作用包括:P地址转换、地址重用、增强网络安全性和网络访问控制。
IP地址转换:将内部网络使用的私有IP地址转换为外部网络使用的公共IP地址,使得内部网络可以与外部网络进行通信。
地址重用:通过使用私有IP地址,可以更有效地利用有限的公共IP地址资源。
增强网络安全性:NAT技术可以隐藏内部网络的真实IP地址,增加了网络的安全性,减少了外部网络对内部网络的直接攻击风险。
网络访问控制:通过配置NAT规则,可以对内部网络的访问进行控制,限制外部网络对内部网络的访问。
一、 分类
1. 源NAT(转换数据包的源地址,针对数据包的初始流量)
No-PAT(只转换源IP地址)
NAPT、Smart NAT、easy IP(同时转换源IP和源端口)
2. 目的NAT
静态目的NAT
地址到地址
端口到端口
地址到端口
端口到地址
动态的目的NAT
3. 双向NAT
源NAT+目的NAT
4. NAT server
地址到地址
端口到端口
二、 NAT策略的匹配原则
1. 匹配顺序是从上到下,优先匹配
2. 双向NAT或目的NAT会在源NAT之上
3. 新增的或是被修改的NAT策略,会调整到同类NAT的最后
4. 根据需要调整NAT策略的顺序,但是不能违背条件2
防火墙收到数据,匹配顺序:
1. 目的NAT;
2. 路由表;
3. 安全策略;
4. 双向NAT;
5. 源NAT;
6. 创建会话表;
7. 转发
如果防火墙同时配置了目的NAT和安全策略,则安全策略匹配的流量是转换后的目的地址;
如果防火墙同时配置了源NAT和安全策略,则安全策略匹配的流量是转换前的源地址;
如果防火墙同时配置了双向NAT和安全策略,则安全策略匹配的流量是转换前的源地址和转换后的目的地址。
一般情况下,安全策略匹配的流量的真实地址。
实验(此文中涉及的实验用华为ENSP模拟器实现)
需求:
地址池
源地址池、目的地址池
源NAT,No-PAT
不转换端口号
定义源NAT地址池
[FW]nat address-group SNAT //创建地址池
[FW-address-group-SNAT]section 12.1.1.10 12.1.1.11 //定义地址范围
[FW-address-group-SNAT]mode no-pat ?
global Indicate no-pat pattern of global mode
//生成的server-map表项中不包含安全区域的参数,所有的安全区域都可以通过该server-map表项访问内部终端
local Indicate no-pat pattern of local mode
//生成的server-map表项中包含安全区域的参数,只有次安全区域可以通过该server-map表项访问内部终端
nat-policy
rule name SNAT
source-zone trust
destination-zone untrust
source-address 192.168.1.0 mask 255.255.255.0
destination-address 103.231.1.0 mask 255.255.255.0
destination-address 60.69.1.0 mask 255.255.255.0
service icmp
action source-nat address-group SNAT
security-policy
rule name Internet
source-zone trust
destination-zone untrust
source-address 192.168.1.0 mask 255.255.255.0
service http
service icmp
action permit
源NAT,NAPT
有端口号的转换
[FW-address-group-SNAT]mode pat
源NAT,Smart NAT
Smart NAT = No-PAT + NAPT
nat address-group SNAT 0
mode no-pat local
smart-nopat 12.1.1.20 //指定smart IP,当地址池用满之后,会使用该地址做pat
section 0 12.1.1.10 12.1.1.11
源NAT,easy nat
将内部终端,通过出接口的IP地址访问外网
nat-policy
rule name SNAT
source-zone trust
destination-zone untrust
source-address 192.168.1.0 mask 255.255.255.0
destination-address 103.231.1.0 mask 255.255.255.0
destination-address 60.69.1.0 mask 255.255.255.0
service icmp
action source-nat easy-nat
目的NAT,静态目的NAT
地址到地址
转换数据包的目的地址,转换前后,地址存在固定的映射关系,通常用来发布服务器
匹配的地址数量和地址池的数量要一致;
nat-policy中不能配置目的zone或者出接口,因为nat策略匹配时,还不能确定出接口或目的zone;
安全策略中可以配置目的zone或者出接口,因为nat策略已经转换完成目的IP,且确认了出接口和目的zone。
nat-policy
rule name DNAT
source-zone untrust
destination-address range 12.1.1.10 12.1.1.12 //定义全局地址
service http
service icmp
action destination-nat static address-to-address address-group DNAT //定义静态的地址到地址的目的NAT,地址之间是一一对应的
destination-nat address-group DNAT 0
section 192.168.1.10 192.168.1.12 //定义内部地址
security-policy
rule name DNAT
source-zone untrust
destination-zone trust
destination-address 192.168.1.0 mask 255.255.255.0
service http
service icmp
action permit
端口到端口
转换数据包的目的端口,转换前后,端口存在固定的映射关系
匹配的端口数量要一致;
nat-policy中不能配置目的zone或者出接口,因为nat策略匹配时,还不能确定出接口或目的zone;
安全策略中可以配置目的zone或者出接口,因为nat策略已经转换完成目的IP,且确认了出接口和目的zone
destination-nat address-group DNAT 0
section 192.168.1.12 192.168.1.12
nat-policy
rule name DNAT
source-zone untrust
destination-address 12.1.1.12 mask 255.255.255.255
service protocol tcp destination-port 8890 //定义被访问的目的端口
action destination-nat static port-to-port address-group DNAT 80 //定义真实端口
端口到地址
一个公网地址的多个端口,转换到多个私网地址的相同目的端口
nat-policy
rule name DNAT
source-zone untrust
destination-address 12.1.1.100 mask 255.255.255.255
service protocol tcp destination-port 8889 to 8890
action destination-nat static port-to-address address-group DNAT 21
destination-nat address-group DNAT 0
section 192.168.1.10 192.168.1.11
security-policy
rule name DNAT
source-zone untrust
destination-zone trust
destination-address 192.168.1.0 mask 255.255.255.0
service ftp
action permit
地址到端口
多个公网地址,转换到一个私网地址的多个端口
nat-policy
rule name DNAT
source-zone untrust
destination-address range 12.1.1.10 12.1.1.11
service protocol tcp destination-port 8890
action destination-nat static address-to-port address-group DNAT 21 80
destination-nat address-group DNAT 0
section 192.168.1.11 192.168.1.11
security-policy
rule name DNAT
source-zone untrust
destination-zone trust
destination-address 192.168.1.0 mask 255.255.255.0
service ftp
service http
action permit
目的NAT,动态的目的NAT
nat-policy
rule name DNAT
source-zone trust
destination-address 8.8.8.8 mask 255.255.255.255
service icmp
action destination-nat address-group DNAT
destination-nat address-group DNAT 0
section 103.231.1.10 103.231.1.10
security-policy
rule name DDNAT
source-zone trust
destination-zone untrust
source-address 192.168.1.0 mask 255.255.255.0
destination-address 103.231.1.10 mask 255.255.255.255
service icmp
action permit
NAT Server
一般是用来发布内网路由器的
地址到地址
[FW]nat server HTTP global 12.1.1.100 inside 192.168.1.11 ?
X.X.X.X Local IP address of the last server host
description Indicate the NAT server description
nat-disable Indicate nat server function disable //使该NAT server不生效
no-reverse No reverse NAT server //不生成反向server-map
unr-route Indicate configure UNR //黑洞路由
-instance indicate a VPN instance
反向server-map的作用
ASPF/ALG: 起到精确安全策略的作用——FTP;
Nat server: 允许内部服务器主动向外部发起访问(需要安全策略)
端口到端口
[FW]nat server FTP protocol tcp global 12.1.1.100 8890 inside 192.168.1.11 21
问题:
如果global地址与防火墙的出接口地址不在同一网段,一定要配置黑洞路由,否则会引起三层环路;
如果global地址与防火墙的出接口地址在同一网段,建议配置黑洞路由,否则会引发大量的ARP报文;
如果global地址与防火墙的出接口地址一致,则不需要配置缺省路由。
双向NAT
所谓双向NAT,就是同时转换数据包的源地址和目的地址;
做NAT策略是,要在同一条NAT策略中配置;
应用场景:
场景一:可避免在服务器上配置网关——可避免服务器对外访问
场景二:内部终端通过公网地址访问内部服务器时,无法正常建立连接
由于内部终端A发起TCP首次握手时,发出的TCP报文,与内部服务器B响应的TCP握手报文IP地址不匹配,导致TCP连接失败,因此无法建立链接
总结
内网访问公网(针对内网用户)—— 源NAT
通过地址池
通过出接口
外网访问内部(针对对外发布服务器)—— 目的NAT
目的NAT
NAT Server
多出口的场景
配置黑洞路由
nat address-group SNAT 0
mode no-pat global
route enable //源NAT加黑洞路由
section 0 192.168.1.100 192.168.1.100
目的NAT
[FW]ip route-static 12.1.1.0 29 NULL 0
此篇文章属于个人经验总结,如有漏缺的地方欢迎指出改进,本文章到此结束,下期再见。