如何解决激活 Storage Gateway 时的内部错误?

5 分钟阅读
0

我尝试在 AWS Storage Gateway 上激活我的网关,但遇到内部错误。

简短描述

对 Storage Gateway 的请求会遍历两条网络路径。客户端发送的激活请求会通过端口 80 连接到网关的虚拟机 (VM) 或 Amazon Elastic Compute Cloud (Amazon EC2) 实例。如果网关成功收到激活请求,则网关将与 Storage Gateway 终端节点通信以接收激活密钥。如果网关无法访问这些 Storage Gateway 终端节点,则服务会向客户端发出内部错误消息作为响应。

解决方法

注意:请务必使用最新版本的 Amazon 系统映像 (AMI)。如果您不使用最新版本的 AMI,将会出现内部错误。
请务必选择正确的网关类型。网关类型的 .ova 文件和 AMI 不同,不可互换。

如果使用公有终端节点激活网关

1.    验证您是否已打开了所需的端口。对于本地部署的网关,请检查本地防火墙上是否已打开这些端口。对于在 Amazon EC2 实例上部署的网关,请检查实例的安全组上是否已打开这些端口。要确认端口是否已打开,请从服务器在公有终端节点上运行 telnet 命令。此服务器必须与网关位于同一子网中。例如,以下 telnet 命令会测试与端口 443 的连接:

telnet d4kdq0yaxexbo.cloudfront.net 443
telnet storagegateway.region.amazonaws.com 443
telnet dp-1.storagegateway.region.amazonaws.com 443
telnet proxy-app.storagegateway.region.amazonaws.com 443
telnet client-cp.storagegateway.region.amazonaws.com 443
telnet anon-cp.storagegateway.region.amazonaws.com 443

要确认网关本身可以访问终端节点,请访问网关的本地 VM 控制台(针对本地部署的网关)。您也通过 SSH 连接到网关的实例(针对在 Amazon EC2 上部署的网关)。然后运行网络连接测试。确认测试返回 [PASSED]

**注意:**网关控制台的默认登录用户名为 admin,默认密码为 password

2.    确认没有防火墙安全性会修改从网关发送到公有终端节点的数据包。防火墙安全性可能是 SSL 检查、深度数据包检查或任何其他形式。如果 SSL 证书会根据激活终端节点的要求进行修改,则 SSL 握手将会失败。要确认没有正在进行的 SSL 检查,请通过端口 443 在主激活终端节点 (anon-cp.storagegateway.region.amazonaws.com) 上运行 OpenSSL 命令。您必须从与网关位于同一子网中的计算机运行此命令:

注意:将 region 替换为您的激活区域。

$ openssl s_client -connect  anon-cp.storagegateway.region.amazonaws.com:443 -servername anon-cp.storagegateway.region.amazonaws.com

如果没有正在进行的 SSL 检查,则该命令将返回与以下示例类似的响应:

$ openssl s_client -connect anon-cp.storagegateway.us-east-2.amazonaws.com:443 -servername anon-cp.storagegateway.us-east-2.amazonaws.com
CONNECTED(00000003)
depth=2 C = US, O = Amazon, CN = Amazon Root CA 1
verify return:1
depth=1 C = US, O = Amazon, OU = Server CA 1B, CN = Amazon
verify return:1
depth=0 CN = anon-cp.storagegateway.us-east-2.amazonaws.com
verify return:1
---
Certificate chain
 0 s:/CN=anon-cp.storagegateway.us-east-2.amazonaws.com
   i:/C=US/O=Amazon/OU=Server CA 1B/CN=Amazon
 1 s:/C=US/O=Amazon/OU=Server CA 1B/CN=Amazon
   i:/C=US/O=Amazon/CN=Amazon Root CA 1
 2 s:/C=US/O=Amazon/CN=Amazon Root CA 1
   i:/C=US/ST=Arizona/L=Scottsdale/O=Starfield Technologies, Inc./CN=Starfield Services Root Certificate Authority - G2
 3 s:/C=US/ST=Arizona/L=Scottsdale/O=Starfield Technologies, Inc./CN=Starfield Services Root Certificate Authority - G2
   i:/C=US/O=Starfield Technologies, Inc./OU=Starfield Class 2 Certification Authority
