UAG 及负载均衡配置概述

UAG 全称 Unified Access Gateway,在 Horizon 环境中可以放置在网络边界,隔离来自互联网的 Client (或其他网络区域)和托管在内网的 Horizon 桌面。一个典型的部署架构如下图所示:

🍛6x05Horizon系列:UAG 部署及负载均衡配置-1 - 图1

UAG 支持多网卡部署,因此可以很好地适应各种网络拓扑,通常来说 UAG 会为 Horizon 提供两项功能:

  • 认证代理 :用户使用 VDI 时,会将认证请求发送给 UAG ,UAG 将请求转发给后端的 Connection Server 进行处理。

  • VDI 桌面流量的代理(安全网关):和 Connection Server 的安全网关功能类似,开启后用户桌面数据将通过 UAG 集中转发。

一般在生产环境下需要部署多台 UAG 来提供高可用,UAG 自身也支持为多台设备配置浮动 IP 来提供简单的 HA 功能。第一台开启 HA 功能的 UAG 会成为主节点,浮动 IP 托管在主节点上,所有到 UAG 的访问均会先发给主 UAG 节点,主 UAG 节点再做请求的分发。当主节点故障后备节点会进行接管。

以 Blast 协议为例,使用 UAG 原生的高可用功能时,访问流量路径如下图所示:

🍛6x05Horizon系列:UAG 部署及负载均衡配置-1 - 图2

使用 NSX ALB 后可以替换 UAG 内置的高可用模块,实现认证流量以及桌面流量的负载均衡,实现更好地访问控制和访问流量可视化。

针对 UAG 的负载均衡,有三种配置方式:

  • 为 UAG 认证流量(及 USB 重定向等流量)配置 L7 负载均衡,为虚拟桌面流量配置 L4 负载均衡。此模式下所有流量均经过 LB,对外只需要一个 VIP 和一个域名;
  • 为 UAG 配置 L4 负载均衡,认证流量以及虚拟桌面流量均通过 LB 进行负载,再转发到后端的 UAG。此模式下所有流量均经过 LB,对外只需要一个 VIP 和一个域名。这种模式下不会做 SSL 卸载,所以开销相比第一种模式小,但可视化功能也相应减少;

  • 为 UAG 配置 N+1 负载均衡,仅为 UAG 认证流量配置 L7 负载均衡,桌面流量不经过 LB,直接发送给相应的 UAG。此模式下每个 UAG 必须有独立的互联网 IP+端口/域名。(注:N 表示 UAG 数量,1 表示一个负载均衡器 VIP)

本文将会演示第一种配置方式。

注意事项

Horizon 下要求,单个用户进行认证的流量,以及通过 CS/UAG 安全网关代理的流量必须转发给相同的 UAG/CS 节点,否则用户访问桌面失败。在后续的负载均衡器配置过程中,我们将会有一些配置来保证用户认证流量和桌面数据始终由相同的 CS/UAG 节点处理。

UAG 部署

下载非 FIPS 的 UAG 介质,将其通过 vCenter 导入集群中:

🍛6x05Horizon系列:UAG 部署及负载均衡配置-1 - 图3

此处为了方便使用单网卡设计,管理和面向最终用户使用同样的网卡,生产环境下可以使用多个网卡:

🍛6x05Horizon系列:UAG 部署及负载均衡配置-1 - 图4

部署完成后开机,通过 https://:9443 访问 UAG 的管理界面,使用部署 ova 时填写的密码登陆:

🍛6x05Horizon系列:UAG 部署及负载均衡配置-1 - 图5

UAG 基础配置

点击右侧手动配置下的“选择”:

🍛6x05Horizon系列:UAG 部署及负载均衡配置-1 - 图6

点击高级设置下的系统配置,修改uag名称:

🍛6x05Horizon系列:UAG 部署及负载均衡配置-1 - 图7

🍛6x05Horizon系列:UAG 部署及负载均衡配置-1 - 图8

🍛6x05Horizon系列:UAG 部署及负载均衡配置-1 - 图9

点击“TLS 服务器证书设置”,为 UAG 添加企业证书,此处和 Connection Server 使用同样的证书(证书创建参见第一篇内容):

🍛6x05Horizon系列:UAG 部署及负载均衡配置-1 - 图10

配置 Edge 服务

点击常规设置中的“Edge 服务设置”,编辑 Horizon 设置:

🍛6x05Horizon系列:UAG 部署及负载均衡配置-1 - 图11

连接服务器 URL 中填写 NSX ALB 负载后的 Connection server 的域名;开启“启用 PCOIP”、“启用 Blast”、“启用 UDP 隧道服务器”和“启用隧道”。

