【亚马逊云】使用 AWS Client VPN 终端节点并使用 OpenVPN 测试其连通性

文章目录

    • 实验前置条件
    • [1. AWS Client VPN 实验架构示例图](#1. AWS Client VPN 实验架构示例图)
    • [2. AWS 虚拟私有网络简介](#2. AWS 虚拟私有网络简介)
    • [3. AWS Client VPN 系统结构](#3. AWS Client VPN 系统结构)
    • [4. AWS Client VPN - 生成上传VPN证书](#4. AWS Client VPN - 生成上传VPN证书)
    • [5. AWS Client VPN - 创建 VPN 使用的安全组](#5. AWS Client VPN - 创建 VPN 使用的安全组)
    • [6. AWS Client VPN - 创建客户端 VPN 终端节点](#6. AWS Client VPN - 创建客户端 VPN 终端节点)
    • [7. AWS Client VPN - 关联 VPN 终端节点](#7. AWS Client VPN - 关联 VPN 终端节点)
    • [8. AWS Client VPN - 授权客户端访问网络](#8. AWS Client VPN - 授权客户端访问网络)
    • [9. AWS Client VPN - 创建授权配置文件](#9. AWS Client VPN - 创建授权配置文件)
    • [10. AWS Client VPN - 修改路由表](#10. AWS Client VPN - 修改路由表)
    • [11. AWS Client VPN - 使用 OpenVPN 连接 Client VPN 终端节点](#11. AWS Client VPN - 使用 OpenVPN 连接 Client VPN 终端节点)
    • [12. 常见问题](#12. 常见问题)
    • [13. 参考链接](#13. 参考链接)

实验前置条件

  1. 创建好一个 VPC虚拟私有网络待用(包括已创建子网、互联网网关、路由表等配置);
  2. 准备好一台要测试连接 VPN的服务器(需安装 Client VPN 客户端);

1. AWS Client VPN 实验架构示例图

2. AWS 虚拟私有网络简介

AWS 虚拟私有网络解决方案可在您的本地网络、远程办公室、客户端设备和 AWS 全球网络之间建立安全的连接。AWS VPN 由两种服务组成:AWS Site-to-Site VPN AWS Client VPN。这两种服务一起,可提供高度可用且具有弹性的托管云 VPN 解决方案,以保护您的网络流量安全。


AWS Site-to-Site VPN 可在您的网络与 Amazon Virtual Private Cloud 或 AWS Transit Gateway 之间建立加密隧道。要管理远程访问,AWS Client VPN 可使用 VPN 软件客户端将您的用户连接到 AWS 或本地资源。

3. AWS Client VPN 系统结构

AWS Client VPN 是一项完全托管的弹性 VPN 服务,可根据用户需求自动扩展或缩减。由于它是一个云 VPN 解决方案,因此,您无需安装和管理基于硬件或基于软件的解决方案,也无需尝试估计一次支持多少个远程用户。
AWS Client VPN 功能

AWS Client VPN 提供了一个完全托管的 VPN 解决方案,可通过 Internet 连接和兼容 OpenVPN 的客户端从任何位置访问。它具有出色的弹性,能够自动扩展,满足您的需求。您的用户可以连接到 AWS 网络和本地网络。AWS Client VPN 与您现有的 AWS 基础设施(包括 Amazon VPC 和 AWS Directory Service)无缝集成,因此您无需更改网络拓扑。

  • 身份验证

AWS Client VPN 将使用 Active Directory 或证书进行身份验证。Client VPN 与 AWS Directory Service 集成,AWS Directory Service 与您现有的本地 Active Directory 相连接,因此您无需将数据从现有的 Active Directory 复制到云中。采用 Client VPN 的基于证书的身份验证与 AWS Certificate Manager 集成在一起,可轻松预置、管理和部署证书。

  • 授权

AWS Client VPN 提供基于网络的授权,因此您可以基于 Active Directory 组定义访问控制规则,以限制对特定网络的访问。

  • 安全连接

AWS Client VPN 使用安全的 TLS VPN 隧道协议对流量进行加密。单个 VPN 隧道在每 个Client VPN 终端节点处终止,并为用户提供访问所有 AWS 和本地资源的权限。

  • 连接管理

您可以使用 Amazon CloudWatch Logs 从 AWS Client VPN 连接日志监控、存储和访问您的日志文件。然后,您可以从 CloudWatch Logs 中检索关联的日志数据。您可以轻松地监控、取证分析和终止特定连接,同时控制可访问您网络的用户。

  • 与员工设备的兼容性

AWS Client VPN 旨在将设备连接到您的网络。它允许您从基于 OpenVPN 的客户端中进行选择,从而使您的员工可以使用自己选择的设备,包括 Windows、Mac、iOS、Android 和 Linux 设备。

4. AWS Client VPN - 生成上传VPN证书

  • 在 EC2 实例中生成 VPN 服务器和客户端的证书密钥;
  • 将创建好的证书上传到ACM中;
  • 在本地保存好VPN服务器和客户端证书;

在 EC2 实例中,生成VPN RSA证书。

shell 复制代码
# 系统更新
$ sudo yum update -y

# 安装Git
$ sudo yum install -y git

# 将OpenVPN easy-rsa 存储库克隆到本地
$ git clone https://github.com/OpenVPN/easy-rsa.git
$ cd easy-rsa/easyrsa3

# 初始化一个新的 PKI环境(PKI:公钥基础设施)
$ ./easyrsa init-pki

# 构建新的证书颁发机构(CA)
$ ./easyrsa build-ca nopass

# 生成服务器证书和密钥
$ ./easyrsa build-server-full server.vpn.xybaws.com nopass

# 生成客户端证书和密钥
$ ./easyrsa build-client-full client1.vpn.xybaws.com nopass

# 将服务器证书和密钥和客户端证书和密钥复制到项目文件夹
$ mkdir ~/xybaws-vpn/
$ cp pki/ca.crt ~/xybaws-vpn/
$ cp pki/issued/server.vpn.xybaws.com.crt ~/xybaws-vpn/
$ cp pki/private/server.vpn.xybaws.com.key ~/xybaws-vpn/
$ cp pki/issued/client1.vpn.xybaws.com.crt ~/xybaws-vpn/
$ cp pki/private/client1.vpn.xybaws.com.key ~/xybaws-vpn/
$ cd ~/xybaws-vpn

# 查看创建出来的服务器和客户端证书和密钥
$ ll
total 28
-rw-------. 1 root root 1184 Dec 17 03:12 ca.crt
-rw-------. 1 root root 4515 Dec 17 03:13 client1.vpn.xybaws.com.crt
-rw-------. 1 root root 1704 Dec 17 03:14 client1.vpn.xybaws.com.key
-rw-------. 1 root root 4532 Dec 17 03:12 server.vpn.xybaws.com.crt
-rw-------. 1 root root 1700 Dec 17 03:13 server.vpn.xybaws.com.key

# 将服务器证书和密钥以及客户端证书和密钥上传到ACM
$ aws acm import-certificate \
	--certificate fileb://server.vpn.xybaws.com.crt \
	--private-key fileb://server.vpn.xybaws.com.key \
	--certificate-chain fileb://ca.crt \
	--tags Key=Name,Value=xybaws-vpn-server \
	--region ap-northeast-1

$ aws acm import-certificate \
	--certificate fileb://client1.vpn.xybaws.com.crt \
	--private-key fileb://client1.vpn.xybaws.com.key \
	--certificate-chain fileb://ca.crt \
	--tags Key=Name,Value=xybaws-vpn-client1 \
	--region ap-northeast-1

导航至ACM控制台查看,

客户端证书

服务器证书

5. AWS Client VPN - 创建 VPN 使用的安全组

导航至VPC--- 安全组 --- 创建安全组

  • 安全组名称:xxxxxx-vpn-security-group
  • VPC:xxxxxx-vpc
  • 入站规则 / 添加规则:所有流量 0.0.0.0/0

6. AWS Client VPN - 创建客户端 VPN 终端节点

创建客户端 VPN终端节点

操作步骤如下:

点击客户端 VPN 终端节点 , 开始创建客户端 VPN 终端节点

  • 名称标签:xxx-vpn

  • 客户端 IPv4 CIDR(以 CIDR 记法表示的 IP 地址范围,从该范围中为客户端分配 IP 地址。):10.0.0.0/22

  • 服务器证书 ARN:server.vpn.xxx.com

  • 身份验证选:使用相互身份验证

  • 客户端证书 ARN:client1.vpn.xxx.com

  • DNS 服务器 1 的IP地址(VPC DNS 内部地址 )如,172.16.0.2

  • VPC ID (与终端节点关联的 VPC,一个终端节点仅可与一个VPC相关联):xxx-vpc

  • 安全组 ID (指定特定 VPC 中的安全组以应用到客户端 VPN 终端节点):xxx-vpn-securiy-group

注意点:

✨1️⃣要想访问到外网,此VPC需要创建互联网网关,才能访问到外网。

✨2️⃣客户端VPN端点中的DNS服务器地址应该设置成此VPC所在网段的IP地址(一般默认为x.x.x.2)。

修改客户端 VPN 端点

7. AWS Client VPN - 关联 VPN 终端节点

当目标网络关联状态变成Assoclated

8. AWS Client VPN - 授权客户端访问网络

授权规则指定哪些客户端可以访问 VPC

导航到VPC --- 点击客户端 VPN 终端节点 --- 选择已创建好的客户端 VPN---选择授权规则

  • 1️⃣要启动访问权限的目标网络:0.0.0.0/0
  • 2️⃣授权访问权限:允许访问所有用户

!!!授权成功!!!

9. AWS Client VPN - 创建授权配置文件

下载客户端 ovpn 文件,建立授权配置

  • 下载客户端 ovpn文件
  • 点击下载客户端配置
  • 编辑下载下来的授权配置文件。添加如下内容:
bash 复制代码
<cert>
Contenets of client certificate (.crt) file
</cert>

<key>
Contents of private key (.key) file
</key>
  • 同时,也需要修改 DNS 名称,主要添加client1
yml 复制代码
remote client1.cvpn-endpoint-xxxxxxxxx.prod.clientvpn.us-east-1.amazonaws.com 443
  • 具体完整示例客户端配置文件如下:
bash 复制代码
client
dev tun
proto udp
remote client1.cvpn-endpoint-xxxxxxxxx.prod.clientvpn.us-east-1.amazonaws.com 443
remote-random-hostname
resolv-retry infinite
nobind
remote-cert-tls server
cipher AES-256-GCM
verb 3
<ca>
-----BEGIN CERTIFICATE-----
xxxxxxxxxxxxxxxxxxxxxxxxx
-----END CERTIFICATE-----

</ca>

<cert>
Contenets of client certificate (.crt) file
</cert>

<key>
Contents of private key (.key) file
</key>

reneg-sec 0

verify-x509-name server.vpn.awsvstecs.com name

10. AWS Client VPN - 修改路由表

修改 VPN 终端节点的路由表,导航至VPC --- 客户端 VPN 终端节点 --- 路由表

  • 路由目标:0.0.0.0/0

  • 目标 VPC 子网 ID:subnet-xxxxxx

11. AWS Client VPN - 使用 OpenVPN 连接 Client VPN 终端节点

  • 下载 OpenVPN 客户端

下载链接:Community Downloads - Open Source VPN | OpenVPN

  • 下载AWS官方提供的连接客户端。

说明:AWS Client VPN 的客户端免费提供。您可以将计算机直接连接到 AWS Client VPN,以获得端到端的 VPN 体验。该软件客户端与 AWS Client VPN 的所有功能兼容。

下载链接:https://aws.amazon.com/cn/vpn/client-vpn-download/

使用 OpenVPN客户端 或 AWS Client VPN桌面版 连接 Client VPN 终端节点。

测试 VPC内网访问

  • 未连接VPN时,私有IP地址无法访问内网
  • 连接到Client VPN后,私有IP地址可以访问内网


注意

因国内网络限制原因,在Global区创建的Client VPN客户端终端节点,无法在境内使用客户端虚拟网络进行私网访问,本次实验是在Global其他区域开的轻量级服务器进行操作的。

12. 常见问题

💢报错

bash 复制代码
[ec2-user@ip-172-16-10-10 xybaws-vpn]$ pwd
/home/ec2-user/xybaws-vpn
[ec2-user@ip-172-16-10-10 xybaws-vpn]$ aws acm import-certificate \
> --certificate fileb://server.vpn.xybaws.com.crt \
> --private-key filed://server.vpn.xybaws.com.key \
> --certificate-chain filed://ca.crt \
> --tags Key=Name,Value=xybaws-vpn-server \
> --region ap-northeast-1
Unable to locate credentials. You can configure credentials by running "aws configure".
[ec2-user@ip-172-16-10-10 xybaws-vpn]$

✅Installing or updating the latest version of the AWS CLI

bash 复制代码
$ curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"

$ unzip awscliv2.zip

$ sudo ./aws/install

操作如下:

bash 复制代码
[ec2-user@ip-172-16-10-16 xybaws-vpn]$ aws configure
AWS Access Key ID [None]: AKIA****************M6
AWS Secret Access Key [None]: xDvX*********************************pFn
Default region name [None]: ap-northeast-1
Default output format [None]: json
[ec2-user@ip-172-16-10-16 xybaws-vpn]$ aws configure list
      Name                    Value             Type    Location
      ----                    -----             ----    --------
   profile                <not set>             None    None
access_key     ****************2WM6 shared-credentials-file
secret_key     ****************hpFn shared-credentials-file
    region           ap-northeast-1      config-file    ~/.aws/config
[ec2-user@ip-172-16-10-16 xybaws-vpn]$ aws acm import-certificate \
> --certificate fileb://server.vpn.xybaws.com.crt \
> --private-key fileb://server.vpn.xybaws.com.key \
> --certificate-chain fileb://ca.crt \
> --tags Key=Name,Value=xybaws-vpn-server \
> --region ap-northeast-1
{
    "CertificateArn": "arn:aws:acm:ap-northeast-1:540*******692:certificate/1bf78b2b-6e05-487d-af6b-965f02d2e51d"
}
[ec2-user@ip-172-16-10-16 xybaws-vpn]$ aws acm import-certificate \
> --certificate fileb://client1.vpn.xybaws.com.crt \
> --private-key fileb://client1.vpn.xybaws.com.key \
> --certificate-chain fileb://ca.crt \
> --tags Key=Name,Value=xybaws-vpn-client1 \
> --region ap-northeast-1
{
    "CertificateArn": "arn:aws:acm:ap-northeast-1:540*******692:certificate/374b2569-18cf-4fc2-9418-ae3dbcbc6d57"
}
[ec2-user@ip-172-16-10-16 xybaws-vpn]$

13. 参考链接

1️⃣https://aws.amazon.com/cn/vpn/features/

2️⃣Installing or updating the latest version of the AWS CLI - AWS Command Line Interface

3️⃣https://docs.aws.amazon.com/zh_cn/vpn/latest/clientvpn-admin/client-authentication.html

4️⃣https://docs.aws.amazon.com/zh_cn/vpn/latest/clientvpn-admin/cvpn-getting-started.html

相关推荐
Linux运维老纪1 分钟前
Nginx常用配置之详解(Detailed Explanation of Common Nginx Configurations)
计算机网络·nginx·微服务·云原生·架构·云计算·运维开发
RoadToTheExpert14 分钟前
PHP 5 6 7 8 9 各重要版本开发特性和选择简要说明
开发语言·php
爱lv行1 小时前
安装和配置 Apache 及 PHP
开发语言·php·apache
w1wi5 小时前
【AI部署】腾讯云每月1w小时免费GPU获取
云计算·腾讯云
非凡的世界5 小时前
PHP如何删除数组中的特定值?
开发语言·php·删除
serve the people5 小时前
腾讯云日志服务根据网段过滤非法数据
sql·云计算·腾讯云
暗碳5 小时前
termux配置nginx+php
运维·nginx·php
广西千灵通网络科技有限公司5 小时前
基于PHP的智能健康管理系统设计与实现
开发语言·php
轩轩9902185 小时前
微信小程序获取后端数据
微信小程序·小程序·php
斗-匕6 小时前
Java IO 基础知识总结
java·ubuntu·php