---

如果存在正在进行的 SSL 检查,则响应会显示已更改的证书链,与以下示例类似:

$ openssl s_client -connect  anon-cp.storagegateway.ap-southeast-1.amazonaws.com:443 -servername anon-cp.storagegateway.ap-southeast-1.amazonaws.com
CONNECTED(00000003)
depth=0 DC = com, DC = amazonaws, OU = AWS, CN = anon-cp.storagegateway.ap-southeast-1.amazonaws.com
verify error:num=20:unable to get local issuer certificate
verify return:1
depth=0 DC = com, DC = amazonaws, OU = AWS, CN = anon-cp.storagegateway.ap-southeast-1.amazonaws.com
verify error:num=21:unable to verify the first certificate
verify return:1
---
Certificate chain
 0 s:/DC=com/DC=amazonaws/OU=AWS/CN=anon-cp.storagegateway.ap-southeast-1.amazonaws.com
   i:/C=IN/O=Company/CN=Admin/ST=KA/L=New town/OU=SGW/emailAddress=admin@company.com
---

激活终端节点仅在识别到 SSL 证书时才接受 SSL 握手。这意味着网关到终端节点的出站流量必须不受网络中任何防火墙执行的检查影响。这些检查可能是 SSL 检查或深度数据包检查。

3.    确认您的网关已正确同步时间。过长的时间偏移可能会导致 SSL 握手错误。使用网关的本地 VM 控制台检查网关的时间同步。时间偏移应不超过 60 秒。

**注意:**对于在 EC2 实例上托管的网关,系统时间管理选项不可用。确认实例可以通过 UDP 和 TCP 123 端口连接到 NTP 服务器池列表

0.amazon.pool.ntp.org
1.amazon.pool.ntp.org
2.amazon.pool.ntp.org
3.amazon.pool.ntp.org

如果使用 Amazon Virtual Private Cloud(Amazon VPC)端点激活您的网关

1.    验证是否已在本地防火墙(针对本地部署的网关)或安全组(针对在 Amazon EC2 中部署的网关)中打开了 所需的端口。将网关连接到 Storage Gateway VPC 终端节点所需的端口与将网关连接到公有终端节点时所需的端口不同。连接到 Storage Gateway VPC 终端节点需要以下端口:

  • TCP 443
  • TCP 1026
  • TCP 1027
  • TCP 1028
  • TCP 1031
  • TCP 2222

此外,检查附加到 Storage Gateway VPC 终端节点的安全组。连接到终端节点的默认安全组可能不允许使用所需的端口。创建一个新的安全组,允许来自您的网关 IP 地址范围的流量通过所需端口。然后,将该安全组连接到 VPC 终端节点。

**注意:**使用 Amazon VPC 控制台验证连接到 VPC 终端节点的安全组。从控制台找到您的 Storage Gateway VPC 终端节点,然后选择 Security Groups(安全组)选项卡。

要确认所需端口是否已打开,请在 Storage Gateway VPC 终端节点上运行 telnet 命令。您必须从与网关位于同一子网中的服务器运行这些命令。您可以对未指定可用区的第一个 DNS 名称运行测试。例如,以下 telnet 命令使用 DNS 名称 vpce-1234567e1c24a1fe9-62qntt8k.storagegateway.us-east-1.vpce.amazonaws.com 测试所需端口的连接:

