客户端远程连接VPC

本文介绍Linux、Mac、Windows和Android客户端如何通过SSL-VPN远程加密访问专有网络VPC(Virtual Private Cloud)下的资源。

背景信息

本文以下图场景为例,介绍Linux、Mac、Windows和Android客户端如何使用SSL-VPN远程加密访问VPC下的资源。客户端远程接入VPC

前提条件

  • 您已经注册了阿里云账号。如未注册,请先完成账号注册

  • 客户端的私网网段和VPC的私网网段没有重叠。

  • 客户端可以访问互联网。

  • 您已经了解VPC中的云服务器ECS(Elastic Compute Service)实例所应用的安全组规则,并确保安全组规则允许客户端访问云上资源。具体操作,请参见查询安全组规则添加安全组规则

配置流程

客户端连接VPC流程图

步骤一:创建VPN网关

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

  3. VPN网关(包月)页面,根据以下信息配置VPN网关,然后单击立即购买并完成支付。

    名称

    说明

    实例名称

    输入VPN网关的实例名称。

    资源组

    选择VPN网关实例所属的资源组。

    如果不选择,VPN网关实例创建完成后归属于默认资源组。

    您可以在资源管理控制台管理资源组资源。更多信息,请参见什么是资源管理

    地域和可用区

    选择VPN网关的地域。

    说明

    确保VPC的地域和VPN网关的地域相同。

    网关类型

    选择待创建的VPN网关类型。本文选择普通型

    网络类型

    选择VPN网关实例的网络类型。本文选择公网

    隧道

    系统直接展示当前地域支持的IPsec-VPN连接的隧道模式。

    VPC

    选择待连接的VPC。

    虚拟交换机

    从VPC实例中选择一个交换机实例。

    • IPsec-VPN连接的隧道模式为单隧道时,您仅需要指定一个交换机实例。

    • IPsec-VPN连接的隧道模式为双隧道时,您需要指定两个交换机实例。

      IPsec-VPN功能开启后,系统会在两个交换机实例下各创建一个弹性网卡ENI(Elastic Network Interfaces),作为使用IPsec-VPN连接与VPC流量互通的接口。每个ENI会占用交换机下的一个IP地址。

    说明
    • 系统默认帮您选择第一个交换机实例,您可以手动修改或者直接使用默认的交换机实例。

    • 创建VPN网关实例后,不支持修改VPN网关实例关联的交换机实例,您可以在VPN网关实例的详情页面查看VPN网关实例关联的交换机、交换机所属可用区以及交换机下ENI的信息。

    虚拟交换机2

    从VPC实例中选择第二个交换机实例。

    IPsec-VPN连接的隧道模式为单隧道时,无需配置该项。

    带宽规格

    选择VPN网关的带宽规格,单位:Mbps。

    IPsec-VPN

    是否开启IPsec-VPN功能。本文选择关闭

    SSL-VPN

    是否开启SSL-VPN功能。本文选择开启

    SSL连接数

    选择需要连接的客户端的数量。

    说明

    开启SSL-VPN功能后才可配置SSL连接数

    计费周期

    选择购买时长。关于计费的更多信息, 请参见计费说明

    服务关联角色

    单击创建关联角色,系统自动创建服务关联角色AliyunServiceRoleForVpn。

    VPN网关使用此角色来访问其他云产品中的资源,更多信息,请参见AliyunServiceRoleForVpn

    若本配置项显示为已创建,则表示您的账号下已创建了该角色,无需重复创建。

  4. 返回VPN网关页面,查看创建的VPN网关。

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

步骤二:创建SSL服务端

  1. 在左侧导航栏,选择网间互联 > VPN > SSL服务端

  2. 在顶部菜单栏,选择SSL服务端的地域。

    说明

    请确保SSL服务端的地域和已创建的VPN网关的地域相同。

  3. SSL服务端页面,单击创建SSL服务端

  4. 创建SSL服务端面板,根据以下信息配置SSL服务端,然后单击确定

    • 名称:输入SSL服务端的名称。

    • 资源组:选择VPN网关所属的资源组。SSL服务端所属的资源组与VPN网关所属的资源组默认保持一致。

    • VPN网关:选择已创建的VPN网关。

    • 本端网段:以CIDR地址块的形式输入要连接的VPC网络的网段。

      单击添加本端网段可添加多个本端网段,本端网段可以是任何VPC或交换机的网段,也可以是本地网络的网段。

    • 客户端网段:以CIDR地址块的形式输入客户端连接服务端时使用的网段。

      重要
      • 客户端网段的子网掩码位数在16至29位之间。

      • 请确保客户端网段和本端网段不冲突。

      • 在指定客户端网段时,建议您使用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. 在左侧导航栏,选择网间互联 > VPN > SSL客户端

  2. SSL客户端页面,单击创建SSL客户端

  3. 创建SSL客户端证书面板,输入客户端证书名称,然后选择SSL服务端所属的资源组并选择对应的SSL服务端,然后单击确定

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

