------outbound Traffic鏈路負載分析----------
1.1 傳統出口ISP選路思路
1.2 注意事項
------outbound Traffic鏈路負載配置----------
2.1 創建outbound Gateway負載池
2.2 Gateway Pool Monitor優化
2.3 創建outbound選路策略iRules
2.4 創建outbound SNAT Pool
2.5 SNAT pool參數優化
2.6 創建outbound SNAT策略iRules
2.7 創建outbound virtual Server
------Inbound Traffic IP過濾配置------------
3.1 創建iRules Data group
3.2 創建iRules
3.3 將iRules調用去Virtual Server
------outbound Traffic鏈路負載分析----------
1.1 傳統出口ISP選路思路:等價路由——>選網關——>使用對應公網IP做SNAT
1.2 注意事項:
《1》掌握運營商線路狀況及IP和網關;
《2》了解希望想要的outbound策略:
a 用戶訪問公網ISP1資源時,選擇ISP1出口
b 用戶訪問公網ISP2資源時,選擇ISP2出口
c 用戶訪問公網非ISP1-ISP2資源時,隨機選擇出口
d 兩條出口鏈路間互為冗余備份
e 是否有郵件服務器或其他需要單獨綁定出口或NAT ip的客戶端
《3》基於目的地址做鏈路選擇的話,則前提需要有全球Geolocation地址庫。
a F5與第三方地址庫 neustar(Quova)合作,定期更新地址庫信息,需要手動進行地址庫更新;
b BIG-IP設備不支持自動更新庫,需要到官網登錄賬號后,選擇BIG-IP后下載;
c 演示在LTM如何更新Geolocation地址庫及查詢:
(1)將官網下載的ip-geolocation-v2-2.0.0-20201005.468.0.zip傳入LTM內(這里以/tmp目錄為例)
(2)解壓文件:#unzip ip-geolocation-v2-2.0.0-20201005.468.0.zip
(3)安裝rpm包以便更新:#geoip_update_date -f + 解壓后的三個文件名,輪流安裝;
V12版本后安裝后的目錄在/shared/GeoIP/v2,V12版本前的在/shared/GeoIP
(4)查詢IP:
#cd
#cd /share/Geoip/v2,目錄下 #geoip_lookup -f /shared/GeoIP/v2/F5GeoIPOrg.dat +要查詢的IP
[root@DC2-F5-LTM:Active:Standalone] v2 # geoip_lookup -f /shared/GeoIP/v2/F5GeoIPOrg.dat 114.114.114.114
Will attempt to lookup ip '114.114.114.114'
opening database in /shared/GeoIP/v2/F5GeoIPOrg.dat
size of geoip database = 205901316, segments = 13511842, version = Copyright (c) F5 Networks Inc, All Rights Reserved GEOIP2 v1, 20201005
geoip_seek = 000da0be
geoip record ip = 114.114.114.114
name = nanjing xinfeng information technologies inc.
Scope = 16
[root@DC2-F5-LTM:Active:Standalone] v2 #

