

# 使用 VPN 以将 LoRa 网关连接到 AWS 账户。
<a name="lorawan-vpc-vpn-connection"></a>

要将本地部署网关连接到您的AWS 账户，可以使用 Site-to-Site VPN 连接或 Client VPN 端点。

在连接本地部署网关之前，您必须已创建 VPC 端点，并配置私有托管区和入站解析程序，以避免来自网关的流量通过公共网络。有关更多信息，请参阅[创建 VPC 接口端点和私有托管区域](create-vpc-lns-cups.md)。

## Site-to-Site VPN 端点
<a name="vpc-site-vpn"></a>

如果您没有网关硬件或希望使用其他AWS 账户测试 VPN 连接，则可以使用 Site-to-Site VPN 连接。您可以使用 Site-to-Site VPN 连接来自同一个 AWS 账户的 VPC 端点；或如果您打算在不同 AWS 区域中使用，则可以选择来自其他 AWS 账户的 VPC 端点。

**注意**  
如果您拥有网关硬件并希望建立 VPN 连接，我们建议您改用 Client VPN。有关说明，请参阅[Client VPN 端点](#vpc-client-vpn)。

要设置 Site-to-Site VPN：

1. 在要从中设置连接的站点中创建另一个 VPC。对于 `VPC-A`，您可以重复使用之前创建的 VPC。要创建另一个 VPC（例如，`VPC-B`），请使用与您之前创建的 VPC 的 CIDR 块不重叠的 CIDR 块。

   有关设置 VPC 的信息，请按照[AWS设置 Site-to-Site VPN 连接](samples/Setup_Site_to_Site_VPN.zip)中所述操作执行。
**注意**  
文档中描述的 Site-to-Site VPN VPN 方法使用 OpenSWAN 进行 VPN 连接，该连接仅支持一个 VPN 隧道。如果您为 VPN 使用了不同的商业软件，则可在站点之间设置两个通道。

1. 设置 VPN 连接后，请添加您的AWS 账户中的入站解析程序 IP 地址，以更新 `/etc/resolv.conf` 文件。您将为名称服务器使用此 IP 地址。有关如何获取此 IP 地址的信息，请参阅 [配置 Route 53 入站解析程序](create-vpc-lns-cups.md#configure-route53-resolver)。在这个示例中，我们可以使用您在创建 Route 53 Resolver 时分配的 IP 地址 `10.100.0.145`。

   ```
   options timeout:2 attempts:5
   ; generated by /usr/sbin/dhclient-script
   search region.compute.internal
   nameserver 10.100.0.145
   ```

1. 现在，我们可以测试 VPN 连接是否使用了 AWS PrivateLink 端点，而无需使用 `nslookup` 命令经由公共互联网进行测试。以下是运行命令的示例。

   ```
   nslookup account-specific-prefix.lns.lorawan.region.amazonaws.com
   ```

   下面显示了运行命令的示例输出，该输出显示了一个私有 IP 地址，表示与 AWS PrivateLink LNS 端点的连接已建立。

   ```
   Server: 10.100.0.145
   Address: 10.100.0.145
   
   Non-authoritative answer:
   Name: https://xxxxx.lns.lorawan.region.amazonaws.com
   Address: 10.100.0.204
   ```

有关使用 Site -to-Site VPN 连接的信息，请参阅 [Site-to-Site VPN 的工作原理](https://docs.aws.amazon.com/vpn/latest/s2svpn/how_it_works.html)。

## Client VPN 端点
<a name="vpc-client-vpn"></a>

AWS Client VPN 是一种基于客户端的托管 VPN 服务，让您能够安全地访问 AWS 资源和本地网络中的资源。下面显示了 Client VPN 服务的架构。

![\[图片显示了如何使用 AWS Client VPN 在本地连接您的 LoRa 网关。\]](http://docs.aws.amazon.com/zh_cn/iot-wireless/latest/developerguide/images/lorawan-privatelink-client-vpn.png)


要建立到 Client VPN 端点的 VPN 连接：

1. 按照 [AWS Client VPN 入门](https://docs.aws.amazon.com/vpn/latest/clientvpn-admin/cvpn-getting-started.html)中描述的说明创建 Client VPN 端点。

1. 使用该路由器的访问 URL（例如 `192.168.1.1`），登录到本地网络（例如，Wi-Fi 路由器），然后查找根名称和密码。

1. 按照网关文档中的说明设置 LoRaWAN 网关，然后将您的网关添加到 适用于 LoRaWAN 的 AWS IoT Core。有关如何添加网关的信息，请参阅 [将您的网关登记到 适用于 LoRaWAN 的 AWS IoT Core](lorawan-onboard-gateways.md)。

1. 检查您的网关固件是否为最新版本。如果固件过期，您可以按照本地部署网络中提供的说明更新网关的固件。有关更多信息，请参阅[使用 适用于 LoRaWAN 的 AWS IoT Core 的 CUPS 服务更新网关固件](lorawan-update-firmware.md)。

1. 检查 OpenVPN 是否已启用。如果已启用，请跳到下一步以配置本地部署网络中的 OpenVPN 客户端。如果尚未启用，请遵循[为 OpenWrt 安装 OpenVPN 的指南](https://www.ovpn.com/en/guides/openwrt)。
**注意**  
在此示例中，我们使用 OpenVPN。您可以使用其他 VPN 客户端，例如 Site-to-Site VPN 或者 AWS Direct Connect 以设置 Client VPN 连接。

1. 根据客户端配置中的信息配置 OpenVPN 客户端，并了解您可以如何使用[使用 LuCi 的 OpenVPN 客户端](https://openwrt.org/docs/guide-user/services/vpn/openvpn/client-luci)。

1. 将入站解析程序的 IP 地址添加到AWS 账户 (`10.100.0.145`)，从而 SSH 连接到您的本地部署网络，并更新`/etc/resolv.conf`文件。

1. 对于要使用AWS PrivateLink连接到端点的网关流量，请将网关的第一个 DNS 条目替换为入站解析程序的 IP 地址。

有关使用 Site-to-Site VPN 连接的信息，请参阅 [Client VPN 入门](https://docs.aws.amazon.com/vpn/latest/clientvpn-user/user-getting-started.html)。

## 连接到 LNS 和 CUPS VPC 端点
<a name="vpc-vpn-connect"></a>

下面显示了如何测试与 LNS 和 CUPS VPC 端点的连接。

**测试 CUPS 端点**  
要测试您的 LoRa 网关与 CUPS 端点的 AWS PrivateLink 连接，请运行以下命令：

```
curl -k -v -X POST https://xxxx.cups.region.iotwireless.iot:443/update-info 
     --cacert cups.trust --cert cups.crt --key cups.key --header "Content-Type: application/json" 
     --data '{ 
              "router": "xxxxxxxxxxxxx", 
              "cupsUri": "https://xxxx.cups.lorawan.region.amazonaws.com:443",
              "cupsCredCrc":1234, "tcCredCrc":552384314
             }' 
      —output cups.out
```

**测试 LNS 端点**  
要测试您的 LNS 端点，请首先预置一个可与您的无线网关配合使用的 LoRaWAN 设备。然后，您可以添加您的设备并执行*加入*流程，随后您便可以开始发送上行链路消息了。