防火墙不是路由交换,是安全方面设备
NAT 技术是用来解决当今IP地址资源枯竭的一种技术,同时也是IPv4向IPv6的一种过渡
类似于思科的动态转化,多对多,不转化端口,它不能解约公网IP地址
实际应用场景使用较少,主要适用于需要上网的用户比较少,而公网IP地址又足够多的场景
类似于Cisco的PAT转换,NAPT即转换报文的源地址,又转换源端口。转换后的地址不能是外网接口IP地址,
属于多对多或多对一转换,可以节约公网IP地址,使用场景较多。
因其转换方式非常简单,所以也被称为Easy-IP、
和NAPT一样,即转换源IP地址,又转换源端口。区别是出接口地址方式转换后的地址只能是NAT设备外网接口所配置的IP地址,属于多对一转换,可以节约IP地址。
静态一对一发布,主要用于内部服务器需要对Internet提供服务时使用。
通过预留一个公网地址进行NAPT转换,而其他的公网地址
用来进行NAT No-PAT转换,该方式不太常用。
与源IP地址、源端口和协议类型有关的一种转换,将源IP地址和源端口
转换为固定公网IP地址和端口,能解决一些特殊应用在普遍NAT中无法实现的问题。
主要应用于外部用户访问局域网的一些P2P应用。
备注:常用的是前三个
在特定的NAT转换时,可能会产生环路及无效ARP
关于其如何产生,大概是:
1.在有些NAT的转换方式中,是为了解决内网连接Internet,而映射出了一个公有IP,那么,若此时有人通过internet来主动访问这个映射出来的公有IP,就会产生这两种情况;
2.若要详细说起来,又是很麻烦,但是解决这两个问题很简单:
就是配置黑洞路由(将internet主动访问映射出来的地址的流量指定到空接口null0),关于如何配置,将在过后的配置中展示出来,我总结了以下需要配置黑洞路由的场景,如下表所示
NAT类型 | 描述 | 是否配置黑洞路由 |
---|---|---|
NAT no-PAT | 当公网用户访问转换后地址时产生环路或产生ARP报文 | 是 |
NAT PAT | 当公网用户访问转换后地址时产生环路或产生ARP报文 | 是 |
出口地址(easy-ip) | 转换后的地址就是外网接口的物理地址,公网用户访问改地址,被防火墙接收(策略允许)或丢弃(策略不允许),不产生环路 | 否 |
NAT Server(粗泛) | 当公网用户访问映射地址时直接转发给内部服务器 | 否 |
NAT Server(精细) | 当公网用户访问映射地址时产生环路或者产生ARP报文 | 是 |
黑洞路由的作用
源地址转换场景:
目标地址转换场景:
状态化防火墙中会有一张表叫做会话表,用来记录的是内网访问外网时的一个连接信息,
当外网返回的数据匹配到会话表的记录时,直接放行相关返回流量。
会话表可以记录握手的信息
会话表与Server-map的区别如下:
●会话表记录的是连接信息,包括连接状态。
●server-map表记录的不是当前的连接信息,而是通过分析当前连接的报文后得到的信息
该信息用来解决接下来的数据流通过防火墙的问题。可以将server-map表的作用理解为通过未雨绸缪解决将来的问题,
如像FTP这种的多端口协议,在从一开始的三次握手,到最后完成数据的传输,其过程中,可能端口会发生改变等问题
server-map正好可以解决这种问题。
FTP传输模式(首先先建立控制层面连接,然后再建立数据层面连接)
1.主动模式:场景——客户端无server-map
服务器主动发起数据连接,首先客户端向服务器的21端口建立FTP管理连接
控制链接 源端口是12356端口 目标端口:21
客户端以POST命令告诉服务器“我打开了xx端口”你来连我
这个时候服务器以源端口:20 目标端口:xx 向客户机请求并建立连接
2.被动模式:场景——客户端有server-map
客户机主动发起数据连接,首先客户端向服务器的21端口申请建立FTP管理连接
客户端有防火墙,这个时候服务器连接客户机是连不起来的,因为客户端有防火墙,需要被动模式
服务端以PASV命令告诉客户端“我打开了zz端口”,你可以来连接我
于是客户端向服务端以zz端口进行数据连接
被动模式又被称为ASCII模式,一般用于存文本的传输
就是在有数据流量通过NAT的方式穿越防火墙时,server-map表会记录其源地址和转换后地址的对应关系
从而使后续流量可以不用查看NAT策略,直接匹配到server-map表,实现高效的NAT转换。
若用户通过互联网访问转换后的地址时,也可以匹配到server-map表,从而高效的将数据转发到内网真实主机(必须保证安全策略允许通过)。
server-map表不用手动配置,是自动生成的,这里只是简单介绍下server-map表是个什么鬼。
在NAT中,不是所有的NAT类型都可以生成server-map表的,我简单总结了一下,如下:
NAT类型 | 描述 |
---|---|
NAT no-PAT | 动态生成server-map表,也就是说只有流量通过才会;自动生成server-map表,并且不是长期存在的 |
NAPT及出口地址方式 | 不会生成Server-map表 |
NAT Server | 静态生成server-map表,意味表中的内容长期存在 |
当防火墙上配置某些内类的NAT后,在防火墙上会生成Server-map,默认生成两个server-map条目,分别是正向条目和反向条目(Reverse),如下:
[USG6000V1]display firewall server-map
Current Total Server-map : 2
正向
Type: Nat Server, ANY -> 202.96.1.10:445[192.168.1.4:445], Zone:---, protocol:tcp
Vpn: public -> public
反向
Type: Nat Server Reverse, 192.168.1.4[202.96.1.10] -> ANY, Zone:---, protocol:tcp
Vpn: public -> public, counter: 1
此时Server-map表的作用是:
●正向条目 :携带端口信息,用来使Internet用户访问内网中的服务器时直接通过server-map表来进行目标地址转换。
●反向条目(Reverse):不携带端口信息,且目标地址是任意的,用来使服务器可以访问Internet。
首先先设置基本的配置,接口的IP地址
R1:
system-view
Enter system view, return user view with Ctrl+Z.
[Huawei]un in en
Info: Information center is disabled.
[Huawei]sysname R1
[R1]int g 0/0/0
[R1-GigabitEthernet0/0/0]ip add 100.1.1.1 30
[R1-GigabitEthernet0/0/0]un sh
Info: Interface GigabitEthernet0/0/0 is not shutdown.
[R1-GigabitEthernet0/0/0]q
[R1]int g 0/0/1
[R1-GigabitEthernet0/0/1]ip add 200.1.1.1 24
[R1-GigabitEthernet0/0/1]un sh
Info: Interface GigabitEthernet0/0/1 is not shutdown.
[R1-GigabitEthernet0/0/1]q
[R1]dis ip int b
GigabitEthernet0/0/0 100.1.1.1/30 up up
GigabitEthernet0/0/1 200.1.1.1/24 up up
FW1:
Username:admin
Password:Admin@123
The password needs to be changed. Change now? [Y/N]: Y
Please enter old password: Admin@123
Please enter new password: abc@1234
Please confirm new password: abc@1234
Info: Your password has been changed. Save the change to survive a reboot.
*************************************************************************
* Copyright (C) 2014-2018 Huawei Technologies Co., Ltd. *
* All rights reserved. *
* Without the owner's prior written consent, *
* no decompiling or reverse-engineering shall be allowed. *
*************************************************************************
system-view
Enter system view, return user view with Ctrl+Z.
[USG6000V1]un in en
Info: Saving log files...
Info: Information center is disabled.
[USG6000V1]sys
[USG6000V1]sysname FW1
[FW1]int g 1/0/0
[FW1-GigabitEthernet1/0/0]ip add 100.1.1.2 30
[FW1-GigabitEthernet1/0/0]un sh
Info: Interface GigabitEthernet1/0/0 is not shutdown.
[FW1-GigabitEthernet1/0/0]q
[FW1]int g 1/0/1
[FW1-GigabitEthernet1/0/1]ip add 192.168.0.1 24
[FW1-GigabitEthernet1/0/1]un sh
Info: Interface GigabitEthernet1/0/1 is not shutdown.
[FW1-GigabitEthernet1/0/1]q
[FW1]int g 1/0/2
[FW1-GigabitEthernet1/0/2]ip add 192.168.1.1 24
[FW1-GigabitEthernet1/0/2]un sh
Info: Interface GigabitEthernet1/0/2 is not shutdown.
[FW1-GigabitEthernet1/0/2]q
[FW1]int g 1/0/3
[FW1-GigabitEthernet1/0/3]ip add 192.168.2.1 24
[FW1-GigabitEthernet1/0/3]un sh
Info: Interface GigabitEthernet1/0/3 is not shutdown.
[FW1-GigabitEthernet1/0/3]q
[FW1]int g 1/0/4
[FW1-GigabitEthernet1/0/4]ip add 192.168.3.1 24
[FW1-GigabitEthernet1/0/4]un sh
Info: Interface GigabitEthernet1/0/4 is not shutdown.
[FW1-GigabitEthernet1/0/4]q
配置私网与外网之间的静态路由
私网申请的公网IP网段为100.2.2.8/29
[R1]ip route-static 100.2.2.8 29 100.1.1.2
[FW1]ip route-static 200.1.1.0 24 100.1.1.1
或者配置默认路由
[FW1]ip route-static 0.0.0.0 0.0.0.0 100.1.1.1
接下来配置防火墙的具体配置,首先将各个接口放入匹配的区域内
[FW1]firewall zone dmz
[FW1-zone-dmz]add int g 1/0/1
[FW1-zone-dmz]q
[FW1]firewall zone untrust
[FW1-zone-untrust]add int g 1/0/0
[FW1-zone-untrust]q
[FW1]firewall zone trust
[FW1-zone-trust]add int g 1/0/2
[FW1-zone-trust]add int g 1/0/3
[FW1-zone-trust]add int g 1/0/4
[FW1-zone-trust]q
接下来开始配置各种类型的NAT
多对多,不转化端口,它不能解约公网IP地址
实际应用场景使用较少,主要适用于需要上网的用户比较少,而公网IP地址又足够多的场景
配置财务部属于trust区域,通过no-pat访问internet(使用100.2.2.10/29-100.2.2.11/29)
[FW1]nat address-group nat-no-napt
//定义地址组名
[FW1-address-group-nat-no-napt]section 1 100.2.2.10 100.2.2.11
定义地址组内的IP地址
[FW1-address-group-nat-no-napt]mode ?
full-cone Indicate the Fullone mode
no-pat Indicate the NOPAT mode
pat Indicate the Pat mode
pcp Indicate the PCP mode
[FW1-address-group-nat-no-napt]mode no-pat ?
global Indicate no-pat pattern of global mode
local Indicate no-pat pattern of local mode
[FW1-address-group-nat-no-napt]mode no-pat local
定义NAT模式为no-pat 针对本地地址
[FW1-address-group-nat-no-napt]q
[FW1]nat-policy
[FW1-policy-nat]rule name nat-no-pat
[FW1-policy-nat-rule-nat-no-pat]source-address 192.168.1.2 24
[FW1-policy-nat-rule-nat-no-pat]action ?
destination-nat Indicate that the rule action is destination NAT
no-nat Indicate that the rule action is NO-NAT
source-nat Indicate that the rule action is source NAT
[FW1-policy-nat-rule-nat-no-pat]action source-nat ?
address-group Indicate that the NAT mode is the NAT address group
easy-ip Indicate the action is easy-ip
static-mapping Indicate the action is static mapping
[FW1-policy-nat-rule-nat-no-pat]action source-nat address-group nat-no-napt
Info: The current source conversion address pool type is no-pat, and if some bu
sinesses of the same user do not need to do NAT, please create a new rule with N
AT type No-nat, otherwise the user's business will be NAT.
[FW1-policy-nat-rule-nat-no-pat]
[FW1]dis firewall session table
2020-02-11 14:59:47.270
Current Total Sessions : 5
icmp VPN: public --> public 192.168.1.2:18625[100.2.2.10:18625] --> 200.1.1.2
:2048
icmp VPN: public --> public 192.168.1.2:19393[100.2.2.10:19393] --> 200.1.1.2
:2048
icmp VPN: public --> public 192.168.1.2:18881[100.2.2.10:18881] --> 200.1.1.2
:2048
icmp VPN: public --> public 192.168.1.2:18369[100.2.2.10:18369] --> 200.1.1.2
:2048
icmp VPN: public --> public 192.168.1.2:19137[100.2.2.10:19137] --> 200.1.1.2
:2048
[FW1]dis firewall server-map
2020-02-11 15:00:00.950
Current Total Server-map : 2
Type: No-Pat Reverse, ANY -> 100.2.2.10[192.168.1.2], Zone: untrust
Protocol: ANY, TTL:---, Left-Time:---, Pool: 1, Section: 1
Vpn: public
Type: No-Pat, 192.168.1.2[100.2.2.10] -> ANY, Zone: untrust
Protocol: ANY, TTL:360, Left-Time:359, Pool: 1, Section: 1
Vpn: public
[FW1]ip route-static 100.2.2.10 32 NULL 0
[FW1]ip route-static 100.2.2.11 32 NULL 0
[FW1]dis ip routing-table
100.2.2.10/32 Static 60 0 D 0.0.0.0 NULL0
100.2.2.11/32 Static 60 0 D 0.0.0.0 NULL0
行政部 192.168.2.2/24 NAPT
NAPT即转换报文的源地址,又转换源端口。转换后的地址不能是外网接口IP地址,
属于多对多或多对一转换,可以节约公网IP地址,使用场景较多。
[FW1]security-policy
[FW1-policy-security]rule
[FW1-policy-security]rule name ?
STRING<1-32>/STRING<3-34> Specify a name for the rule; the length of the
rule name is 1 to 32 characters,if the rule name
contains spaces, the name must be enclosed with
double quotation marks, for example, "user for
test"
[FW1-policy-security]rule name NAPT
[FW1-policy-security-rule-NAPT]dis this
2020-02-11 14:10:53.830
#
rule name NAPT
(not configure the action)
#
return
[FW1-policy-security-rule-NAPT]source-zone trust
[FW1-policy-security-rule-NAPT]destination-zone untrust
[FW1-policy-security-rule-NAPT]action permit
[FW1-policy-security-rule-NAPT]us
[FW1-policy-security-rule-NAPT]q
[FW1-policy-security]q
首先要配置NAT地址组,地址组中对应的公网地址设为100.2.2.12/29。
[FW1]nat address-group NAPT
[FW1-address-group-NAPT]section ?
后面跟地址组的编号
INTEGER<0-40959> Specify section ID
X.X.X.X Specify the start address
[FW1-address-group-NAPT]section 0 ?
后面跟IP地址,也可以跟多个
X.X.X.X Specify the start address
[FW1-address-group-NAPT]section 0 100.2.2.12 ?
X.X.X.X Specify the end address
[FW1-address-group-NAPT]section 0 100.2.2.12
[FW1-address-group-NAPT]mode ?
full-cone Indicate the Fullone mode
no-pat Indicate the NOPAT mode
pat Indicate the Pat mode
pcp Indicate the PCP mode
[FW1-address-group-NAPT]mode pat
指定模式为pat模式
[FW1-address-group-NAPT]q
接下来配置NAT策略
[FW1]nat-policy
[FW1-policy-nat]rule name NAPT
自定义当前配置的NAT策略的组名
[FW1-policy-nat-rule-NAPT]source-address 192.168.2.2 24
指定源私网地址
[FW1-policy-nat-rule-NAPT]action source-nat address-group NAPT
关联要转换成的源公网地址组
[FW1-policy-nat-rule-NAPT]q
查看server-map和会话表
会话表显示成功转化NAT地址
[FW1]dis firewall session table
2020-02-11 14:38:32.640
Current Total Sessions : 5
icmp VPN: public --> public 192.168.2.2:20668[100.2.2.12:2064] --> 200.1.1.2:
2048
icmp VPN: public --> public 192.168.2.2:20412[100.2.2.12:2063] --> 200.1.1.2:
2048
icmp VPN: public --> public 192.168.2.2:21180[100.2.2.12:2066] --> 200.1.1.2:
2048
icmp VPN: public --> public 192.168.2.2:20924[100.2.2.12:2065] --> 200.1.1.2:
2048
icmp VPN: public --> public 192.168.2.2:21436[100.2.2.12:2067] --> 200.1.1.2:
2048
[FW1]dis firewall server-map
2020-02-11 14:39:05.230
Current Total Server-map : 0
[FW1]ip route-static 100.2.2.12 32 NULL 0
[FW1]dis ip routing-table
100.2.2.12/32 Static 60 0 D 0.0.0.0 NULL0
技术部 192.168.3.2/24 easy-ip
出接口地址方式转换后的地址只能是NAT设备外网接口所配置的IP地址,属于多对一转换,可以节约IP地址。
[FW1]security-policy
[FW1-policy-security]dis this
2020-02-11 13:35:50.970
#
security-policy
#
return
[FW1-policy-security]rule ?
copy Indicate copy a rule
move Indicate move a rule
name Indicate configure rule name
rename Indicate rename a rule
[FW1-policy-security]rule name easy-ip
[FW1-policy-security-rule-easy-ip]dis this
2020-02-11 13:36:53.400
#
rule name easy-ip
(not configure the action)
#
return
[FW1-policy-security-rule-easy-ip]source-zone trust
[FW1-policy-security-rule-easy-ip]destination-zone untrust
[FW1-policy-security-rule-easy-ip]action permit
[FW1-policy-security-rule-easy-ip]quit
[FW1-policy-security]q
[FW1]nat-policy
[FW1-policy-nat]rule ?
copy Indicate copy a rule
move Indicate move a rule
name Indicate configure rule name
rename Indicate rename a rule
[FW1-policy-nat]rule name easy-ip
[FW1-policy-nat-rule-easy-ip]source-address 192.168.3.0 24
[FW1-policy-nat-rule-easy-ip]source-zone trust
[FW1-policy-nat-rule-easy-ip]destination-zone untrust
[FW1-policy-nat-rule-easy-ip]action ?
destination-nat Indicate that the rule action is destination NAT
no-nat Indicate that the rule action is NO-NAT
source-nat Indicate that the rule action is source NAT
[FW1-policy-nat-rule-easy-ip]action source-nat ?
address-group Indicate that the NAT mode is the NAT address group
easy-ip Indicate the action is easy-ip
static-mapping Indicate the action is static mapping
[FW1-policy-nat-rule-easy-ip]action source-nat easy-ip
查看会话表和server-map表(存在的时间很短,ping完就要立刻查看)
[FW1]dis firewall session table
2020-02-11 14:06:02.610
Current Total Sessions : 5
icmp VPN: public --> public 192.168.3.2:47540[100.1.1.2:2059] --> 200.1.1.2:2
048
icmp VPN: public --> public 192.168.3.2:48052[100.1.1.2:2061] --> 200.1.1.2:2
048
icmp VPN: public --> public 192.168.3.2:47284[100.1.1.2:2058] --> 200.1.1.2:2
048
icmp VPN: public --> public 192.168.3.2:48308[100.1.1.2:2062] --> 200.1.1.2:2
048
icmp VPN: public --> public 192.168.3.2:47796[100.1.1.2:2060] --> 200.1.1.2:2
048
[FW1]dis firewall server-map
2020-02-11 14:05:49.430
Current Total Server-map : 0
小结:easy-ip的NAT模式只有会话表,不会产生server-map
配置DMZ区域中的两台服务器配置NAT-Server发布,分别提供FTP服务及web服务(使用100.2.2.9/29)
因为是客户端主动访问服务器,所以配置有所不同
[FW1]security-policy
[FW1-policy-security]rule name untodmz
[FW1-policy-security-rule-untodmz]source-zone untrust
源区域为untrust
[FW1-policy-security-rule-untodmz]destination-zone dmz
目标区域为dmz
[FW1-policy-security-rule-untodmz]service ftp
开启允许通过的服务
[FW1-policy-security-rule-untodmz]service http
[FW1-policy-security-rule-untodmz]action permit
[FW1-policy-security-rule-untodmz]q
[FW1-policy-security]q
接下来配置nat server
[FW1]nat server ftp protocol tcp global 100.2.2.9 21 inside 192.168.0.2 21
[FW1]nat server http protocol tcp global 100.2.2.9 80 inside 192.168.0.3 80
[FW1]dis firewall server-map
2020-02-11 15:28:02.900
Current Total Server-map : 4
Type: Nat Server, ANY -> 100.2.2.9:80[192.168.0.3:80], Zone:---, protocol:tcp
Vpn: public -> public
Type: Nat Server, ANY -> 100.2.2.9:21[192.168.0.2:21], Zone:---, protocol:tcp
Vpn: public -> public
Type: Nat Server Reverse, 192.168.0.2[100.2.2.9] -> ANY, Zone:---, protocol:tcp
Vpn: public -> public, counter: 1
Type: Nat Server Reverse, 192.168.0.3[100.2.2.9] -> ANY, Zone:---, protocol:tcp
Vpn: public -> public, counter: 1
[FW1]dis firewall session table
2020-02-11 15:28:23.960
Current Total Sessions : 1
ftp VPN: public --> public 200.1.1.2:2052 +-> 100.2.2.9:21[192.168.0.2:21]
t Server, ANY -> 100.2.2.9:80[192.168.0.3:80], Zone:—, protocol:tcp
Vpn: public -> public
Type: Nat Server, ANY -> 100.2.2.9:21[192.168.0.2:21], Zone:—, protocol:tcp
Vpn: public -> public
Type: Nat Server Reverse, 192.168.0.2[100.2.2.9] -> ANY, Zone:—, protocol:tcp
Vpn: public -> public, counter: 1
Type: Nat Server Reverse, 192.168.0.3[100.2.2.9] -> ANY, Zone:—, protocol:tcp
Vpn: public -> public, counter: 1
[FW1]dis firewall session table
2020-02-11 15:28:23.960
Current Total Sessions : 1
ftp VPN: public --> public 200.1.1.2:2052 ±> 100.2.2.9:21[192.168.0.2:21]