客户端通过SSL-VPN远程加密访问VPC

如果您的业务部署在云上,需要通过互联网加密访问云上内网资源时,可以使用SSL-VPN。例如远程办公场景中,客户端可以使用SSL-VPN加密访问内部OA系统、文件服务器等。本文以客户端访问云上的1台ECS为例,帮助您快速熟悉SSL-VPN的操作使用方法。

说明

本文会分别介绍Windows、Linux、Android、macOS系统的客户端配置方法,如果您的客户端设备是iPhone手机,请查看使用手机(iOS系统)自带的VPN软件建立远程连接

场景示例

如图,假设您已经在云上部署了1台ECS,计划将本地客户端设备与ECS内网互通。那么您可以在ECS所属的VPC中部署配置SSL-VPN网关,实现本地客户端与VPC内网互通。

image

配置前您需要先规划好网段和IP地址,本文规划示例如下:

  • VPC:

    • 地域:华东1(杭州)

    • 网段:10.0.0.0/16

    • 交换机1,位于可用区J,网段:10.0.0.0/24

    • 交换机2,位于可用区K,网段:10.0.1.0/24

    • ECS:地址为10.0.0.1,操作系统为Alibaba Cloud Linux 3.2104 LTS 64位

  • 计划分配的客户端网段:192.168.0.0/16。

    建立连接后,VPN网关将从这个网段中给客户端虚拟网卡分配IP地址,注意不是指客户端已有的内网网段。

重要

如果您自行规划资源,注意要满足如下条件:

  • 在VPC支持多个可用区的地域,为保证跨可用区高可用性,VPC需至少在2个不同的可用区中存在交换机。如果不满足条件,请先创建交换机

  • 计划分配的客户端网段,不能和交换机网段、本地客户端设备关联的路由冲突。

第1步:配置SSL-VPN网关

在将客户端连接到VPC之前,您需要先将SSL-VPN网关部署到VPC中。

创建VPN网关

  1. 登录VPN网关管理控制台。在VPN网关页面,单击创建VPN网关

    image

  2. VPN网关(包月)页面,按照如下信息进行配置,其他配置项保持默认,然后单击立即购买并完成支付。

    配置项

    截图

    实例名称:VPN网关1。

    地域和可用区:华东1(杭州)。

    网关类型:普通型。

    VPC:选择客户端要连接的VPC。

    虚拟交换机1: 交换机1。

    虚拟交换机2: 交换机2。

    带宽规格:5Mbps。

    IPsec-VPN:关闭。

    SSL-VPN:开启。

    SSL连接数:5。

    计费周期:1个月。(最小选择1个月)

    服务关联角色:单击创建服务关联角色。(若本配置项显示为已创建,则表示您的账号下已创建了该角色)

    image

    image

  3. 回到VPN网关管理控制台页面,您可以看到已创建的VPN网关。

    image

    刚创建好的VPN网关的状态是准备中,约1~5分钟会变成正常状态。正常状态就表明VPN网关已完成初始化,可以正常使用。

创建SSL服务端

SSL服务端用于控制客户端可以访问哪些网络和资源。

  1. 在左侧导航栏,选择网间互联 > VPN > SSL服务端;在顶部菜单栏,选择华东1(杭州)地域;在SSL服务端页面,单击创建SSL服务端image

  2. 创建SSL服务端面板,根据以下信息配置SSL服务端,其他选项保持默认,然后单击确定

    名称:SSL服务端1

    VPN网关:选择上一步创建的“VPN网关1”

    本端网段:直接输入VPC的网段10.0.0.0/16。

    客户端网段:输入192.168.0.0/16。

    说明

    本端网段:客户端通过SSL-VPN连接要访问的地址段。

    客户端网段:给客户端虚拟网卡分配访问地址的网段,不是指客户端已有的内网网段,不可和本端网段重叠。

    image

创建SSL客户端并下载证书

SSL客户端负责客户端证书管理,1个客户端对应1个证书。证书用于对客户端进行身份验证以及数据加密,您需要先下载证书,再将证书导入到客户端中。

  1. 在左侧导航栏,选择网间互联 > VPN > SSL客户端。顶部菜单栏,确认地域为华东1(杭州);在SSL客户端页面,单击创建SSL客户端

    image

  2. 创建SSL客户端证书面板,名称输入SSL客户端1SSL服务端选择SSL服务端1,然后单击确定

    image

  3. SSL客户端页面,找到已创建的SSL客户端,然后在操作列单击下载证书

    image

