上次更新时间:2021 年 1 月 22 日
如何使用 AWS 命令行界面 (AWS CLI) 配置 AWS Client VPN?
简短描述使用 AWS CLI 配置 Client VPN:
1.为特定身份验证类型配置 Client VPN:双向或基于用户。
2.将子网与步骤 1 中创建的 Client VPN 相关联。
3.添加授权规则以授予客户端访问目标 Virtual Private Cloud (VPC)。
4.(可选)根据需要在 Client VPN 终端节点上添加到目标网络的其他路由。
5.下载 Client VPN 终端节点配置文件,以分发给客户端。
解决方法注意:如果您在运行 AWS 命令行界面 (AWS CLI) 命令时收到错误,请确保您运行的是最新版本的 AWS CLI。Client VPN 服务的 API 操作仅在最新版本的 AWS CLI 中可用。
使用双向身份验证配置 Client VPN1.配置服务器证书并将其导入 AWS Certificate Manager (ACM)。有关生成服务器和客户端证书及密钥的详细步骤,请参阅双向身份验证。
2.记下服务器证书 Amazon 资源名称 (ARN) 和客户端证书 ARN。
3.使用 create-client-vpn-endpoint 命令。例如,以下命令创建一个使用双向身份验证的终端节点,其客户端 CIDR 块为 172.16.0.0/16。
$ aws 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 地址。例如:172.16.0.0/16。 “ClientRootCertificateChainArn”是客户端证书的 ARN。证书必须由证书颁发机构 (CA) 签名并在 ACM 中进行预置。 使用基于用户的身份验证配置 Client VPNActive Directory 身份验证
1.对于 Directory ID(目录 ID),指定 AWS Active Directory 的 ID。
2.使用 create-client-vpn-endpoint 命令。例如,以下命令创建一个使用基于 Active Directory 的身份验证的终端节点,其客户端 CIDR 块为 172.16.0.0/16。
$ aws 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 的联合身份验证)
1.对于 SAML 提供商 ARN,请指定AWS Identity and Access Management (IAM) 安全断言标记语言 (SAML) 身份提供商的 ARN。
2.使用 create-client-vpn-endpoint 命令。例如,以下命令创建一个使用联合身份验证的终端节点,其客户端 CIDR 块为 172.16.0.0/16。
$ aws 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。
将子网与 Client VPN 关联1.使用以下命令将子网与您在之前步骤中创建的 Client VPN 终端节点相关联。
$ aws ec2 associate-client-vpn-target-network
--client-vpn-endpoint-id cvpn-endpoint-0ab1cd234ef567ab890 --subnet-id subnet-0123456789abc123
此操作会将 Client VPN 的状态改变为“可用”。VPC 的本地路由将自动添加到 Client VPN 终端节点路由表中。VPC 的默认安全组将自动应用于子网关联。关联子网后,您可以修改安全组。
添加授权规则以授予客户端访问目标 VPC1.根据您的应用场景,使用以下命令之一添加授权规则。
对于双向身份验证:
$ aws 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 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 ec2 authorize-client-vpn-ingress --client-vpn-endpoint-id cvpn-endpoint-0ab1cd234ef567ab890 --target-network-cidr 10.0.0.0/16 --access-group-id Engineering
(可选)根据需要在 Client VPN 终端节点上添加到目标网络的其他路由
1.使用以下命令在 Client VPN 终端节点上添加到目标网络的其他路由。
$ aws 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 终端节点配置文件,以分发给客户端
1.下载 Client VPN 终端节点配置文件,以分发给客户端。
对于双向身份验证,将客户端证书和客户端密钥附加到配置文件中:
$ aws ec2 export-client-vpn-client-configuration --client-vpn-endpoint-id cvpn-endpoint-0ab1cd234ef567ab890 --output text>client-config.ovpn