------outbound Traffic鏈路負載配置----------
(DC2-F5-DNS)
2.1 創建outbound Gateway負載池
”Local traffic“-”POOL"-“POOL list”-“news pool”
name填寫"ISP1P2S "
active選擇“gateway_icmp"
prioity Group Activation選擇“less than”
New Members選擇“New Node”
Node name填寫“ISP1-GW”
Address填寫“62.129.0.1”
Service Port選擇“ALL Services”
Prioity填寫“10”,點擊“Add”
New Members選擇“New Node”
Node name填寫“ISP2-GW”
Address填寫“129.62.0.1”
Service Port選擇“ALL Services”
Prioity填寫“5”,點擊“Add"最后點擊Finish完成
name填寫"ISP2P1S "
active選擇“gateway_icmp"
prioity Group Activation選擇“less than”
New Members選擇“New Node”
Node name填寫“ISP1-GW”
Address填寫“62.129.0.1”
Service Port選擇“ALL Services”
Prioity填寫“5”,點擊“Add”
New Members選擇“New Node”
Node name填寫“ISP2-GW”
Address填寫“129.62.0.1”
Service Port選擇“ALL Services”
Prioity填寫“10”,點擊“Add"最后點擊Finish完成
name填寫"non-ISP1-ISP2"
active選擇“gateway_icmp"
New Members選擇“New Node”
Node name填寫“ISP1-GW”
Address填寫“62.129.0.1”
Service Port選擇“ALL Services”,點擊“Add”
New Members選擇“New Node”
Node name填寫“ISP2-GW”
Address填寫“129.62.0.1”
Service Port選擇“ALL Services”,點擊“Add"最后點擊Finish完成
2.2 Gateway Pool Monitor優化
transparent icmp monitors:傳統ping測防火牆IP來檢測防火牆狀態,而透明icmp檢測通過ping測遠程IP(經過防火牆)來間接檢驗防火牆功能是否正常運行,而避免出現防火牆上聯出問題而防火牆IP正常的情況下LTM不切換;
配置:DC2-F5-DNS上
”Local traffic“-“Monitors”-“New Monitors”
name填寫“transparent-icmp”
Type選擇“Gateway icmp”
transparent選擇“Yes”
Alias Address填寫監控的遠程IP”8.8.8.8“
最后點擊Finish完成
”Local traffic“-“Pools”-“Pool list ”中,針對《1》新增三個”ISP1P2S“、”ISP2P1S“、"non-ISP1-ISP2"中的其中2個”ISP1P2S“、”ISP2P1S“操作如下:
點擊進去,查找configurations中Health Monitors子項內,在原有的《1》“Gateway_icmp"新增加“transparent_icmp”
2.3 創建outbound選路策略iRules
使用iRules將去往63.130開頭的流量走ISP1;去往130.63開頭的流量走向IPS2。
針對本次拓撲用不到全球Geolocation地址庫,對現有拓撲規划的外網地址分配,使用iRules的Date Group功能;
配置:DC2-F5-DNS上
”Local traffic“-“Date Group”-“Add“
name填寫“ISP1”
Type選擇“Address”
Address Records中Address填寫“63.130.0.0/24”,並點擊“Add”及“Finishi“完成
name填寫“ISP2”
Type選擇“Address”
Address Records中Address填寫“130.63.0.0/24”,並點擊“Add”及“Finishi“完成
“Local Traffic”-“iRule List”-“New iRule”
name填寫“LB-GW”
when CLIENT_ACCEPTED { if{[class match [IP::local_addr] equals ISP1] }{ pool ISP1P2S} elseif {class match [IP::local_addr] equals ISP2] }{ pool ISP2P1S} else {pool not-isp1-isp2} }
最后點擊Finish完成
2.4 創建outbound SNAT Pool
”Local traffic“-”Address Translation"-“SNAT POOL list”-"Add"
name填寫"ISP1-62-129-0-6"
Member list中IP address填寫62.129.0.6,點擊“Add”,點擊Repeat下一個;
name填寫"ISP2-129-62-0-6"
Member list中IP address填寫129.62.0.6,點擊“Add”,最后點擊Finish完成
2.5 SNAT pool參數優化
插入知識點:ISP線路流量切換因素-SNAT表項存活時間
F5雙ISP時,當流量走ISP時,發生端口斷開,但會話將不會自動切換到ISP2上,而是等待SNAT表項存活時間結束后
SNAT表項存活時間。
SNAT表項存活時間定義是根據協議來定,不同的協議存活時間也不同,默認為:
udp and ip層包 300s
TCP 136years
配置:
”Local traffic“-”Address Translation"-“SNAT traslation list”-點擊剛才新創建的2個snat pool池的IP(62.129.0.6及129.62.0.6):
”UDP idle timeout“選擇“specify”,120S(針對本次實驗)
IP idle timeout選擇“specify”,120S(針對本次實驗)
2.6 創建outbound SNAT策略iRules
name填寫“SNAT”
when LB_SELECTED { if { [IP::addr [LB::server addr] equals 62.129.0.1 ] } { log local0."Destion ip:[clientside {IP::local_addr}]" log local0."Source ip:[clientside {IP::remote_addr}]" log local0."Gw ip:[LB::server addr]" snatpool ISP1-62-129-0-6 } elseif {[Ip::addr [LB::server addr] equals 129.62.0.1] } { snatpool ISP2 129-62-0-6 } else { snat Automap } }
最后點擊Finish完成
另外一通過查詢全球庫Geo(可選):這里不演示
2.7 創建outbound virtual Server
先到DC2-F5-DNS上刪除掉原來給LAMP做的主動訪問internet的公網SNAT list(62.129.0.5、129.62.0.5),以免有沖突。
”Local traffic“-”virtual Server"-"Add"
name填寫"Inter2Out"
Type選擇“Performance(Layer4)”
sourece address填寫“172.16.20.5”
Destion Address/Mask填寫“0.0.0.0/0”
Service port選擇“*ALL ports”
protocol選擇“ALL Protocols”
VLAN and Tunnel Traffic選擇“Enable on”
VLANS and Tunnels選擇LTM的上聯口untag的vlan
Source Address Translation選擇“None”,因為后期要通過iRulse來做SNAT
*(非常關鍵)拉上去configurations選擇“Advanced(高級)”
Addres translation 不勾;
Port translation 不勾。
(不勾是因為當server訪問外網時,目的地址無論在哪個環節都不變;)
(Performance(Layer4)默認是打開的,而IP Forwarding默認是關閉的)
iRules先掛LB-GW,再掛SNAT
最后點擊Finish完成
驗證環節:
《1》首選保證10.1.20.0/24的XP1上能ping通ISP1-XP1和ISP2-XP1;
《2》DC2-F5-DNS上查看SNAT表項:tmsh show sys connection virtual-server Inter2Out,找到《1》步驟中對icmp包轉換的條目;
《3》DC2-F5-DNS上查看log日志:tail /var/log/ltm 查看在步驟《6》中寫的IRules記錄到系統的日志的記錄;
《4》可調整NAT表項存活時間,或者手動清除NAT表項:tmsh delete sys connection virtual-server Inter2Out
------Inbound Traffic IP過濾配置------------
*需要提前DC2-F5-LTM安裝geoip庫
原理:利用geoip庫,解析到ISP1 63.130為美國地區,行為記錄並丟棄;而130.63為加拿大地區,則不影響訪問
3.1 創建iRules Data group
“Local Traffic”-"iRules"-"Add"
name填寫"US-IP"
value填寫“US”
點擊"Add",最后Update完成。
3.2 創建iRules
“Local Traffic”-"iRules List"-"Add"
nane填寫“Block-USIP”
when CLIENT_ACCEPTED { set ipaddr [IP::client_addr] set clinentip [whereis $ipaddr country] if { [class match $clinentip equals US-IP] } { log local0. "Attacker IP [IP::client_addr]" ; drop } }
點擊Finish完成。
參考文檔:https://support.f5.com/csp/article/K43383890
3.3 將iRules調用去Virtual Server
“Local Traffic”-"Virtual Servers"-"Virtual Server List"
選擇“http-server2”(172.16.20.4)-“Resources”-“iRules”-加上“Block-USIP”
驗證環節:
1.ISP1主機63.130.0.100主機訪問DC2 LAMP失敗,ISP2主機130.63.0.100成功;
2.LTM的命令行下tail /var/log/ltm 發現有"Attacker IP”的日志;