第2步:配置客户端

请您根据客户端的实际操作系统,选择查看对应的配置方法。

Windows客户端

  1. 下载并安装OpenVPN客户端(Windows版本)如果出现网页打不开的情况,请联系客户经理或阿里云工程师。

  2. 将已经下载的SSL客户端证书解压拷贝至OpenVPN\config目录。

    image

    本文将证书解压拷贝到C:\Program Files\OpenVPN\config目录,请您根据安装路径将证书解压拷贝至您真实的目录。

  3. 在桌面上双击OpenVPN GUI图标启动,启动后会在桌面右下角托盘处新增VPN图标。在托盘图标上右键,然后单击Connect建立VPN连接。

    image

  4. 如果显示State为Connected,且分配了IP,则证明已建立连接。

    image

Linux客户端

  1. 执行以下命令安装OpenVPN客户端,并创建conf目录。

    CentOS
    yum install -y openvpn
    mkdir -p /etc/openvpn/conf
    Ubuntu
    apt-get update
    apt-get install -y openvpn
    mkdir -p /etc/openvpn/conf
  2. 将已下载的SSL客户端证书解压拷贝至/etc/openvpn/conf/目录。

    image

  3. 进入/etc/openvpn/conf/目录,执行以下命令建立VPN连接。

    openvpn --config /etc/openvpn/conf/config.ovpn --daemon

Android客户端

  1. 下载并安装OpenVPN客户端(Android版本)如果出现网页打不开的情况,请联系客户经理或阿里云工程师。

    本文使用Android 9.0版本的客户端,并安装了3.0.5版本的OpenVPN客户端。

  2. 将已下载的SSL客户端证书传输至Android设备,并解压证书。

    说明
    • 如果您的Android设备无解压软件,您可以在电脑端解压证书然后将解压后的文件传输至Android客户端。

    • 请确保解压后的文件在同一个文件夹下,如下图所示。

    文件保存位置

  3. 打开OpenVPN客户端,导入config.ovpn文件,添加VPN连接。

    导入config文件

    序号

    说明

    选择OVPN Profile连接方式。

    在存储目录中找到config.ovpn文件。

    单击IMPORT,导入config.ovpn文件。

    系统自动读取config.ovpn文件中的信息,显示待连接的VPN网关的公网IP地址。单击ADD,添加VPN连接。

  4. 单击滑动按钮,开启VPN连接。

    开启OpenVPN

Mac客户端(图形界面)

  1. 打开Tunnelblick Releases页面,找到Tunnelblick 4.0.1 (build 5971)版本,在Assets面板中下载.dmg格式的文件。如果出现网页打不开的情况,请联系客户经理或阿里云工程师。

    image

  2. 安装Tunnelblick软件。

    image

    序号

    说明

    双击已下载的Tunnelblick软件安装包。

    双击Tunnelblick图标。

    选择我有配置文件

    单击确定

  3. 先将已下载的SSL客户端证书解压,再将已解压的config.ovpn文件拖动至配置面板下,建立VPN连接。

image

序号

说明

在启动台中单击Tunnelblick图标,打开Tunnelblick软件。

将已解压的文件config.ovpn拖动至配置面板下。

选择只是我

单击连接

