

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 与 Amazon DCV Connection Gateway 集成
<a name="configure-gateway-integration"></a>

[Amazon DCV Connection Gateway](https://docs.aws.amazon.com/dcv/latest/gw-admin/what-is-gw.html) 是一个可安装的软件包，使用户能够通过到 LAN 或 VPC 的单个接入点访问一组 Amazon DCV 服务器。

 如果您的基础设施包括可通过 Amazon DCV Connection Gateway 访问的 Amazon DCV 服务器，您可以配置 Session Manager 以集成 Amazon DCV Connection Gateway。通过执行下一节中概述的步骤，Broker 将充当 Connection Gateway 的[会话解析器](https://docs.aws.amazon.com/dcv/latest/gw-admin/session-resolver.html)。换句话说，Broker 将公开一个额外的 HTTP 终端节点。Connection Gateway 对该端点进行 API 调用，以检索将 Amazon DCV 连接路由到 Broker 选择的主机所需的信息。

**Topics**
+ [将 Session Manager Broker 设置为 Amazon DCV Connection Gateway 的会话解析器](#set-up-sm-broker)
+ [可选 - 启用 TLS 客户端身份验证](#enable-tls-client-auth)
+ [Amazon DCV 服务器 - DNS 映射参考](dcv-server-dns-mapping.md)

## 将 Session Manager Broker 设置为 Amazon DCV Connection Gateway 的会话解析器
<a name="set-up-sm-broker"></a>

**Session Manager Broker 端**

1. 使用常用的文本编辑器打开 `/etc/dcv-session-manager-broker/session-manager-broker.properties` 并应用以下更改：
   + Set `enable-gateway = true`
   + 将 `gateway-to-broker-connector-https-port` 设置为空闲 TCP 端口（默认为 8447）
   + 将 `gateway-to-broker-connector-bind-host` 设置为 Broker 为 Amazon DCV Connection Gateway 连接绑定的主机的 IP 地址（默认值为 0.0.0.0） 

1. 然后，运行以下命令以停止并重新启动 Broker：

   ```
   sudo systemctl stop dcv-session-manager-broker
   ```

   ```
   sudo systemctl start dcv-session-manager-broker
   ```

1. 检索 Broker 的自签名证书副本，并将其放置在您的用户目录中。

   ```
   sudo cp /var/lib/dcvsmbroker/security/dcvsmbroker_ca.pem $HOME
   ```

   在下一步中安装 Amazon DCV Connection Gateway 时，您需要使用该证书。

**Amazon DCV Connection Gateway 端**
+ 请按照 Amazon DCV Connection Gateway 文档中的相应[小节](https://docs.aws.amazon.com/dcv/latest/gw-admin/setting-up-configuring.html#configuring-resolver)进行操作。

  由于 Amazon DCV Connection Gateway 对 Broker 进行 HTTP API 调用，如果 Broker 使用自签名证书，您需要将 Broker 证书复制到 Amazon DCV Connection Gateway 主机（在上一步中检索）并在 Amazon DCV Connection Gateway 配置的 `[resolver]` 部分中设置 `ca-file` 参数。

## 可选 - 启用 TLS 客户端身份验证
<a name="enable-tls-client-auth"></a>

在完成上一步后，Session Manager 和 Connection Gateway 可以通过安全通道进行通信，其中 Connection Gateway 可以验证 Session Manager Broker 的身份。如果您要求 Session Manager Broker 还在建立安全通道之前验证 Connection Gateway 身份，您需要按照下一节中的步骤启用 TLS 客户端身份验证功能。

**注意**  
如果会话管理器位于负载均衡器之后，则无法使用具有 TLS 连接终止功能的负载均衡器（例如应用程序负载均衡器 (ALBs) 或网关负载均衡器 ()）启用 TLS 客户端身份验证。GLBs只能支持没有 TLS 终止的负载均衡器，例如网络负载均衡器 () NLBs。如果您使用 ALBs 或 GLBs，则可以强制只有特定的安全组才能联系负载均衡器，从而确保更高的安全级别；有关安全组的更多信息请点击此处：[您的 VPC 的安全组](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_SecurityGroups.html) 

**Session Manager Broker 端**

1. 要为 Session Manager Broker 和 Amazon DCV Connection Gateway 之间的通信启用 TLS 客户端身份验证，请按照以下步骤进行操作：

1.  通过运行生成所需的密钥和证书：命令的输出将告诉您生成凭据的文件夹以及用于创建 TrustStore 文件的密码。

   ```
   sudo /usr/share/dcv-session-manager-broker/bin/gen-gateway-certificates.sh
   ```

1.  将 Amazon DCV Connection Gateway 的私有密钥和自签名证书的副本放置在您的用户目录中。在下一步中在 Amazon DCV Connection Gateway 中启用 TLS 客户端身份验证时，您需要使用这些密钥和证书。

   ```
   sudo cp /etc/dcv-session-manager-broker/resolver-creds/dcv_gateway_key.pem $HOME 
   ```

   ```
   sudo cp /etc/dcv-session-manager-broker/resolver-creds/dcv_gateway_cert.pem $HOME
   ```

1.  然后使用你首选的文本编辑器打开/etc/dcv-session-manager-broker/session-manager-broker.properties 并执行以下操作：
   + 将 `enable-tls-client-auth-gateway` 设置为 `true`
   + 设置`gateway-to-broker-connector-trust-store-file`为在上一步中创建的 TrustStore 文件的路径
   + 设置`gateway-to-broker-connector-trust-store-pass`为上一步中创建 TrustStore 文件时使用的密码

1. 然后，运行以下命令以停止并重新启动 Broker：

   ```
   sudo systemctl stop dcv-session-manager-broker
   ```

   ```
   sudo systemctl start dcv-session-manager-broker
   ```

**Amazon DCV Connection Gateway 端**
+ 请按照 Amazon DCV Connection Gateway 文档中的相应[小节](https://docs.aws.amazon.com/dcv/latest/gw-admin/setting-up-configuring.html)进行操作。
  + 在设置 `[resolver]` 部分中的 `cert-file` 参数时，使用您在上一步中复制的证书文件的完整路径
  + 在设置 `[resolver]` 部分中的 `cert-key-file` 参数时，使用您在上一步中复制的密钥文件的完整路径

# Amazon DCV Session Manager Amazon DCV 服务器 - DNS 映射参考
<a name="dcv-server-dns-mapping"></a>

 Amazon DCV Connection Gateway 需要使用 Amazon DCV 服务器的 DNS 名称，才能连接到 DCV 服务器实例。本节说明了如何定义包含每个 DCV 服务器与其关联 DNS 名称之间的映射的 JSON 文件。

## 文件结构
<a name="file-structure"></a>

该映射包含具有以下字段的 JSON 对象列表：

```
[
	{
		“ServerIdType”: "Ip",
		“ServerId”: "192.168.0.1",
		“DnsNames”:
		{
			“InternalDnsName”: "internal"
		}
	},
	...
]
```

其中：

**`ServerIdType: `**  
标识该值所指的 ID 类型；当前可用的值是 IP 地址 agentServerId、和 instanceID：    
**`Ip: `**  
适用于亚马逊 EC2 和本地基础架构；系统管理员可以使用 ifconfig (Linux/macOS) 或 ipconfig (Windows) 命令快速检索。此信息也可在 DescribeServers API 响应中找到。  
**`Id: `**  
适用于 Amazon EC2 和本地基础架构；每次主机名或 IP 地址更改时，会话管理器代理都会创建一个新的 UUID。此信息可在 DescribeServers API 响应中找到。  
**`Host.Aws.Ec2InstanceId: `**  
它仅适用于 Amazon EC2 实例，可唯一标识计算机；实例重启后不会发生变化。可以通过联系 http://169.254.169.254/ latest/meta-data/instance-id 在主机上检索。此信息也可在 DescribeServers API 响应中找到。

**`ServerId: `**  
指定类型的 ID，用于唯一地标识网络中的每个 Amazon DCV 服务器。

**`DnsNames: `**  
包含与 Amazon DCV 服务器关联的 DNS 名称的对象，该对象将包含：    
**`InternalDnsNames: `**  
Amazon DCV Connection Gateway 用于连接到实例的 DNS 名称。

请使用 Session Manager Broker CLI 命令`register-server-dns-mapping`从文件加载映射（命令页参考:[register-server-dns-mapping](https://docs.aws.amazon.com/dcv/latest/sm-admin/register-server-dns-mappings.html)），并`describe-server-dns-mappings`列出当前加载在会话管理器代理中的映射（命令页参考:[describe-server-dns-mappings](https://docs.aws.amazon.com/dcv/latest/sm-admin/describe-server-dns-mappings.html)）。

## Persistence
<a name="persistence"></a>

我们强烈建议您启用 Session Manager Broker 的持久性功能，以防止多个 Broker 或整个集群发生故障时映射丢失。有关启用数据持久性的更多信息，请参阅[配置 Broker 持久性](https://docs.aws.amazon.com/dcv/latest/sm-admin/configure_broker_persistence.html)。