華為防火墻中所有NAT技術解析
nat分類
根據源地址分類
根據目的地址
Inbound/outbound
靜態動態
分類 | 轉換內容 | 是否轉換端口 | 特點 | |
源NAT | 地址池方式 | 源IP地址 | 可選 | 采用地址池中的公網地址為私網用戶進行地址轉換,適用於大量私網用戶訪問Internet的場景。 |
出接口地址方式(Easy IP) | 源IP地址 | 是 | 內網主機直接借用公網接口的IP地址訪問Internet,特別適用於公網接口IP地址是動態獲取的情況。 | |
服務器映射 | 靜態映射(NAT Server) | 目的IP地址 | 可選 | 公網地址和私網地址一對一進行映射,適用於公網用戶訪問私網內部服務器的場景。 |
服務器負載均衡 | 目的IP地址 | 可選 | 適用於多個內網服務器提供相同的服務,對外虛擬成一個服務器,對用戶的訪問流量進行負載均衡的場景。 | |
目的NAT | 目的IP地址 | 可選 | 主要應用在轉換手機用戶WAP網關地址,使手機用戶可以正常上網的場景。 |
源NAT類型 | 私網IP和公網IP的數量對應 | 是否轉換端口 | 是否生成server-map | 是否有黑洞路由 |
NAT No-PAT | 一對一 | 否 | 是 | 是 |
NAPT | 多對一 多對多 | 是 | 否 | 是 |
出接口地址方式(Easy-IP) | 多對一 | 是 | 否 | 否 |
Smart NAT (僅高端防火墻USG9000 系列支持) | 一對一 (預留IP做多對一轉換) | 否 (預留IP做端口 轉換) | 是 (僅NAT NO-PAT) | 是 |
三元組NAT (僅高端防火墻USG9000 系列支持) | 多對一 多對多 | 是 | 是 | 否 |
easy-ip中配置(USG6000)時:源地址可以不寫,但是目的地址必須寫,因為easy-ip轉換根據出接口尋找
nat-policy
rule name easy_ip
source-zone dmz
destination-zone untrust
action nat easy-ip
NAPT --- NAT NO-PAT
配置基於域間:(USG5500)
定義地址池:
nat address-group 1 20.1.1.10 20.1.1.20
配置NAT策略:
nat-policy interzone huawei ahang inbound
policy 1
action source-nat (no-pat)
policy source 10.1.1.0 0.0.0.255
address-group 1
dis cur conf nat-policy-interzone
NAT-server(USG5500)
基於目的的IP轉換
nat server 0 protocol tcp global 20.1.1.254 3333 inside 10.1.1.1 telnet
nat server 1 protocol icmp global interface GigabitEthernet0/0/2 inside 10.1.1.1
查看NAT表項----一對一靜態綁定中會出現server-map,無需動態觸發,靜態生成,動態的會產生大量的map表,占用大量資源
------三元組,smart-nat也存在server-map表
Display Firewall server-map
Current Total Server-map : 2
Type: No-Pat Reverse, ANY -> 10.1.1.254[10.1.2.1], Zone:---
Protocol: ANY, TTL:---, Left-Time:---, Pool: 0, Section: 0
Vpn: public
Type: No-Pat, 10.1.2.1[10.1.1.254] -> ANY, Zone:---
Protocol: ANY, TTL:360, Left-Time:357, Pool: 0, Section: 0
Vpn: public
questions:NAT Server 中為了讓公網用戶訪問私網的服務器,那麽配置安全策略時目的地址是私網地址,還是轉換的公網地址?
公網用戶通過20.1.1.254:3333訪問服務器時,防火墻收到報文首包後查看目的地址和端口匹配到server-map,然後轉換為私網的
10.1.1.1:23 ,然後根據目的私網地址查路由表,從出接口trust出去,從入接口UNtrust進入。
因此安全策略中,destination-address 為私網的IP地址20.1.1.1,不是公網的
nat server C 0 zone untrust protocol tcp global 10.1.2.250 ftp inside 10.1.1.1 ftp
一條NAT server會生成兩條server-map,一條用於外網訪問內網時可針對特定端口,一條用於內網主動去往外網
[FW]dis firewall server-map
Current Total Server-map : 2
Type: Nat Server, ANY -> 10.1.2.250:21[10.1.1.1:21], Zone: untrust , protocol:tcp
Vpn: public -> public
Type: Nat Server Reverse, 10.1.1.1[10.1.2.250] -> ANY, Zone: untrust , protocol:tcp
Vpn: public -> public, counter: 1
但是存在幾點問題:
1.同一區域不同出接口不能同時配
[FW]nat server D zone untrust protocol tcp global 10.1.3.250 ftp inside 10.1.1.1 ftp
Error: This inside address has been used
因為如果多個出口會生成多個Reverse,但是10.1.1.1映射成哪一個會出現混亂,故不能同時配
但是可以配置為
[FW]nat server D zone untrust protocol tcp global 10.1.3.250 ftp inside 10.1.1.1 ftp no-reverse
2.不同區域可以同時配
[FW]nat server D zone untrust11 protocol tcp global 10.1.3.250 ftp inside 10.1.1.1 ftp
3.no-reverse作用:
不會生成一條反向的NAT條目
4.配置源進源出,保證來回的路徑一致。
多出口不同ISP時,做了地址轉換後,回包時防火墻上存在多個默認路由,可能會導致回包路徑不一致
接口下配置:USG9500---redirect-reverse next-hop 1.1.1.254(下一跳地址)
USG6000-----gateway1.1.1.254 redirect-reverse enable
USG5500/2000---reverse-route nexthop 1.1.1.254
5.NAT-ALG(Application level gateway)
通過在全局,區域下開啟ASPF (detect ftp)實現
Firewalls session table中存在控制連接,數據傳輸時生成server-map放行ftp數據
6.當nat-server和easy-ip同時配置時,且轉換同一個地址時,nat-server會生效,因為nat-server生成server-map表項
根據策略順序先查server-map表。
雙向轉換
NAT-server+ NAT inbound
第一步:NAT-server轉換,當外部用戶訪問服務器時,將服務器私網地址和公網映射,此時外部用戶直接訪問公網地址
20.1.1.1--->20.1.1.254 ==等價== 20.1.1.1---->10.1.1.1
此時 SIP:20.1.1.1 DIP:10.1.1.1
第二步:在外部訪問內部域間做NAT策略,使SIP公網IP變為私網IP
nat address-group 0 10.1.1.254 10.1.1.254
nat-policy interzone trust untrust inbound
policy 1
action source-nat
policy destination 10.1.1.1 0
address-group 0
此時 SIP:10.1.1.254 DIP:10.1.1.1
好處:服務器不用找網關了,同一網段的
不用學到公網地址
當網關變了,不用重新配置(當有數百臺服務器時)
NAT-server + 域內NAT
端口復用技術
Smart-NAT
只有USG9500上才有
同時配置基於接口的和基於地址池的
正常用接口的,接口的端口不夠用時用地址池的
三元組NAT
只有USG9500上才有
對於P2P業務中,對外訪問的地址和端口會保持一致(如100.1.1.1---3000),支持外網其他主機以目的地址和端口(100.1.1.1---3000)訪問內網時,由UNtrust到trust為放行。
會存在server-map用來控制連接
服務器負載均衡SLB(server load balance)
將多個提供相同服務的服務器虛擬成一個服務器,在防火墻上配置使三個私有IP共用一個公有的IP地址
然後當外部訪問時,根據防火墻上的負載方式:1.源hash負載 2.簡單輪詢 3.加權輪詢 走流量到服務器
不能與NAT server共同提供服務
配置註意:
USG6000
<FW>dis cur conf slb
#
slb
group 1 A
metric roundrobin
health-check type tcp port 23
rserver 0 rip 10.1.2.1 port 23
rserver 1 rip 10.1.3.1
vserver 0 A
vip 0 10.1.1.10
protocol any
group A
<FW>dis security-policy rule 2
(2564 times matched)
rule name 2
source-zone local(當配置了health-check後,需要匹配出源zone為local,檢查local去往trust的包)
source-zone untrust
destination-zone trust
action permit
NAT黑洞路由問題
場景一:A------FW----B 源NAT地址轉換 (10.1.1.0/24----FW-----10.1.2.0/24)
[FW-address-group-a]d thi
#
nat address-group a 0
mode pat
route enable
section 0 10.1.4.1 10.1.4.10
[FW-policy-nat]d thi
#
nat-policy
rule name A
source-zone trust
destination-zone untrust
action nat address-group a
此時A訪問B正常轉換為虛地址轉發,但是當B訪問虛地址時,此時虛地址時不存在的,FW為出口所以存在出口網關默認路由指向B
B的去往10.1.4.0/24走FW,形成了環路。
解決方法:
1.寫條去往虛地址的路由指向NULL0
2.在地址池中有一條命令: route enable 開啟了之後效果跟1是相同的
場景二:A----FW---B 目的地址nat-server轉換DMZ---FW---UNtrust
如果寫nat-server時只是針對某些端口做了映射,當B去訪問其他的端口時,也會出現環路
如果nat-server中針對一個地址的直接映射,包含了所有的端口則不會出現默認路由
解決方法:
寫條去往虛地址的路由指向NULL0
寫條虛地址指向NULL0還有個好處,當內部運行IGP時,可以將虛地址引入IGP中
本文出自 “hcietea” 博客,請務必保留此出處http://hcietea.blog.51cto.com/9642637/1975828
華為防火墻中所有NAT技術解析