如果已经为 UAG 配置了 443/4172/8443 端口的 L4 的负载,则所有外部 URL 都可以写负载后的 VIP 和域名,否则请填写相应 UAG 节点的 IP 和域名。(本文填写的是 UAG 负载均衡后的域名)

🍛6x05Horizon系列:UAG 部署及负载均衡配置-1 - 图12

注意:在填写 Blast 和隧道外部 URL 时,建议使用域名,如果证书中不包含 IP,则用户在通过网页访问时会出现证书告警。

🍛6x05Horizon系列:UAG 部署及负载均衡配置-1 - 图13

依照前三个章节的内容部署其他 UAG 节点。

(可选)配置 Blast 协议复用 443 端口

UAG 支持让 Blast 协议复用 443 端口,在配置 UAG 时,将“Blast 外部 URL”中的端口改为 443 即可。

🍛6x05Horizon系列:UAG 部署及负载均衡配置-1 - 图14

(可选)将 UAG 节点添加到 Connection Server 统一监控

额外地,可以将 UAG 注册到 Connection server 统一监控,在注册时只需填写 UAG 名称即可,版本和 IP 地址会被自动识别。

🍛6x05Horizon系列:UAG 部署及负载均衡配置-1 - 图15

🍛6x05Horizon系列:UAG 部署及负载均衡配置-1 - 图16

🍛6x05Horizon系列:UAG 部署及负载均衡配置-1 - 图17

为 UAG 配置负载均衡-方式 1

配置详情及流量路径如下图所示:

🍛6x05Horizon系列:UAG 部署及负载均衡配置-1 - 图18

1. 前提配置

与 CS 的配置类似,Horizon 环境中配置 UAG 后,需要将所有 UAG 域名添加为信任。

在 Connection Server 的宿主机找到此目录“VMware\VMware View\Server\sslgateway\conf”,创建或编辑名为 locked.properties 的文件:

🍛6x05Horizon系列:UAG 部署及负载均衡配置-1 - 图19

修改后内容如下,保存并重启 Connection Server 生效。

🍛6x05Horizon系列:UAG 部署及负载均衡配置-1 - 图20

2. 将 UAG 添加到 IP 组

第一种配置方式中需要创建两个虚拟服务,后端使用相同的 UAG server 作为 pool,为了保证两个虚拟服务的 pool 成员始终一致,可以借助 IP 组。

🍛6x05Horizon系列:UAG 部署及负载均衡配置-1 - 图21

🍛6x05Horizon系列:UAG 部署及负载均衡配置-1 - 图22

3. 为 UAG 创建 SSL 配置文件

此处可以复用第三篇中 Connection Server 的 SSL 配置文件。

4. 创建自定义健康检查策略

此处可以复用第三篇中 Connection Server 的健康检查策略。

5. 创建 UAG L7 池

在“应用程序>池”中,创建新的池:

默认服务器端口填写 443,负载均衡算法使用“Consistent Hash>Source IP Address”,复用 CS 的主动健康检查配置:

🍛6x05Horizon系列:UAG 部署及负载均衡配置-1 - 图23

复用 CS 的 SSL 配置文件:

🍛6x05Horizon系列:UAG 部署及负载均衡配置-1 - 图24

服务器成员使用之前创建的 IP 组:

🍛6x05Horizon系列:UAG 部署及负载均衡配置-1 - 图25

6. 创建 UAG L4 池

在“应用程序>池”中,创建新的池:

默认服务器端口填写 443,负载均衡算法使用“Consistent Hash>Source IP Address”,复用 CS 的主动健康检查配置:

🍛6x05Horizon系列:UAG 部署及负载均衡配置-1 - 图26

此池不需要通过 SSL 和后端服务器通信:

🍛6x05Horizon系列:UAG 部署及负载均衡配置-1 - 图27

服务器成员使用之前创建的 IP 组:

🍛6x05Horizon系列:UAG 部署及负载均衡配置-1 - 图28

高级选项中需要勾选“禁用端口转换”:

🍛6x05Horizon系列:UAG 部署及负载均衡配置-1 - 图29

7. 为 UAG 创建服务器证书

此处使用的是 *.halfcoffee.com 证书,可以和 Connection server 复用,因此不再重复创建证书(详见第三篇文章)。

8. 为 UAG 创建 L7 虚拟服务

在“应用程序>虚拟服务”中使用高级设置创建新的服务:

指定 VIP,使用系统默认的 System-Secure-HTTP-VDI 应用程序配置文件:

🍛6x05Horizon系列:UAG 部署及负载均衡配置-1 - 图30

服务端口配置 80 和 443(SSL),池选择之前创建的 UAG-L7-Pool,复用 Connection server 的 SSL 配置文件和证书:

🍛6x05Horizon系列:UAG 部署及负载均衡配置-1 - 图31

其他配置保持不变,点击保存。

