*** 配置截圖源自F5_V14.1.4版本 ***
一、Standard + SNAT+DNAT 模式
原理:此類型的數據包傳輸在F5上采用的是7層的處理模式,F5維護兩個TCP協議棧
①:Client發起請求,和F5建立三次握手。
②:F5和后端的服務器建立三次握手。
客戶端請求過程如下:
①、客戶端源地址=3.3.3.3(源),將數據包發給F5的VS=1.1.1.5:80(目)
②、F5將客戶端源地址=3.3.3.3,轉換為SNAT地址=1.1.1.100
③、SNAT地址=1.1.1.100(源),將數據包發給服務器RED=1.1.1.1:8080(目)
服務器回報過程如下:
①、服務器RED=1.1.1.1:8080(源), 將數據包發給SNAT地址=1.1.1.100(目)
②、F5將真實源地址1.1.1.1:8080,轉換為VS地址=1.1.1.5:80
③、VS地址=1.1.1.5:80,將數據包發給客戶端地址=3.3.3.3
二、SNAT模式的優缺點
SNAT模式的優勢
- 不用修改網絡和服務器配置
- 便於進行簡單的測試
- 需要直接訪問服務器時,不需要對BIG-IP進行額外的配置
SNAT模式的不足
- 服務器上看到的源地址都是BIG-IP的地址
- 排錯的難度相對較高
- 外部網段可以直接訪問到服務器,降低了安全性
BIG-IP可以將客戶端的源地址寫到HTTP包頭里,以便后台服務器讀取:
- 插入一個 x-forward 字段在HTTP包頭里(RFC 標准格式)
- 客戶通過iRules定義的HTTP包頭字段
三、HTTP源地址插入
1、配置XFF的Pofile
2、在VS中添加XFF的Profile
3、可以通過抓包查看數據包中的客戶端源IP。
抓包命令:~# tcpdump -s0 -nni 0.0:nnn host 10.128.48.147 -vw /var/tmp/text.pcap
備注:10.128.48.147為F5的SNAT地址
四、命令行查看http會話
命令詳解:(tmos)#show sys connection 后面可以加以下參數:
cs-server-addr 指定活動連接的客戶端本地地址。支持子網。【VS-IP 常用】
cs-server-port 指定活動連接的客戶端本地端口。
cs-client-addr 指定活動連接的客戶端遠程地址。支持子網。【Client-IP】
cs-client-port 指定活動連接的客戶端遠程端口。
max-result-limit 指定要顯示的最高匹配結果的最大數量。默認 1000。
protocol 指定用於指定連接的協議(例如:tcp、udp)。
ss-server-addr 指定活動連接的服務器端遠程地址。【Server-IP】
ss-server-port 指定活動連接的服務器端遠程端口。
ss-client-addr 指定活動連接的服務器端本地地址。【SNAT地址】//前提是:做了snat
ss-client-port 指定活動連接的服務器端本地端口。
type 指定用於指定連接的連接類型(例如:any、mirror、self)
常用命令:(tmos)#show sys connection cs-server-addr VS_IP cs-server-port VS_Port
五、配置記錄Log的iRules
Note: 可以看到Pool中成員被訪問的客戶端源IP的log.
iRules如下:
when CLIENT_ACCEPTED {
set vip [IP::local_addr]:[TCP::local_port]
}
when SERVER_CONNECTED {
set client "[IP::client_addr]:[TCP::client_port]"
set node "[IP::server_addr]:[TCP::server_port]"
log local0.info "Client $client -> VIP: $vip -> Node: $node"
}
配置如下:
六、后台查看Log日志
Note: 一般可以看到7天左右的日志,如果要看很早的日志,可以查看QKView(后續會寫如何查看F5的QKView)
~ # cd /var/log
log # ls
log # cat ltm
備注: 在client、VIP、Node后面的%104忽略即可,這是因為這台F5配置了Partition, 104是Route Domain
在web頁面查看日志:
七、服務器端查看源IP
Note:以下配置來自F5文檔,未進行實測。