Mac客户端(命令行)

  1. 打开Terminal命令行窗口,如果您的客户端尚未安装homebrew,执行以下命令安装Homebrew。

    说明

    因Homebrew的安装脚本中包含sudo命令,中途会提示您输入管理员密码。当出现“Press RETURN/ENTER to continue...”时,按下Enter键继续。

    /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

    image

  2. 执行以下命令安装OpenVPN客户端。

    brew install openvpn

    image

  3. 将已下载的SSL客户端证书解压拷贝至配置目录。

    1. 备份/opt/homebrew/etc/openvpn目录。

      cp -r  /opt/homebrew/etc/openvpn /opt/homebrew/etc/openvpn_bak
    2. 执行以下命令删除OpenVPN当前的配置文件。

      rm /opt/homebrew/etc/openvpn/*
    3. 执行以下命令将已经下载的SSL客户端证书拷贝到配置目录。

      cp /path/to/certs.zip /opt/homebrew/etc/openvpn/
      说明

      /path/to/certs.zip是创建SSL客户端步骤中已下载的SSL客户端证书的路径,通常在当前用户的Downloads目录下,例如/Users/example/Downloads/certs.zip

  4. 执行以下命令解压证书。

    cd /opt/homebrew/etc/openvpn/
    unzip /opt/homebrew/etc/openvpn/certs.zip
  5. 选择运行方式。

    前台运行

    您可以执行如下命令启动客户端进程,建立VPN连接:

    sudo /opt/homebrew/opt/openvpn/sbin/openvpn --config /opt/homebrew/etc/openvpn/config.ovpn

    执行该命令后,该命令会保持在前台运行,当您需要断开连接时,请输入Ctrl+C终止如上命令。

    后台运行

    执行如下命令,使VPN客户端进程以服务的方式在后台运行,并开机自动启动:

    cp config.ovpn openvpn.conf
    sudo brew services start openvpn

    当需要停止运行时,请执行如下命令:

    sudo brew services stop  openvpn

第3步:测试连通性

重要

测试前,请确保ECS的安全组规则允许ICMP协议的流量访问。具体操作,请参见查询安全组规则添加安全组规则

您可以在客户端使用ping命令访问ECS的IP:

ping 10.0.0.1

image

如果能够ping通,则表示客户端已和ECS内网连通。

如果您的客户端操作系统是Android,请单击此处查看验证方法。

  1. 在ECS上安装Nginx,以Alibaba Cloud Linux 3.2104 LTS 64位操作系统的ECS为例:

    yum install -y nginx
    systemctl start nginx.service
  2. ECS的安全组放通TCP80端口。具体操作,请参见查询安全组规则添加安全组规则

  3. 客户端打开浏览器,在地址栏输入ECS的内网IP地址10.0.0.1,如果能访问通,则表示客户端已经能够正常访问云上内网资源。

    image

常见问题

下方列出高频常见问题。更多问题,请查看SSL-VPN连接常见问题

客户端无法成功建立VPN连接怎么办

  1. 确认客户端能够正常访问互联网。

  2. 确认证书文件导入正常。

客户端能成功建立VPN连接,但无法ping通ECS怎么办?

确认ECS的安全组已放通ICMP协议,详情请参见查询安全组规则添加安全组规则

客户端能ping通ECS,但无法访问ECS的端口怎么办?

  1. 确认ECS的服务端口在正常监听。以Linux查看80端口为例:

    image

  2. 确认ECS操作系统自身的防火墙放通了端口。以iptables放行80端口为例:

    iptables -I INPUT -p 80 -j ACCEPT
  3. 确认ECS所在的安全组放通了端口,详情请参见查询安全组规则添加安全组规则

客户端能ping通ECS,但ECS无法ping通客户端怎么办?

一般为客户端操作系统自身的防火墙拦截了ping请求,请在客户端防火墙上进行放通。

Linux或Mac客户端,如何断开VPN连接?

  1. 打开命令行,执行如下命令搜索OpenVPN进程,并记录进程号。

    ps aux | grep openvpn
  2. 执行以下命令关闭OpenVPN进程。

    kill -9 <进程号>

M1版本的Mac客户端如何使用OpenVPN建立VPN连接?

建议您选择使用Mac客户端(图形界面)建立VPN连接。

使用Linux客户端建立VPN连接后,如何使OpenVPN进程开机自动启动?

  1. 编辑/etc/rc.local文件,并在文件中添加命令。

    #以编辑模式打开/etc/rc.local文件
    vim /etc/rc.local 
    #按下i键,进入文件编辑模式,然后在/etc/rc.local文件中补充以下命令
    cd /etc/openvpn/conf/
    openvpn --config /etc/openvpn/conf/config.ovpn --daemon
    #按下Esc键,退出文件编辑模式,然后输入以下命令保存退出文件
    :wq
  2. 为/etc/rc.local文件添加执行权限。

    chmod +x /etc/rc.local