9. 为 UAG 创建 L4 虚拟服务

在“应用程序>虚拟服务”中使用高级设置创建新的服务:

在 VIP 地址菜单中点击“切换到高级”:

🍛6x05Horizon系列:UAG 部署及负载均衡配置-1 - 图32

勾选上个章节创建的 UAG 服务,应用程序配置文件选择“System-L4-Application”:

🍛6x05Horizon系列:UAG 部署及负载均衡配置-1 - 图33

在服务端口菜单中点击“切换到高级”:

🍛6x05Horizon系列:UAG 部署及负载均衡配置-1 - 图34

分别添加下列端口:
UDP 443,TCP/UDP 8443 和 TCP/UDP 4172。池选择之前创建的 UAG-L4-Pool:

🍛6x05Horizon系列:UAG 部署及负载均衡配置-1 - 图35

🍛6x05Horizon系列:UAG 部署及负载均衡配置-1 - 图36

其他配置保持不变,点击保存。

10. 访问测试

通过网页访问 UAG 负载均衡后的域名,用户可以正常登陆:

🍛6x05Horizon系列:UAG 部署及负载均衡配置-1 - 图37

虚拟桌面访问正常:

🍛6x05Horizon系列:UAG 部署及负载均衡配置-1 - 图38

(可选)为 UAG 配置 WAF

在为 UAG 启用 WAF 功能时,需要先将 /ice 起始的路径添加到白名单,并配置下列 Pre-CRS rules:

SecRule REQUEST_METHOD “@streq POST” “phase:1,id:4099822,t:none,nolog,pass,chain”SecRule REQUEST_URI “@streq /broker/xml” “t:none,ctl:requestBodyProcessor=XML”

注:

第一条 rule 定义请求为 POST 时,执行 chain 动作,将当前规则与下一条规则链起来。

第二条 rule 定义请求路径包含 /broker/xml 时,进行 XML 解析。

@streq :表示进行字符串比较,如果匹配到字符串则返回 true,上述 Rule 定义匹配到访问路径包含 /broker/xml 时,进行 ctl 操作 。
ctl:requestBodyProcessor=XML :匹配到相关的会话时,将请求解析为 XML。

1. 新建 UAG WAF profile

在“模板>WAF”中,创建新的 WAF 配置文件:

🍛6x05Horizon系列:UAG 部署及负载均衡配置-1 - 图39

填写 Profile 名称,其他保持默认不变:

🍛6x05Horizon系列:UAG 部署及负载均衡配置-1 - 图40

2. 创建 UAG WAF 策略

在“模板>WAF”中,创建新的 WAF 策略:

🍛6x05Horizon系列:UAG 部署及负载均衡配置-1 - 图41

设置 Policy 名称,关联上一步创建的 UAG WAF 配置文件,策略模式根据需求选择检测或者实施:

🍛6x05Horizon系列:UAG 部署及负载均衡配置-1 - 图42

在允许列表中添加新的规则:

🍛6x05Horizon系列:UAG 部署及负载均衡配置-1 - 图43

匹配条件为“开头为 /ice”,操作为继续:

🍛6x05Horizon系列:UAG 部署及负载均衡配置-1 - 图44

🍛6x05Horizon系列:UAG 部署及负载均衡配置-1 - 图45

接着在特征中创建组:

🍛6x05Horizon系列:UAG 部署及负载均衡配置-1 - 图46

🍛6x05Horizon系列:UAG 部署及负载均衡配置-1 - 图47

创建完成后在此组下创建规则:

🍛6x05Horizon系列:UAG 部署及负载均衡配置-1 - 图48

在规则框中粘贴下列内容:

SecRule REQUEST_METHOD “@streq POST” “phase:1,id:4099822,t:none,nolog,pass,chain”SecRule REQUEST_URI “@streq /broker/xml” “t:none,ctl:requestBodyProcessor=XML”

🍛6x05Horizon系列:UAG 部署及负载均衡配置-1 - 图49
🍛6x05Horizon系列:UAG 部署及负载均衡配置-1 - 图50

最后,找到 ID 为 932105 的规则,将其禁用:

🍛6x05Horizon系列:UAG 部署及负载均衡配置-1 - 图51

3. 为 UAG VS 关联 WAF 策略

编辑之前创建的 UAG L7 服务,在“WAF 策略”中勾选刚才创建的 WAF Policy:

🍛6x05Horizon系列:UAG 部署及负载均衡配置-1 - 图52

4. 访问测试

通过网页访问 UAG 负载均衡后的域名,用户可以正常登陆:

🍛6x05Horizon系列:UAG 部署及负载均衡配置-1 - 图53

可以看到 waf 的匹配事件:

🍛6x05Horizon系列:UAG 部署及负载均衡配置-1 - 图54