步骤四:配置客户端

以下内容为您介绍如何配置Linux、Windows、Mac和Android客户端。

Linux客户端

  1. 打开命令行窗口。

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

    #CentOS系统执行以下命令
    yum install -y openvpn
    #执行以下命令查看系统是否已创建/etc/openvpn/conf/目录,如果系统未创建,需手动创建/etc/openvpn/conf/目录。
    cd /etc/openvpn #进入openvpn目录下
    ls              #查看openvpn目录下是否已创建conf目录
    mkdir -p /etc/openvpn/conf #如果openvpn目录下不存在conf目录,手动创建conf目录。
    
    #Ubuntu系统执行以下命令
    apt-get update
    apt-get install -y openvpn
    #执行以下命令查看系统是否已创建/etc/openvpn/conf/目录,如果系统未创建,需手动创建/etc/openvpn/conf/目录。
    cd /etc/openvpn #进入openvpn目录下
    ls              #查看openvpn目录下是否已创建conf目录
    mkdir -p /etc/openvpn/conf #如果openvpn目录下不存在conf目录,手动创建conf目录。
  3. 将已下载的SSL客户端证书解压拷贝至/etc/openvpn/conf/目录。

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

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

Windows客户端

  1. 下载并安装OpenVPN客户端(Windows版本)

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

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

  3. 启动OpenVPN客户端,单击Connect建立VPN连接。

Mac客户端(Tunnelblick)

以下内容为您介绍如何使用Tunnelblick软件在Mac客户端与VPN网关之间建立VPN连接。

  1. 下载Tunnelblick软件。

    本文使用4.0.1版本的Tunnelblick软件作为示例,您可以根据实际需要下载适用的版本,推荐使用最新的正式版本。推荐下载dmg格式的文件,可以直接安装使用。

  2. 安装Tunnelblick软件。

    image

    序号

    说明

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

    双击Tunnelblick图标。

    选择我有配置文件

    单击确定

  3. 将在步骤三中下载的SSL客户端证书解压。

  4. 将已解压的config.ovpn文件上传至Tunnelblick软件,建立VPN连接。

    image

    序号

    说明

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

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

    选择只是我

    单击连接

Mac客户端(OpenVPN)

以下内容为您介绍如何使用OpenVPN软件在Mac客户端与VPN网关之间建立VPN连接。

  1. 打开命令行窗口。

  2. 如果您的客户端尚未安装homebrew,执行以下命令安装homebrew。

    /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
  3. 执行以下命令安装OpenVPN客户端。

    brew install openvpn
  4. 将在步骤三中下载的SSL客户端证书解压拷贝至配置目录。

    1. 备份/usr/local/etc/openvpn文件夹下的所有配置文件。

    2. 执行以下命令删除OpenVPN的配置文件。

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

      cp cert_location /usr/local/etc/openvpn/

      cert_location步骤三中下载的SSL客户端证书的路径,例如:/Users/example/Downloads/certs6.zip

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

    cd  /usr/local/etc/openvpn/
    unzip /usr/local/etc/openvpn/certs6.zip
  6. 执行以下命令建立VPN连接。

    sudo /usr/local/opt/openvpn/sbin/openvpn --config /usr/local/etc/openvpn/config.ovpn

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

步骤五:测试连通性

在客户端尝试访问VPC内的ECS实例,测试网络连通性。

常见问题

使用OpenVPN在Mac客户端建立VPN连接后,如何断开VPN连接?

  1. 打开Mac客户端的命令行窗口。

  2. 执行以下命令搜索OpenVPN进程,并记录进程号。

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

    kill -9 <进程号>

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

如果您使用的是M1版本的Mac客户端,建议您使用Tunnelblick软件建立VPN连接。具体操作,请参见Mac客户端(Tunnelblick)

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

使用Linux客户端建立VPN连接后,配置以下命令,OpenVPN进程将在Linux客户端开机后自动启动。

  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