*** 配置截图源自F5_V14.1.4版本 ***

一、Standard + SNAT+DNAT 模式

原理:此类型的数据包传输在F5上采用的是7层的处理模式,F5维护两个TCP协议栈

 ①:Client发起请求,和F5建立三次握手。

②:F5和后端的服务器建立三次握手。

F5查看http会话真实源IP_服务器

 F5查看http会话真实源IP_源地址_02

F5查看http会话真实源IP_客户端_03

客户端请求过程如下:

①、客户端源地址=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

F5查看http会话真实源IP_f5_04

2、在VS中添加XFF的Profile

F5查看http会话真实源IP_服务器_05

3、可以通过抓包查看数据包中的客户端源IP。

抓包命令:~# tcpdump -s0 -nni 0.0:nnn host 10.128.48.147 -vw /var/tmp/text.pcap

备注:10.128.48.147为F5的SNAT地址

F5查看http会话真实源IP_f5_06

 F5查看http会话真实源IP_服务器端_07

 F5查看http会话真实源IP_源地址_08

 F5查看http会话真实源IP_服务器_09

 

四、命令行查看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

 F5查看http会话真实源IP_f5_10

 

五、配置记录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" 

}

配置如下:

F5查看http会话真实源IP_服务器_11

 F5查看http会话真实源IP_服务器_12

 

六、后台查看Log日志

Note: 一般可以看到7天左右的日志,如果要看很早的日志,可以查看QKView(后续会写如何查看F5的QKView)

~ # cd /var/log

log # ls 

log # cat ltm

F5查看http会话真实源IP_服务器端_13

备注: 在client、VIP、Node后面的%104忽略即可,这是因为这台F5配置了Partition, 104是Route Domain

F5查看http会话真实源IP_服务器_14

在web页面查看日志:

F5查看http会话真实源IP_客户端_15

 

七、服务器端查看源IP

Note:以下配置来自F5文档,未进行实测。

F5查看http会话真实源IP_服务器_16

 F5查看http会话真实源IP_源地址_17

 F5查看http会话真实源IP_f5_18


作者:Sea丶丶丶