如何使用 AWS CLI 配置 Client VPN?

2 分钟阅读
0

我想使用 AWS 命令行界面(AWS CLI)来配置 AWS Client VPN。

解决方案

**注意:**如果在运行 AWS 命令行界面(AWS CLI)命令时收到错误,请参阅 Troubleshoot AWS CLI errors。此外,确保您使用的是最新版本的 AWS CLI。Client VPN 服务的 API 操作仅在最新 AWS CLI 版本中可用。

配置具有相互身份验证的 Client VPN

要配置具有相互身份验证的 Client VPN,请完成下面的步骤:

  1. 生成服务器和客户端证书,然后将证书上传到 AWS Certificate Manager (ACM)
  2. 记下服务器证书 ARN 和客户端证书 ARN。
  3. 运行 create-client-vpn-endpoint 命令。例如,以下命令会创建一个使用相互身份验证且客户端 CIDR 块为 172.16.0.0/16 的端点:
    $ aws --region us-east-1 ec2 create-client-vpn-endpoint --client-cidr-block 172.16.0.0/16 --server-certificate-arn arn:aws:acm:us-east-1:1234567890:certificate/abc1d23e-45fa-678b-9cd0-ef123a45b678 --authentication-options Type=certificate-authentication,MutualAuthentication={ClientRootCertificateChainArn=arn:aws:acm:us-east-1:1234567890:certificate/abc1d23e-45fa-678b-9cd0-ef123a45b678} --connection-log-options Enabled=false

注意:

  • 对于客户端 IPv4 CIDR 块,请在 CIDR 表示法中指定 IP 地址范围以分配客户端 IP 地址。
  • ClientRootCertificateChainARN 是客户端证书的 ARN。证书颁发机构(CA)必须签署证书,并且您必须在 ACM 中生成证书。
  • AWS Client VPN 是特定于 AWS 区域的。VPN 的区域必须与证书的区域匹配。

使用基于用户的身份验证配置 Client VPN

Active Directory 身份验证

要使用 Active Directory 身份验证配置 Client VPN,请完成以下步骤:

  1. 对于目录 ID,指定 AWS Active Directory 的 ID。
  2. 运行 create-client-vpn-endpoint 命令。例如,以下命令创建了一个使用基于 Active Directory 的身份验证且客户端 CIDR 块为 172.16.0.0/16 的端点:
    $ aws --region us-east-1 ec2 create-client-vpn-endpoint --client-cidr-block 172.16.0.0/16 --server-certificate-arn arn:aws:acm:us-east-1:1234567890:certificate/abc1d23e-45fa-678b-9cd0-ef123a45b678 --authentication-options Type=directory-service-authentication,ActiveDirectory={DirectoryId=d-1234567890} --connection-log-options Enabled=false

注意:

  • 使用 —dns-servers 选项传递自定义 DNS 服务器以进行 DNS 解析。一个 Client VPN 端点最多可以有两个 DNS 服务器。如果未指定 DNS 服务器,则使用在本地设备上配置的 DNS 地址。
  • 使用 —transport-protocol 选项为 VPN 会话设置传输协议。

联合身份验证(适用于基于 SAML 的联合身份验证)

要使用联合身份验证配置 Client VPN,请完成以下步骤:

  1. 对于 SAML 提供商 ARN,指定 AWS Identity and Access Management(IAM)安全断言标记语言(SAML)身份提供者的 ARN。
  2. 运行 create-client-vpn-endpoint 命令。例如,以下命令会创建一个使用联合身份验证且客户端 CIDR 块为 172.16.0.0/16 的端点:
    $ aws --region us-east-1 ec2 create-client-vpn-endpoint --client-cidr-block 172.16.0.0/16 --server-certificate-arn arn:aws:acm:us-east-1:1234567890:certificate/abc1d23e-45fa-678b-9cd0-ef123a45b678 --authentication-options Type=federated-authentication,FederatedAuthentication={SAMLProviderArn=arn:aws:iam::123456789012:saml-provider/MySAMLProvider} --connection-log-options Enabled=false
    **注意:**将 SAMLProviderArn 替换为 IAM 中 SAML 提供商资源的 ARN,将 MySAMLProvider 替换为 SAML 提供商的名称。

将子网与 Client VPN 关联

运行 associate-client-vpn-target-network 命令以将子网与 Client VPN 端点关联:

$  aws --region us-east-1 ec2 associate-client-vpn-target-network --client-vpn-endpoint-id cvpn-endpoint-0ab1cd234ef567ab890 --subnet-id subnet-0123456789abc123

此操作将 Client VPN 的状态更改为可用。虚拟私有云(VPC)的本地路由会自动添加到 Client VPN 端点路由表中。VPC 的默认安全组会自动应用于子网关联。关联子网后,可以修改安全组。

添加授权规则来授予客户端访问目标 VPC 的权限

要添加授权规则,请对您使用的身份验证运行 authorize-client-vpn-ingress 命令:

相互身份验证

$ aws --region us-east-1 ec2 authorize-client-vpn-ingress --client-vpn-endpoint-id cvpn-endpoint-0ab1cd234ef567ab890 --target-network-cidr 10.0.0.0/16 --authorize-all-groups

Active Directory 身份验证

$ aws --region us-east-1 ec2 authorize-client-vpn-ingress --client-vpn-endpoint-id cvpn-endpoint-0ab1cd234ef567ab890 --target-network-cidr 10.0.0.0/16 --access-group-id S-1-2-34-1234567890-1234567890-1234567890-1234

联合身份验证(SAML 2.0)

$ aws --region us-east-1 ec2 authorize-client-vpn-ingress --client-vpn-endpoint-id cvpn-endpoint-0ab1cd234ef567ab890 --target-network-cidr 10.0.0.0/16 --access-group-id MyAccessGroup

**注意:**将 MyAccessGroup 替换为提供者组的访问组 ID。

(可选)运行 create-client-vpn-route 命令,以向 Client VPN 端点上的目标网络添加其他路由:

$ aws --region us-east-1 ec2 create-client-vpn-route --client-vpn-endpoint-id cvpn-endpoint-0ab1cd234ef567ab890 --destination-cidr-block 0.0.0.0/0 --target-vpc-subnet-id subnet-0123456789abcabca

导出 Client VPN 端点配置文件

导出 Client VPN 端点配置文件。使用此文件分发给您的客户端。

**注意:**如果使用双向身份验证配置 Client VPN,则运行 export-client-vpn-client-configuration 命令来将客户端证书和客户端密钥附加到配置文件:

$ aws --region us-east-1 ec2 export-client-vpn-client-configuration --client-vpn-endpoint-id cvpn-endpoint-0ab1cd234ef567ab890 --output text > client-config.ovpn
AWS 官方
AWS 官方已更新 1 年前