使用SSL-VPN实现客户端访问VPC时,如果一个VPN网关下连接了多个客户端,除了可以实现多个客户端同时与VPC相互通信,多个客户端之间默认也支持相互通信。
场景示例
某公司因业务发展需要拓展服务器资源,公司计划在阿里云侧部署服务器以节省物理设备成本。阿里云侧服务器部署完成后,企业需要一个解决方案,满足以下网络连通诉求:
本地服务器(客户端2、客户端3)与VPC内服务器可以实现私网互通以完成业务交互
出差的员工(客户端1)可以远程访问公司内网(私网)所有服务器资源
SSL-VPN可以满足该企业的网络连通诉求。在VPC下创建一个VPN网关,分别在客户端1、客户端2、客户端3中安装VPN软件,经过配置后,使客户端1、客户端2、客户端3均与VPC建立SSL-VPN连接,即可快速实现客户端1、客户端2、客户端3、ECS实例之间的加密私网互通,任意两个节点之间均能相互通信,满足企业的网络连通诉求。
前提条件
操作步骤
步骤一:创建VPN网关
- 登录VPN网关管理控制台。
在VPN网关页面,单击创建VPN网关。
在VPN网关(包月)页面,根据以下信息配置VPN网关,然后单击立即购买并完成支付。
地域和可用区:选择VPN网关实例的地域。 本文选择华东1(杭州)。
说明确保VPN网关实例的地域和VPC实例的地域相同。
网关类型:需选择普通型。
网络类型:需选择公网。
VPC:选择VPC实例。
虚拟交换机1:从VPC实例中选择一个交换机实例。
虚拟交换机2:从VPC实例中选择第二个交换机实例。
在支持多可用区的地域,您需要从VPC实例下指定两个分布在不同可用区的交换机实例。每个交换机实例下需要拥有一个空闲的IP地址。如果交换机不满足需求,需新建交换机实例。
IPsec-VPN:关闭IPsec-VPN功能。
SSL-VPN:开启SSL-VPN功能。
SSL连接数:选择需要连接的客户端的数量。
以上仅列举本文强相关的配置,其余配置项保持默认值或为空。更多信息,请参见创建和管理VPN网关实例。
返回VPN网关页面,查看创建的VPN网关实例。
刚创建好的VPN网关实例的状态是准备中,约1~5分钟会变成正常状态。正常状态就表明VPN网关实例已完成初始化,可以正常使用。
步骤二:创建SSL服务端
在左侧导航栏,选择 。
在顶部菜单栏,选择SSL服务端的地域。
说明需确保SSL服务端的地域和已创建的VPN网关实例的地域相同。
在SSL服务端页面,单击创建SSL服务端。
在创建SSL服务端面板,根据以下信息配置SSL服务端,然后单击确定。
VPN网关:选择已创建的VPN网关实例。
本端网段:以CIDR地址块的形式输入要访问的VPC实例的网段。本文输入192.168.0.0/16。
客户端网段:以CIDR地址块的形式输入客户端访问VPC实例时使用的网段。本文输入10.0.99.0/24。
重要客户端网段的子网掩码位数在16至29位之间。
请确保客户端网段与本端网段、VPC网段以及与客户端终端关联的任何路由网段均没有重叠。
在指定客户端网段时,建议您使用10.0.0.0/8、172.16.0.0/12和192.168.0.0/16网段及其子网网段。如果您的客户端网段需要指定为公网网段,您需要将公网网段设置为VPC的用户网段,以确保VPC可以访问到该公网网段。关于用户网段的更多信息,请参见什么是用户网段?和如何配置用户网段?。
创建SSL服务端后,系统后台会自动将客户端网段的路由添加在VPC实例的路由表中,请勿再手动将客户端网段的路由添加到VPC实例的路由表,否则会导致SSL-VPN连接流量传输异常。
以上仅列举本文强相关的配置,其余配置项保持默认值或为空。更多信息,请参见创建和管理SSL服务端。
步骤三:创建SSL客户端并下载证书
根据以下操作,分别为客户端1、客户端2、客户端3创建SSL客户端并下载证书。
在左侧导航栏,选择 。
在SSL客户端页面,单击创建SSL客户端。
在创建SSL客户端面板,输入SSL客户端的名称,选择已创建的SSL服务端,然后单击确定。
在SSL客户端页面,找到已创建的SSL客户端,然后在操作列单击下载证书。
将下载的SSL客户端证书保存在您的本地,后续用于配置客户端。
步骤四:配置客户端
根据以下操作,分别为客户端1、客户端2、客户端3安装VPN软件和SSL客户端证书,然后与VPC建立SSL-VPN连接。
本文中客户端1和客户端2使用Windows Server 2025 数据中心版 64位系统,客户端3使用Ubuntu 24.04 64位系统。如果您的客户端使用的是macOS系统或Android系统,请参见配置客户端进行操作。
配置客户端1和客户端2
登录客户端,在客户端中下载并安装OpenVPN客户端(Windows版本)。如果出现网页打不开的情况,请联系客户经理或阿里云工程师。
将已经下载的SSL客户端证书解压拷贝至OpenVPN\config目录。
本文将证书解压拷贝到C:\Program Files\OpenVPN\config目录,请您根据安装路径将证书解压拷贝至您真实的目录。
启动OpenVPN客户端,单击Connect,与VPC建立SSL-VPN连接。
配置客户端3
登录客户端,并打开命令行窗口。
执行以下命令安装OpenVPN客户端,并创建
conf
目录。apt-get update apt-get install -y openvpn mkdir -p /etc/openvpn/conf
将已下载的SSL客户端证书解压拷贝至/etc/openvpn/conf/目录。
进入/etc/openvpn/conf/目录,执行以下命令,与VPC建立SSL-VPN连接。
openvpn --config /etc/openvpn/conf/config.ovpn --daemon
完成上述配置后,登录VPN网关管理控制台,在SSL服务端详情页面查看系统为客户端分配的虚拟IP地址,客户端将使用虚拟IP地址与VPC通信,以及与其他客户端通信。
步骤五:测试连通性
SSL-VPN连接成功建立后,在安全组规则或者服务器访问控制规则允许的情况下,客户端1、客户端2、客户端3、ECS实例任意两个节点之间均可以实现相互通信。本文以验证客户端1与客户端2、客户端3、ECS实例之间的连通性为例,验证客户端之间的连通性,以及客户端与VPC之间的连通性,其余连通性测试场景文档不再赘述。
测试连通性前,请确保客户端1、客户端2、客户端3的访问控制规则以及ECS实例的安全组规则已经放开ICMP协议,允许客户端网段下的节点访问。
客户端1访问客户端2、客户端3、ECS实例。
登录客户端1,打开Command Prompt窗口。
在Command Prompt窗口执行
ping <客户端虚拟IP地址或ECS IP地址> -S <客户端1虚拟IP地址>
命令,指定使用客户端1虚拟IP地址分别访问客户端2、客户端3、ECS实例。如果客户端1能收到如下所示的回复报文,则证明客户端1可以正常访问客户端2、客户端3、ECS实例。
分别登录客户端2、客户端3、ECS实例,执行命令测试是否可以正常访问客户端1。如果可以正常收到回复报文,则证明ECS实例、客户端2、客户端3与客户端1之间可以相互通信。
客户端2访问客户端1
ipconfig:查看客户端的虚拟IP地址
ping <客户端1虚拟IP地址> -S <客户端2虚拟IP地址>
:使用客户端2虚拟IP地址访问客户端1
客户端3访问客户端1
ifconfig:查看客户端的虚拟IP地址
ping <客户端1虚拟IP地址> -I <客户端3虚拟IP地址>
:使用客户端3虚拟IP地址访问客户端1
ECS实例访问客户端1
ifconfig:查看客户端的虚拟IP地址
ping <客户端1虚拟IP地址>
常见问题
如果一个VPN网关下同时存在IPsec-VPN连接和SSL-VPN连接,本地数据中心和客户端之间支持通信么?
支持。
需要在本地数据中心添加去往客户端网段的路由,在SSL服务端的本端网段中添加本地数据中心的网段。