telnet vpce-1234567e1c24a1fe9-62qntt8k.storagegateway.us-east-1.vpce.amazonaws.com 443
telnet vpce-1234567e1c24a1fe9-62qntt8k.storagegateway.us-east-1.vpce.amazonaws.com 1026
telnet vpce-1234567e1c24a1fe9-62qntt8k.storagegateway.us-east-1.vpce.amazonaws.com 1027
telnet vpce-1234567e1c24a1fe9-62qntt8k.storagegateway.us-east-1.vpce.amazonaws.com 1028
telnet vpce-1234567e1c24a1fe9-62qntt8k.storagegateway.us-east-1.vpce.amazonaws.com 1031
telnet vpce-1234567e1c24a1fe9-62qntt8k.storagegateway.us-east-1.vpce.amazonaws.com 2222

2.    确认没有防火墙安全性会修改从网关发送到 Storage Gateway VPC 终端节点的数据包。防火墙安全性可能是 SSL 检查、深度数据包检查或任何其他形式。如果 SSL 证书会根据激活终端节点的要求进行修改,则 SSL 握手将会失败。要确认没有正在进行的 SSL 检查,请在 Storage Gateway VPC 终端节点上运行 OpenSSL 命令。您必须从与网关位于同一子网的计算机上运行此命令。对每个所需端口运行命令:

$ openssl s_client -connect vpce-1234567e1c24a1fe9-62qntt8k.storagegateway.us-east-1.vpce.amazonaws.com:443 -servername vpce-1234567e1c24a1fe9-62qntt8k.storagegateway.us-east-1.vpce.amazonaws.com

$ openssl s_client -connect vpce-1234567e1c24a1fe9-62qntt8k.storagegateway.us-east-1.vpce.amazonaws.com:1026 -servername vpce-1234567e1c24a1fe9-62qntt8k.storagegateway.us-east-1.vpce.amazonaws.com

$ openssl s_client -connect vpce-1234567e1c24a1fe9-62qntt8k.storagegateway.us-east-1.vpce.amazonaws.com:1027 -servername vpce-1234567e1c24a1fe9-62qntt8k.storagegateway.us-east-1.vpce.amazonaws.com

$ openssl s_client -connect vpce-1234567e1c24a1fe9-62qntt8k.storagegateway.us-east-1.vpce.amazonaws.com:1028 -servername vpce-1234567e1c24a1fe9-62qntt8k.storagegateway.us-east-1.vpce.amazonaws.com

$ openssl s_client -connect vpce-1234567e1c24a1fe9-62qntt8k.storagegateway.us-east-1.vpce.amazonaws.com:1031 -servername vpce-1234567e1c24a1fe9-62qntt8k.storagegateway.us-east-1.vpce.amazonaws.com

$ openssl s_client -connect vpce-1234567e1c24a1fe9-62qntt8k.storagegateway.us-east-1.vpce.amazonaws.com:2222 -servername vpce-1234567e1c24a1fe9-62qntt8k.storagegateway.us-east-1.vpce.amazonaws.com

如果没有正在进行的 SSL 检查,则该命令将返回与以下示例类似的响应:

openssl s_client -connect vpce-1234567e1c24a1fe9-62qntt8k.storagegateway.us-east-1.vpce.amazonaws.com:1027 -servername vpce-1234567e1c24a1fe9-62qntt8k.storagegateway.us-east-1.vpce.amazonaws.com
CONNECTED(00000005)
depth=2 C = US, O = Amazon, CN = Amazon Root CA 1
verify return:1
depth=1 C = US, O = Amazon, OU = Server CA 1B, CN = Amazon
verify return:1
depth=0 CN = anon-cp.storagegateway.us-east-1.amazonaws.com
verify return:1
---
Certificate chain
 0 s:CN = anon-cp.storagegateway.us-east-1.amazonaws.com
   i:C = US, O = Amazon, OU = Server CA 1B, CN = Amazon
 1 s:C = US, O = Amazon, OU = Server CA 1B, CN = Amazon
   i:C = US, O = Amazon, CN = Amazon Root CA 1
 2 s:C = US, O = Amazon, CN = Amazon Root CA 1
   i:C = US, ST = Arizona, L = Scottsdale, O = "Starfield Technologies, Inc.", CN = Starfield Services Root Certificate Authority - G2
 3 s:C = US, ST = Arizona, L = Scottsdale, O = "Starfield Technologies, Inc.", CN = Starfield Services Root Certificate Authority - G2
   i:C = US, O = "Starfield Technologies, Inc.", OU = Starfield Class 2 Certification Authority
