环境的地址_Citrix ADC转发真实客户端IP地址

本文详细介绍了如何在Citrix ADC中通过HTTP应用溯源、TCP应用溯源(ProxyProtocol和TCP Option)以及Syslog日志记录真实客户端IP地址。内容涵盖了配置方法和不同环境的验证步骤,适用于IPv4和IPv6环境。

3bbf7ac876e81f582b7624bb7f15bea9.gif

日拱一卒无有尽,功不唐捐终入海。

宁可十年不将军,不可一日不拱卒。

Citrix ADC 是一款应用交付和负载均衡解决方案,无论您的 Web、传统和云原生应用托管于何处,均可提供高质量的用户体验。Load Balancing是Citrix ADC的核心功能,客户端连接到Citrix ADC后,Citrix ADC通过Subnet IP(SNIP)作为源地址向后端服务器发起连接。

很多时候,后端服务器都需要记录真实客户端IP地址(溯源)。Citrix ADC可以通过不同的方式,在HTTP/TCP等应用上灵活地帮助用户实现这个需求。

HTTP应用溯源功能

RFC 7239(Forwarded HTTP Extension)标准规定使用HTTP协议的扩展头X-Forwarded-For来表示HTTP请求端真实IP地址。

Citrix负载均衡设备可以在HTTP服务上配置X-Forwarded-For字段并写入真实客户端IP地址。HTTP应用服务器可以通过读取X-Forwarded-For字段记录来溯源。

配置方法

编辑Load Balancing Service,启用Client IP并配置头名称为X-Forwarded-For

e7f644db7c3650f014167618b89e198b.png

IPv4环境验证

客户端:192.168.202.200
VIP服务器:192.168.202.26
SNIP接口:192.168.202.23
服务器:192.168.202.201

76f2425f04b0ad51dbcf7e05a79a7d4f.png

IPv6环境验证

客户端:fd00::192:168:202:200
VIP服务器:fd00::192:168:202:26
SNIP接口:fd00::192:168:202:23
服务器:fd00::192:168:202:201

965819c934962a6718df9c6438d8bc46.png

TCP应用溯源功能(ProxyProtocol)

Proxy Protocol是HAProxy于2010年开发和设计的一个Internet协议,通过为tcp添加一个很小的头信息,来方便的传递客户端信息(协议栈、源IP、目的IP、源端口、目的端口等),在网络情况复杂又需要获取用户真实IP时非常有用。其本质是在三次握手结束后由代理在连接中插入了一个携带了原始连接四元组信息的数据包。

参考链接:https://www.haproxy.org/download/1.8/doc/proxy-protocol.txt

Citrix负载均衡通过rewrite脚本,可以在TCP请求的payload中插入proxy protocol规范信息,真实服务器可以通过proxy protocol规范来读取真实客户端IP地址。

配置方法

创建Rewrite Action

add rewrite action proxyprotocol insert_before "client.tcp.payload(1)" "\"PROXY TCP4 \" + client.ip.src + \" \" + client.ip.dst + \" \" + client.tcp.srcport + \" \" + client.tcp.dstport +\"\r\n\""

add rewrite action proxyprotocolV6 insert_before "client.tcp.payload(1)" "\"PROXY TCP6 \" + client.ipv6.src + \" \" + client.ipv6.dst + \" \" + client.tcp.srcport + \" \" + client.tcp.dstport +\"\r\n\""

创建Rewrite Policy

add rewrite policy tcpsourceip-22 "CLIENT.TCP.DSTPORT.EQ(22)" proxyprotocol

add rewrite policy tcpsourceipV6-22 "CLIENT.TCP.DSTPORT.EQ(22)" proxyprotocolV6

绑定Rewrite Policy到TCP VIP

bind lb vserver 192.168.202.26_tcp_22 -policyName tcpsourceip-22 -priority 100 -gotoPriorityExpression NEXT -type REQUEST

bind lb vserver fd00::192:168:202:26_tcp_22 -policyName tcpsourceipV6-22 -priority 100 -gotoPriorityExpression NEXT -type REQUEST

IPv4环境验证

客户端:192.168.202.200
VIP服务器:192.168.202.26
SNIP接口:192.168.202.23
服务器:192.168.202.201

1fc77e87ecb0267c6aa0a8804821e9d7.png

881a7c017a14fb1503256043da92f52c.png

IPv6环境验证

