汇总命令,理解记忆
bash
# ------静态NAT-------------
# 进入外网接口
[R1] interface GigabitEthernet 0/0/1
# 一对一静态映射
[R1-GigabitEthernet0/0/1] nat static global 100.1.1.10 inside 10.1.1.10
# ------动态NAT,内外网一对一映射-------------
# 系统视图创建ACL和地址组
[R1] acl 2000
[R1-acl-basic-2000] rule 5 permit source 10.1.1.0 0.0.0.255
[R1-acl-basic-2000] quit
[R1] nat address-group 1
# 定义了一个地址段,0为地址段索引号,起始地址为100.1.1.20,结束地址为100.1.1.30
[R1-address-group-1] section 0 100.1.1.20 100.1.1.30
[R1-address-group-1] quit
# 进入外网接口应用动态NAT
[R1] interface GigabitEthernet 0/0/1
# no-pat不做端口转换,去掉no-pat就是NAPT了
[R1-GigabitEthernet0/0/1] nat outbound 2000 address-group 1 no-pat
# ------NAPT,内外网多对一映射,上述命令去掉no-pat-------------
# ------Easy IP,将内网地址直接转换为接口的公网IP地址-------------
# 系统视图创建ACL
[R1] acl 2002
[R1-acl-basic-2002] rule 5 permit source 10.1.3.0 0.0.0.255
[R1-acl-basic-2002] quit
# 进入外网接口应用Easy IP
[R1] interface GigabitEthernet 0/0/1
[R1-GigabitEthernet0/0/1] nat outbound 2002
# ------NAT Server,将公网地址的特定端口映射到内网服务器-------------
# 进入外网接口配置NAT Server
[R1] interface GigabitEthernet 0/0/1
# unr-route自动生成黑洞路由
[R1-GigabitEthernet0/0/1] nat server protocol tcp global 100.1.1.9 8443 inside 10.2.1.2 443 unr-route
# 映射UDP端口范围示例
[R1-GigabitEthernet0/0/1] nat server protocol udp global 100.1.1.10 10000 inside 10.2.1.3 10000 to 20000
# ------双向NAT,同时对源地址和目的地址进行转换-------------
# 系统视图创建ACL
[R1] acl 3000
[R1-acl-adv-3000] rule 10 permit ip source 10.1.1.100 destination 172.16.1.100
[R1-acl-adv-3000] quit
# 创建目的NAT地址组
[R1] nat address-group 3
[R1-address-group-3] section 0 100.1.1.50 100.1.1.50
[R1-address-group-3] quit
# 进入外网接口配置双向NAT
[R1] interface GigabitEthernet 0/0/1
[R1-GigabitEthernet0/0/1] nat server protocol tcp global 100.1.1.50 8080 inside 172.16.1.100 80
[R1-GigabitEthernet0/0/1] nat outbound 3000 address-group 3
# ------黑洞路由,将NAT公网地址的路由只想空接口,防止路由环路-------------
# 系统视图手动配置黑洞路由
[R1] ip route-static 100.1.1.9 255.255.255.255 NULL0
# 配置网段级别的黑洞路由
[R1] ip route-static 100.1.1.0 255.255.255.0 NULL0 preference 70
# ------完整配置示例------------
# 基础接口配置
[R1] interface GigabitEthernet 0/0/0
[R1-GigabitEthernet0/0/0] ip address 192.168.1.1 255.255.255.0
[R1-GigabitEthernet0/0/0] quit
[R1] interface GigabitEthernet 0/0/1
[R1-GigabitEthernet0/0/1] ip address 100.1.1.1 255.255.255.0
# 在同一个外网接口应用多种NAT
# 静态NAT
[R1-GigabitEthernet0/0/1] nat static global 100.1.1.10 inside 192.168.1.10
# 动态NAT,不做端口转发
[R1-GigabitEthernet0/0/1] nat outbound 2000 address-group 1 no-pat
# NAPT,进行端口转发
[R1-GigabitEthernet0/0/1] nat outbound 2001 address-group 2
# Easy IP,内网地址转为接口的公网地址
[R1-GigabitEthernet0/0/1] nat outbound 2002
# NAT server配置,从外往里,unr-route同时配置黑洞路由
[R1-GigabitEthernet0/0/1] nat server protocol tcp global 100.1.1.9 8443 inside 192.168.1.2 443 unr-route
基础概念
NAT:网络地址转换技术
最初目的:解决私网到公网地址转换,解决地址不够用的问题。
分类:
- 源NAT:对报文中的源地址进行转换,私网访问Internet场景
- 目的NAT:对报文中的目的地址进行转换,公网访问私网服务器的场景
- 双向NAT
NAT优点
- 实现IP地址复用
- 有效避免外网攻击
- 服务器负载均衡,外网访问内部,可以配置一对多轮询
NAT缺点
- 网络监控难度加大:公网一对多私网场景,无法准确监控具体哪个私网
- 限制某些具体应用,某些应用不支持
一般部署在网络出口设备上,例如路由器或者防火墙上。
静态NAT:
公网与私网地址一对一映射,支持双向互访。达不到节约IP地址的作用。
配置命令:
-
接口视图配置
*nat static global [global-address] inside [host-address] -
系统视图下配置,接口视图启用
*nat static global [global-address] inside [host-address] //系统视图创建nat static enable // 接口视图启用
动态NAT
NAT地址池:
- 选择一个地址池中未使用的地址作为转换后的地址,并标记为in use
- 生成一个临时的NAT映射表
- 回包:查找NAT映射表,根据公有地址查找私有地址,并进行IP数据报文目的地址转换
配置命令
- 创建地址池
bash
[Huawei] nat address-group group-index[0-7] [start-address] [end-address]
- 配置地址转换的ACL规则
bash
[Huawei] acl [number]
[Huawei-acl-basic-number] rule permit source [source-address] [source-wildcard]
wildcard:通配符掩码
配置基础ACL,匹配需要进行动态地址转换的源地址范围。
- 接口视图下配置带地址池的NAT Outbound
bash
[Huawei-GigabitEthernet 0/0/0] nat outbound acl-number address-group group-index [ no-pat ]
接口下关联ACL与地址池进行动态地址转换,no-pat参数指定不进行端口转换
NAPT(Network and port Translation)网络地址端口转换
不仅转换IP地址,同时也对端口号进行转换,实现公有地址与私有地址的1:n映射,可以有效提高公有地址利用率。
- 选择一个地址池中的地址,同时转换源I、端口
- 生成一个临时的NAT映射表,其中记录:源地址:端口,目标地址:端口
- 回包:查找NAT映射表,根据公有地址:端口信息查找对应的私有地址:端口,并进行数据报文中IP和端口转换
配置命令(基于动态NAT,去掉no pat参数)
- 创建地址池
bash
[Huawei] nat address-group group-index[0-7] [start-address] [end-address]
- 配置地址转换的ACL规则
bash
[Huawei] acl [number]
[Huawei-acl-basic-number] rule permit source [source-address] [source-wildcard]
wildcard:通配符掩码
配置基础ACL,匹配需要进行动态地址转换的源地址范围。
- 接口视图下配置带地址池的NAT Outbound
bash
[Huawei-GigabitEthernet 0/0/0] nat outbound acl-number address-group group-index
接口下关联ACL与地址池进行动态地址转换,no-pat参数指定不进行端口转换
Easy IP
- 基于NAPT精简
- 省掉地址池
配置示例,内网所有私有地址通过122.1.2.1访问公网。
bash
[R1] acl 2000
[R1-acl-basic-2000] rule 5 permit source 192.168.1.0 0.0.0.255
[R1-acl-basic-2000] quit
[R1] interface GigabitEthernet 0/0/0
[R1-GigabitEthernet 0/0/0] nat outbound 2000
NAT Server使用场景
与静态NAT很像(双向),主要做目标地址转换场景,一般用于外部访问内部(单向)。
- NAT Server:公有地址:端口 的一对一映射关系,将内网服务器映射到公网。
- 外网主机主动访问 公网地址:端口 实现对内网服务器的访问
配置示例
bash
[R1] interface GigabitEthernet 0/0/0
[R1-GigabitEthernet 0/0/0] nat server protocol tcp global 122.1.2.1 www inside 192.168.1.10 8080
www默认指80端口
一对一映射配置
bash
[R1] interface GigabitEthernet 0/0/0
[R1-GigabitEthernet 0/0/0] nat server global 122.1.2.1 inside 192.168.1.10
双向NAT
- 域间双向NAT:在NAT Server基础上(外往里),增加源NAT配置(公网地址转换为私网地址)。
- 域内双向NAT
防火墙上针对不同NAT类型处理顺序如下:
- 匹配NAT Server
- 匹配目的NAT
- 查找路由表
- 匹配安全策略
- 匹配源NAT
黑洞路由
也是一条静态路由,出口为Null0
主要进行数据过滤和环路避免
- NAT地址池地址与公网接口地址不在同一个网段时,必须配置黑洞路由
- 配置指定协议和端口的NAT Server的global地址与公网接口地址不在同一个网段时,必须配置黑洞路由
- 地址池或NAT Server的global地址与公网接口地址在同一个网段时(直连路由,不走默认路由导致来回发送,可以避免一个多余的ARP报文),建议配置黑洞路由
- 地址池或NAT Server的global地址与公网接口地址一致时,不会产生环路,不需要配置黑洞路由
配置案例
unr-route自动为global地址配置黑洞路由
bash
nat server policy protocol tcp global 100.1.1.9 8443 inside 10.2.1.2 443 unr-route
命令解释:外网tcp请求100.1.1.9:8443,转发到内网10.2.1.2:443
unr-route:自动为100.1.1.9配置黑洞路由
黑洞路由案例
外面公网访问地址池中公网,但是对应公网未配置私网时,未匹配到映射表,会匹配路由表,使用默认路由发送回发送方,发送方再使用默认路由发回来,形成路由黑洞,循环发送。。不是致命的,消耗带宽和资源,默认最多发送255次之后被丢弃。如果被恶意攻击,会影响网络健康。
解决:地址池中公网地址配置黑洞路由,找不到地址映射时,丢弃报文。
防火墙工作模式
- 透明模式:内外部端口均没有配置IP地址
- 路由模式:外部端口、内部端口均配置了IP地址
- 混合模式:外部端口配置了IP地址,内部端口没有配置IP地址