---

如果存在正在进行的 SSL 检查,则响应会显示已更改的证书链,与以下示例类似:

openssl s_client -connect vpce-1234567e1c24a1fe9-62qntt8k.storagegateway.us-east-1.vpce.amazonaws.com:1027 -servername vpce-1234567e1c24a1fe9-62qntt8k.storagegateway.us-east-1.vpce.amazonaws.com
CONNECTED(00000005)
depth=2 C = US, O = Amazon, CN = Amazon Root CA 1
verify return:1
depth=1 C = US, O = Amazon, OU = Server CA 1B, CN = Amazon
verify return:1
depth=0 DC = com, DC = amazonaws, OU = AWS, CN = anon-cp.storagegateway.us-east-1.amazonaws.com
verify error:num=21:unable to verify the first certificate
verify return:1
---
Certificate chain
 0 s:/DC=com/DC=amazonaws/OU=AWS/CN=anon-cp.storagegateway.us-east-1.amazonaws.com
   i:/C=IN/O=Company/CN=Admin/ST=KA/L=New town/OU=SGW/emailAddress=admin@company.com
---

激活终端节点仅在识别到 SSL 证书时才接受 SSL 握手。这意味着网关通过所需端口到 VPC 终端节点的出站流量必须不受网络防火墙执行的检查影响。这些检查可能是 SSL 检查或深度数据包检查。

3.    确认您的网关已正确同步时间。过长的时间偏移可能会导致 SSL 握手错误。使用网关的本地 VM 控制台检查网关的时间同步。时间偏移应不超过 60 秒。

**注意:**对于在 EC2 实例上托管的网关,系统时间管理选项不可用。确认实例可以通过 UDP 和 TCP 123 端口连接到 NTP 服务器池列表

0.amazon.pool.ntp.org
1.amazon.pool.ntp.org
2.amazon.pool.ntp.org
3.amazon.pool.ntp.org

4.    激活之前,检查您是否在本地网关 VM 上将 Amazon EC2 上的 HTTP 代理配置为端口 3128 上的 Squid 代理。如属这种情况,请确认以下内容:

  • 附加到 Amazon EC2 上 HTTP 代理的安全组必须具有一条入站规则,并且此入站规则必须允许来自网关虚拟机 IP 地址的 Squid 代理流量通过端口 3128。
  • 附加到 Storage Gateway VPC 终端节点的安全组必须具有入站规则,并且这些入站规则必须允许来自 Amazon EC2 上 HTTP 代理的 IP 地址的流量通过端口 1026-1028、1031、2222 和 443。

如果在同一 VPC 中存在 Storage Gateway VPC 终端节点时使用公有终端节点激活您的网关

确认您的 Storage Gateway VPC 终端节点上未启用 Enable Private DNS Name(启用私有 DNS 名称)设置。如果已启用此设置,则无法激活从该 VPC 到公有终端节点的任何网关。请按照以下步骤禁用私有 DNS 名称选项:

  1. 打开 Amazon VPC 控制台
  2. 在导航窗格中,选择 Endpoints(终端节点)
  3. 选择您的 Storage Gateway VPC 终端节点。
  4. 选择 Actions(操作)
  5. 选择 Manage Private DNS Names(管理私有 DNS 名称)。
  6. 对于 Enable Private DNS Name(启用私有 DNS 名称),清除 Enable for this Endpoint(为此终端节点启用)。
  7. 选择 Modify Private DNS Names(修改私有 DNS 名称)来保存设置。

相关信息

接口终端节点的私有 DNS

AWS 官方
AWS 官方已更新 2 年前