客户端:fd00::192:168:202:200
VIP服务器:fd00::192:168:202:26
SNIP接口:fd00::192:168:202:23
服务器:fd00::192:168:202:201

be8ed2a8b4204d8ba875c9ae05ee7e62.png

782685280e63eaff8ef3040192860b1f.png

TCP应用溯源功能(TCP Option)

从Citrix ADC 13.0版本开始,支持在TCP Option字段插入客户端IP地址信息。这样的方法是通过在第一个数据包的TCP选项中发送客户端IP地址。如果后端服务器使用TCP选项读取客户端IP地址,则设备将使用TCP配置文件中的TCP选项号。IP地址存于TCP选项号28(不限于28,可在TCP配置上定义)。TCP选项方法在将客户端IP地址传送到后端服务器时包括插入和转发功能。在TCP选项配置中,设备添加了一个TCP选项28,以插入客户端IP地址并将其转发到后端服务器。

69ed2bb59c267db58a42f71d4a4cd319.png

注:如果启用TCP Option插入客户端IP地址,那么连接多路复用(Connection Multiplexing)功能将被禁止。

配置方法

测试版本:Citrix ADC 13.0 47.22

进入System -> Profiles -> TCP Profile,创建一个新的TCP Profile。勾选“Client IP TCP Option”选项并定义Option Number,这里我们选择“28”

efa659a0af64f0830b94dd983264f4a8.png

进入Traffic Management -> Load Balancing -> Services,编辑相关Service。点击Profiles,选择TCP Profile为刚才创建的Profile。

2697140db4c6b8520f5c1d5ede1f3e05.png

IPv4环境验证

客户端:192.168.202.200
VIP服务器:192.168.202.15
SNIP接口:192.168.202.13
服务器:192.168.202.201

70f6b2202609c77d9fa75fe32f0566d0.png

IPv6环境验证

客户端:fd00::192:168:202:200
VIP服务器:fd00::192:168:202:15
SNIP接口:fd00::192:168:202:13
服务器:fd00::192:168:202:201

cab6d9a7cbbc7af5ca56b110d2a8f1d8.png

Citrix负载均衡Syslog溯源

除了可以把真实客户端IP地址转发给后端服务器,Citrix ADC自身还可以通过Syslog方式记录真实客户端IP地址信息。用户也可以通过Syslog发送到收集器并记录溯源。

配置方法

进入System -> Auditing -> Syslog,创建新的Syslog收集器

7a826e4faec8a942527d9206e355ab53.png

创建Syslog Policy

b92c34b94f3602cdb972ab3665c50fd0.png

IPv4环境验证

客户端:192.168.202.200
VIP服务器:192.168.202.26
SNIP接口:192.168.202.23
服务器:192.168.202.201

2020-01-20 15:28:08 Local0.Info 192.168.201.21 2020/01/20:15:20:58 DC-ADC21 0-PPE-0 : TCP CONN_DELINK 1778 0 : Source 192.168.202.200:54120 - Vserver 192.168.202.26:80 - NatIP 192.168.202.23:2500 - Destination 192.168.202.201:80 - Delink Time 2020/01/20:15:20:58 - Total_bytes_send 78 - Total_bytes_recv 355

IPv6环境验证

客户端:fd00::192:168:202:200
VIP服务器:fd00::192:168:202:26
SNIP接口:fd00::192:168:202:23
服务器:fd00::192:168:202:201

2020-01-20 15:39:00 Local0.Info 192.168.201.21 2020/01/20:15:31:50 DC-ADC21 0-PPE-0 : TCP CONN_DELINK 2193 0 : Source fd00::192:168:202:200:41860 - Vserver fd00::192:168:202:26:80 - NatIP fd00::192:168:202:23:2209 - Destination fd00::192:168:202:201:80 - Delink Time 2020/01/20:15:31:50 - Total_bytes_send 86 - Total_bytes_recv 355

NAT64环境验证

客户端:fd00::192:168:202:200
VIP服务器:fd00::192:168:202:26
SNIP接口:192.168.202.23
服务器:192.168.202.201

2020-01-21 13:41:52 Local0.Info 192.168.201.21 2020/01/21:13:41:51 DC-ADC21 0-PPE-0 : TCP CONN_DELINK 5741

更多的文章,请各位小主关注

a85723e94f440b2eb75fbc35a7507965.png

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值