NAT产生背景:
NAT有三种类型:
静态 NAT ( Static NAT )( 一对一 )。将内部网络的私有IP地址转换为公有IP地址,IP地址对是一对一的,是一直不变的。
动态地址 NAT ( Pooled NAT )(多对多)。将内部网络的私有 IP 地址转换为公用 IP 地址时,IP 地址是不确定,随机的。所有被授权访问 Internet 的私有 IP 地址可随机转换为任何指定合法的 IP 地址。也就是说,只要指定哪些内部地址可以进行转换,以及用哪些合法地址作为外部地址时,就可以进行动态 NAT 转换。动态 NAT 是在路由器上配置一个外网 IP 地址池,当内部有计算机需要和外部通信时,就从地址池里动态的取出一个外网 IP,并将他们的对应关系绑定到 NAT 表中,通信结束后,这个外网 IP 才被释放,可供其他内部 IP 地址转换使用,这个 DHCP 租约 IP 有相似之处。 当 ISP 提供的合法 IP 地址略少于网络内部的计算机数量时。可以采用动态转换的方式。
网络地址端口转换 NAPT(Network Address Port Translation)(Port-Level NAT)( 多对一 )。改变外出数据包的源端口并进行端口转换,采用端口多路复用方式。内部网络的所有主机均可共享一个合法外部 IP 地址实现对 Internet 的访问,可以最大限度地节约 IP 地址资源。同时,也可以隐藏网络内部的所有主机,有效避免来自 Internet 的攻击。因此,目前网络中应用最多的就是 PAT 规则。这是最常用的 NAT 技术,也是 IPv4 能够维持到今天的最重要的原因之一,它提供了一种多对一的方式,对多个内网 IP 地址,边界路由可以给他们分配一个外网 IP,利用这个外网 IP 的不同端口和外部进行通信。NAPT 与 动态NAT 不同,它将内部连接映射到外部网络中的一个单独的 IP 地址上,同时在该地址上加上一个由 NAT 设备选定的端口号。
NAPT 是使用最普遍的一种转换方式,在 HomeGW 中也主要使用该方式。它又包含两种转换方式:SNAT和DNAT。
(1) 源NAT(Source NAT,SNAT):修改数据包的源地址。源NAT改变第一个数据包的来源地址,它永远会在数据包发送到网络之前完成,数据包伪装就是一具SNAT的例子。
(2) 目的NAT(Destination NAT,DNAT):修改数据包的目的地址。Destination NAT刚好与SNAT相反,它是改变第一个数据懈的目的地地址,如平衡负载、端口转发和透明代理就是属于DNAT。
SNAT:
内部地址要访问公网上的服务时(如web访问),内部地址会主动发起连接,由路由器或者防火墙上的网关对内部地址做个地址转换,将内部地址的私有IP转换为公网的公有IP,网关的这个地址转换称为SNAT,主要用于内部共享IP访问外部。
DNAT:
当内部需要提供对外服务时(如对外发布web网站),外部地址发起主动连接,由路由器或者防火墙上的网关接收这个连接,然后将连接转换到内部,此过程是由带有公网IP的网关替代内部服e79fa5e98193e78988e69d8331333366303236务来接收外部的连接,然后在内部做地址转换,此转换称为DNAT
源NAT(基于源地址转换)
服务器映射
no-pat(动态NAT,实现多个一对一):只对源地址进程转换,不转换端口
NAT地址池是一些连续的IP地址集合,当来自私网的报文通过地址转换到公网IP时,将会选择地址池中的某个地址作为转换后的地址
NAPT与NAT的区别在于,NAPT不仅转换IP包中的IP地址,还对IP包中TCP和UDP的Port进行转换。这使得多台私有网主机利用1个NAT公共IP就可以同时和公共网进行通信。
192.168.1.1 ——》 155.133.87.1
192.168.1.2 ——》 155.133.87.2
192.168.1.3 ——》 155.133.87.3
192.168.1.4 ——》 丢弃
192.168.1.1 ——》 155.133.87.1:7111
192.168.1.2 ——》 155.133.87.1:7112
192.168.1.3 ——》 155.133.87.1:7113
出接口地址方式也称为Easy IP,即直接使用接口的公网地址作为转换后的地址,不需要配置NAT地址池。转换时同时转换地址和端口,即可实现多个私网地址共用外网接口的公网地址的需求。 (根据路由器上出接口的公网IP 地址实现与私网IP 地址之间的映射)
动态NAT
USG6000v
1.创建安全区域,接口划分到安全区域
[fw2]firewall zone trust
[fw2-zone-trust]add int g1/0/0
[fw2-zone-trust]q
[fw2]firewall zone untrust
[fw2-zone-untrust]add int g1/0/1
[fw2-zone-untrust]q
[fw2]int g1/0/0
[fw2-GigabitEthernet1/0/0]ip add 10.1.1.254 24
[fw2-GigabitEthernet1/0/0]int g1/0/1
[fw2-GigabitEthernet1/0/1]ip add 110.1.1.2 24
2.创建地址池(这里就创建一个地址)
[fw2]nat address-group one
[fw2-address-group-one]section 110.1.1.10 110.1.1.10
[fw2-address-group-one]mode no-pat global
3.源NAT策略
[fw2]nat-policy
[fw2-policy-nat]rule name nopat
[fw2-policy-nat-rule-nopat]source-zone trust
[fw2-policy-nat-rule-nopat]destination-zone untrust
[fw2-policy-nat-rule-nopat]action ?
nat Indicate the rule action NAT
no-nat Indicate the rule action NO-NAT
[fw2-policy-nat-rule-nopat]action nat address-group one
4.安全策略放行
[fw2]security-policy
[fw2-policy-security]rule name pc2_pc3_policy
[fw2-policy-security-rule-pc2_pc3_policy]source-zone trust
[fw2-policy-security-rule-pc2_pc3_policy]destination-zone untrust
[fw2-policy-security-rule-pc2_pc3_policy]source-address 10.1.1.1 32
[fw2-policy-security-rule-pc2_pc3_policy]destination-address 110.1.1.3 32
[fw2-policy-security-rule-pc2_pc3_policy]service icmp
[fw2-policy-security-rule-pc2_pc3_policy]action permit
1.创建安全区域,接口划分到安全区域
[fw1]firewall zone trust
[fw1-zone-trust]add int g0/0/1
[fw1-zone-trust]q
[fw1]firewall zone untrust
[fw1-zone-untrust]add int g0/0/2
[fw1-zone-untrust]q
[fw1]int g0/0/1
[fw1-GigabitEthernet0/0/1]ip add 10.1.1.254 24
[fw1-GigabitEthernet0/0/1]int g0/0/2
[fw1-GigabitEthernet0/0/2]ip add 110.1.1.1 24
2.创建地址池(这里就创建一个地址)
[fw1]nat address-group 1 110.1.1.11 110.1.1.11
3.源NAT策略
[fw1]nat-policy interzone trust untrust outbound
[fw1-nat-policy-interzone-trust-untrust-outbound]policy 0
[fw1-nat-policy-interzone-trust-untrust-outbound-0]policy source 10.1.1.0 0.0.0.
255
[fw1-nat-policy-interzone-trust-untrust-outbound-0]action source-nat
[fw1-nat-policy-interzone-trust-untrust-outbound-0]address-group 1 no-pat
4.安全策略放行
[fw1]policy interzone trust untrust outbound
[fw1-policy-interzone-trust-untrust-outbound]policy 0
[fw1-policy-interzone-trust-untrust-outbound-0]policy source 10.1.1.1 0
[fw1-policy-interzone-trust-untrust-outbound-0]policy destination 110.1.1.3 0
[fw1-policy-interzone-trust-untrust-outbound-0]policy service service-set icmp
[fw1-policy-interzone-trust-untrust-outbound-0]action permit
NAT ALG(Application Level Gateway,应用级网关)是特定的应用协议的转换代理,可以完成应用层数据中携带的地址及端口号信息的转换
普通NAT实现了对UDP或TCP报文头中的的IP地址及端口转换功能,但对应用层数据载荷中的字段无能为力, 在许多应用层协议中,比如多媒体协议(H.323、SIP等)、FTP、SQLNET等,TCP/UDP载荷中带有地址或者端口信息,这些内容不能被NAT进行有效的转换,就可能导致问题。而NAT ALG(Application Level Gateway,应用层网关)技术能对多通道协议进行应用层报文信息的解析和地址转换,将载荷中需要进行地址转换的IP地址和端口或者需特殊处理的字段进行相应的转换和处理,从而保证应用层通信的正确性。
例如,FTP应用就由数据连接和控制连接共同完成,而且数据连接的建立动态地由控制连接中的载荷字段信息决定,这就需要ALG来完成载荷字段信息的转换,以保证后续数据连接的正确建立。
将PORT报文进行了ALG处理,针对应用层的私有地址进行转换,转换成8.8.8.11。这样服务器就得到公网地址。 服务器就与8.8.8.11进行连接。
将前一个实验的PC3换成Server1
Server1启动FTP服务,验证ALG技术。 ALG技术在USG 6000V是默认开启detect ftp的
5500
policy interzone trust untrust outbound
policy 1
policy source 10.1.1.1 0
policy destination 110.1.1.3 0
policy service service-set ftp
action permit
firewall interzone trust untrust
detect ftp 开启ASPF 和 NAT ALG。 这两个的命令是共用的
6000
security-policy
rule name ftp_policcy
source-zone trust
destination untrust
source-address 10.1.1.1 32
destination-address 110.1.1.3 32
service ftp
action permit
内部服务器(Nat Server)功能是使用一个公网地址来代表内部服务器对外地址。
在防火墙上,专门为内部的服务器配置一个对外的公网地址来代表私网地址。对于外网用户来说,防火墙上配置的外网地址就是服务器的地址。
基于NAT Server的配置
配置内部Web和FTP服务器。
[USG] nat server wwwserver protocol tcp global 202.169.10.1 80 inside 192.168.20.2 8080
[USG] nat server ftpserver protocol tcp global 202.169.10.1 ftp inside 192.168.20.3 ftp
左边的防火墙是5500,右边的防火墙是6000
左边的防火墙 5500
1.创建安全区域,划分接口,配置IP地址
创建安全区域
firewall zone trust
set priority 85
add interface GigabitEthernet0/0/0
add interface GigabitEthernet0/0/1
#
firewall zone untrust
set priority 5
add interface GigabitEthernet0/0/3
#
firewall zone dmz
set priority 50
add interface GigabitEthernet0/0/2
#
配置IP地址
interface GigabitEthernet0/0/1
ip address 10.1.1.254 255.255.255.0
#
interface GigabitEthernet0/0/2
ip address 10.1.2.254 255.255.255.0
#
interface GigabitEthernet0/0/3
ip address 202.1.1.1 255.255.255.0
#
2.源NAT策略,创建easy ip
nat-policy interzone trust untrust outbound
policy 0
action source-nat
policy source 10.1.1.0 0.0.0.255
easy-ip GigabitEthernet0/0/3
3.安全策略放行
[fw2]policy interzone trust untrust outbound
[fw2-policy-interzone-trust-untrust-outbound]policy 0
[fw2-policy-interzone-trust-untrust-outbound-0]policy source 10.1.1.1 0
[fw2-policy-interzone-trust-untrust-outbound-0]policy destination 202.1.1.11 0
[fw2-policy-interzone-trust-untrust-outbound-0]policy service service-set ftp
[fw2-policy-interzone-trust-untrust-outbound-0]action permit
FTP,就要配置ASPF,NAT ALG启动
[fw2]firewall interzone trust untrust
[fw2-interzone-trust-untrust]detect ftp
[fw2]policy interzone trust dmz outbound
[fw2-policy-interzone-trust-dmz-outbound]policy 0
[fw2-policy-interzone-trust-dmz-outbound-0]policy source 10.1.1.1 0
[fw2-policy-interzone-trust-dmz-outbound-0]policy destination 10.1.2.1 0
[fw2-policy-interzone-trust-dmz-outbound-0]policy service service-set http
[fw2-policy-interzone-trust-dmz-outbound-0]action permit
4.对外提供web服务,nat server
[fw2]nat server one protocol tcp global 202.1.1.10 inside 10.1.2.1 www
5.对端防火墙的放行,untrust到dmz的放行
[fw2]policy interzone untrust dmz inbound
[fw2-policy-interzone-dmz-untrust-inbound]policy 0
[fw2-policy-interzone-dmz-untrust-inbound-0]policy source 202.1.1.2 0
[fw2-policy-interzone-dmz-untrust-inbound-0]policy destination 10.1.2.1 0
[fw2-policy-interzone-dmz-untrust-inbound-0]policy service service-set http
[fw2-policy-interzone-dmz-untrust-inbound-0]action permit
为什么第五步,目标destination是10.1.2.1呢?而不是202.1.1.10?
因为在做安全策略检查之前,先要做服务器映射转换,已经变为私网地址了。 如图所示可知道顺序
右边的防火墙 6000
1.创建安全区域,划分接口,配置IP地址
创建安全区域
firewall zone trust
set priority 85
add interface GigabitEthernet0/0/0
add interface GigabitEthernet1/0/1
#
firewall zone untrust
set priority 5
add interface GigabitEthernet1/0/3
#
firewall zone dmz
set priority 50
add interface GigabitEthernet1/0/2
#
配置IP地址
interface GigabitEthernet1/0/1
undo shutdown
ip address 10.1.1.254 255.255.255.0
#
interface GigabitEthernet1/0/2
undo shutdown
ip address 10.1.2.254 255.255.255.0
#
interface GigabitEthernet1/0/3
undo shutdown
ip address 202.1.1.2 255.255.255.0
#
2.源NAT策略,创建easy ip
[fw1]nat-policy
[fw1-policy-nat]rule name easy_ip
[fw1-policy-nat-rule-easy_ip]source-zone trust
[fw1-policy-nat-rule-easy_ip]destination-zone untrust
[fw1-policy-nat-rule-easy_ip]source-address 10.1.1.0 24
[fw1-policy-nat-rule-easy_ip]action nat easy-ip
[fw1-policy-nat-rule-easy_ip]enable
Info: The policy is enabled successfully.
3.安全策略放行
[fw1]security-policy
[fw1-policy-security]rule name ftp_policy
[fw1-policy-security-rule-ftp_policy]source-zone trust
[fw1-policy-security-rule-ftp_policy]destination-zone dmz
[fw1-policy-security-rule-ftp_policy]source-address 10.1.1.1 32
[fw1-policy-security-rule-ftp_policy]destination-address 10.1.2.1 32
[fw1-policy-security-rule-ftp_policy]service ftp
[fw1-policy-security-rule-ftp_policy]action permit
[fw1-policy-security-rule-ftp_policy]q
[fw1-policy-security]rule name http_policy
[fw1-policy-security-rule-http_policy]source-zone trust
[fw1-policy-security-rule-http_policy]destination untrust
[fw1-policy-security-rule-http_policy]source-address 10.1.1.1 32
[fw1-policy-security-rule-http_policy]destination-address 202.1.1.10 32
[fw1-policy-security-rule-http_policy]service http
[fw1-policy-security-rule-http_policy]action permit
4.对外提供web服务,nat server
[fw1]nat server FTP protocol tcp global 202.1.1.11 ftp inside 10.1.2.1 ftp
5.对端防火墙的放行,untrust到dmz的放行
[fw1]security-policy
[fw1-policy-security]rule name ftp_policy
[fw1-policy-security-rule-ftp_policy]source-zone untrust
[fw1-policy-security-rule-ftp_policy]source-address 202.1.1.1 32
[fw1-policy-security-rule-ftp_policy]dis this
#
rule name ftp_policy
source-zone trust
source-zone untrust
destination-zone dmz
source-address 10.1.1.1 32
source-address 202.1.1.1 32
destination-address 10.1.2.1 32
service ftp
action permit
#
黑洞路由为了防止环路,那环路是怎么在防火墙上产生的?
因为有NAT地址池,用户在global侧发起访问内网主机,防火墙一般没有做反向NAT inbound地址池,因此找不到NAT会话,没法通过NAT会话找到内网主机IP和对应这个IP的路由,就不能转发报文到内部主机,那防火墙只好通过自己的默认路由往global转发,而globa的路由是是指向路由器的,这样就是一个环路。为了避免global侧初始发起的访问内部主机的报文形成环路,将NAT group的地址做一条黑洞路由,这样globa侧的访问带来的环路就解决了。
NO-PAT 配置黑洞路由
第一种情况:如果地址池地址和出接口不在同一段,会发现环路
解决方案: 必须配置黑洞路由
ip route-static 1.1.1.2 255.255.255.255 NULL0
第二种情况:如果地址池地址和出接口在同一个网段,不会发生环路,但会多一个ARP请求
解决方案:建议配置黑洞路由
NAPT 配置黑洞路由
两种情况:
第一种情况:地址池地址与出接口在不同网段,会形成环路
解决方案:配置路由黑洞
ip route-static 1.1.1.2 255.255.255.255 NULL0
第二种情况:地址池地址与出接口在同一个网段,不会形成环路,但会多一个ARP请求
解决方案:建议配置黑洞路由
easy-ip 不用配置黑洞路由
Nat-server 配置黑洞路由
分情况:
粗矿的NAT-Server:可以匹配会话表。
nat server nat_server 0 global 1.1.1.1 inside 10.1.1.1 -------不需要黑洞路由
精确的NAT-Server :只能匹配tcp:80端口。其他不能匹配。所以有环。
nat server nat_server 0 protocol tcp global 1.1.1.1 80 inside 10.1.1.1 80 ------需要黑洞路由
不同的网段(公网地址与出接口在不同的网段)一定要配置黑洞路由,相同的网段呢(公网地址与出接口在同一网段)建议配置黑洞路由
解决方案:
ip route-static 1.1.1.1 255.255.255.255 NULL0 (不同段的)
ip route-static 202.100.1.200 255.255.255.255 NULL0(同一个段的)
————————————————
版权声明:本小节黑洞路由内容为CSDN博主「曹世宏的博客」的原创文章
————————————————
双向NAT应用场景的通信双方访问对方的时候目的地址都不是真实的地址,而是NAT转换后的地址。 一般来说,内网属于高优先级区域,外网属于低优先级区域。当低优先级安全区域的外网用户访问内部服务器的公网地址时,会将报文的目的地址转换为内部服务器的私网地址,但内部服务器需要配置到该公网地址的路由。
如果要避免配置到公网地址的路由,则可以配置从低优先级安全区域到高优先级安全区域方向的NAT。同一个安全区域内的访问需要作NAT,则需要配置域内NAT功能。
为了简化配置服务器至公网的路由,可在NAT Server基础上,增加源NAT配置。
当配置NAT Server时,服务器需要配置到公网地址的路由才可正常发送回应报文。如果要简化配置,避免配置到公网地址的路由,则可以对外网用户的源IP地址也进行转换,转换后的源IP地址与服务器的私网地址在同一网段。这样内部服务器会缺省将回应报文发给网关,即设备本身,由设备来转发回应报文。
防火墙将用户的请求报文的目的地址转换成FTP服务器的内网IP地址,源地址转换成用户对外公布的IP地址。
防火墙将FTP服务器回应报文的源地址转换成对外公布的地址,目的地址转换成用户的内网IP地址。
若需要地址转换的双方都在同一个安全域内,那么就涉及到了域内NAT的情况。当FTP服务器和用户均在Trust区域,用户访问FTP服务器的对外的公网IP地址,这样用户与FTP服务器之间所有的交互报文都要经过防火墙。这时需要同时配置内部服务器和域内NAT。
域内NAT是指当内网用户和服务器部署在同一安全区域的情况下,仍然希望内网用户只能通过访问服务器的公网地址的场景。在实现域内NAT过程中,既要将访问内部服务器的报文的目的地址由公网地址转换为私网地址,又需要将源地址由私网地址转换为公网地址。
6000
在上面基础上
security-policy
rule name ftp_policy
destination-address 202.1.1.11 32
NAT 双出口实例配置思路:
划分安全区域 ——》 设置域间安全策略 ——》 配置静态路由 ——》 配置源NAT策略 ——》 配置NAT Server策略
1.划分安全区域,配置IP
创建安全区域。 为ISP1和ISP2分别创建一个安全区域。
[USG6000V1]firewall zone name ISP1
[USG6000V1-zone-ISP1]set priority 10
[USG6000V1]firewall zone name ISP2
[USG6000V1-zone-ISP2]set priority 20
配置各接口的IP地址,并将其加入相应的安全区域。
[USG6000V1]firewall zone ISP1
[USG6000V1-zone-ISP1]add int g1/0/1
[USG6000V1-zone-ISP1]q
[USG6000V1]firewall zone ISP2
[USG6000V1-zone-ISP2]add int g1/0/2
[USG6000V1-zone-ISP2]q
[USG6000V1]firewall zone trust
[USG6000V1-zone-trust]add int g1/0/0
[USG6000V1]int g1/0/0
[USG6000V1-GigabitEthernet1/0/0]ip add 10.1.1.254 24
[USG6000V1-GigabitEthernet1/0/0]q
[USG6000V1]int g1/0/1
[USG6000V1-GigabitEthernet1/0/1]ip add 1.1.1.1 24
[USG6000V1-GigabitEthernet1/0/1]int g1/0/2
[USG6000V1-GigabitEthernet1/0/2]ip add 2.2.2.1 24
R1:
interface GigabitEthernet0/0/0
ip address 100.1.1.254 255.255.255.0
#
interface GigabitEthernet0/0/1
ip address 1.1.1.2 255.255.255.0
R2:
interface GigabitEthernet0/0/0
ip address 101.1.1.254 255.255.255.0
#
interface GigabitEthernet0/0/1
ip address 2.2.2.2 255.255.255.0
#
静态路由
[USG6000V1]ip route-static 100.1.1.0 24 1.1.1.2
[USG6000V1]ip route-static 101.1.1.0 24 2.2.2.2
2.fw1配置静态路由,保证路由可达 。
ip route-static 100.1.1.0 255.255.255.01.1.1.2
ip route-static 101.1.1.0 255.255.255.02.2.2.2
3.配置NAT SERVER,创建内网服务器的公网IP与私网IP的映射关系
nat server ispl zone ispl protocol tcp global 1.1.1.10 ftp inside 10.1.1.2 ftp
nat server isp2 zone isp2 protocol tcp global 2.2.2.10 ftp inside 10.1.1.2 ftp
4.放行FTP流量,配置域间安全转发策略。开启ISP1和ISP2区域到内网方向策略。
security-policy
rule name ftp_policy
source-zone ISP1
source-zone ISP2
destination-zone trust
source-address 100.1.1.1 32
source-address 101.1.1.1 32
destination-address 10.1.1.2 32
service ftp
action permit
5.配置内网到外网的nat,配置源NAT策略
nat-policy
rule name easyip1
source-zone trust
destination-zone ISP1
egress-interface GigabitEthernet1/0/1
source-address 10.1.1.1 32
action nat easy-ip
rule name easyip2
source-zone trust
#destination-zone ISP2
egress-interface GigabitEthernet1/0/2
source-address 10.1.1.1 32
action nat easy-ip
6.放行icmp流量
security-policy
rule name icmp_policy
source-zone trust
destination-zone ISP1
destination-zone ISP2
source-address 10.1.1.1 32
destination-address 100.1.1.1 32
destination-address 101.1.1.1 32
service icmp
action permit
#