本文为您介绍 Linux、Mac、Windows 客户端如何通过 OpenVPN 连接到 VPC 私有网络。

前提条件

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

    说明

    如果网络地址存在重叠,您可以将云平台中的私有网络与 VPC 网络断开,再重新连接至该 VPC 网络,并重新给私有网络指定一个网络地址。

  • 客户端能够访问互联网。

操作步骤

步骤一:启用 OpenVPN 服务

  1. 登录企业云平台 Console。

  2. 在 Console 导航栏中,选择产品与服务 > 网络服务 > VPC 网络,进入VPC 网络页面。

  3. 点击目标 VPC 网络,进入 VPC 网络的详情页面。点击管理配置标签,进入 VPC 网络的管理配置页面。

  4. 点击管理配置页面左侧的导航栏的 VPN 服务,进入 VPN 服务管理页面。

    vpc_configure_openvpn
  5. 点击打开 Open VPN,弹出对话框。用户根据页面提示,配置 OpenVPN 参数,点击提交

    参数 说明

    端口

    服务运行端口。取值范围在 1~65535 之间,默认 1194

    协议

    VPN 连接使用的协议。支持 UDPTCP,默认 UDP

    验证方式

    客户端连接时的认证方式。

    • 支持 证书用户名/密码 以及 证书+用户名/密码 的方式。

    • 企业云平台推荐使用 证书证书+用户名/密码 的认证方式,以获得更高的安全性。

    • 若选择使用包含 用户名/密码证书+用户名/密码 的认证方式,还需要添加对应的可授权账户列表。

    网络地址

    VPN 网络地址。

    说明

    VPN 网络地址不能跟您的本地网络存在冲突。

    附加配置

    推送网络配置到客户端。

    例如配置 push "192.168.10.0 255.255.255.0",则当客户端向 VPN 服务器请求建立连接成功后,客户端将添加此处配置的路由信息。

  6. 若上一步参数填写中使用了 用户名/密码证书+用户名/密码 的验证方式,则此处还需点击添加账户,配置账户信息并提交。

    参数 说明

    账户

    用户名中不能包含特殊字符,只能包含大小写字母或者数字,或者 -_.

    密码

    密码至少 8 位,并包括大小写字母及数字。

    IP 地址

    为用户分配 IP 地址。可选 自动分配 或为账户 指定 IP

    说明

    OpenVPN 支持为账户指定 /30 网段内的有效 IP 地址。若输入的 IP 地址无效,系统将会尝试替换为最近的有效 IP 地址。

  7. 配置完成后,点击 VPC 网络的管理配置页面右上方的应用修改,更新 VPC 配置。

  8. 前往 VPC 网络使用的安全组规则中放行 OpenVPN 服务器的运行端口。如本文中配置的协议为 UDP,端口为 1194,则需要放行 UDP 下行 1194 端口。

    openvpn_sg_rule

步骤二:配置 OpenVPN 客户端

本文以 证书 的验证方式为例介绍客户端配置的相关操作。若您使用了 用户名/密码 的验证方式,请参考附录相关内容。

启用 OpenVPN 服务后,将出现下载证书的按钮,如下图所示。

openvpn_config_done

点击下载证书,即可获取到文件名为 <vpc_id>-certs.zip 的 zip 包, 里面有配置 OpenVPN 客户端的必备的证书密钥文件:

  • <vpc_id>.crt:SSL 客户端证书

  • <vpc_id>.key: SSL 客户端私钥

  • <vpc_id>.takey:OpenVPN TLS Auth 密钥

  • yunify-ca.crt:云平台 CA 根证书

除以上四个文件, zip 包中还包含了客户端配置文件样例,可作为参考:

  • <vpc_id>.ovpn:Windows/Mac 配置文件

  • <vpc_id>.conf:Linux 配置文件

下文将详细介绍不同操作系统的客户端如何配置。

  • Windows 客户端

    1. 点击下载证书 (Windows),下载证书文件包 <vpc_id>-certs.zip 至本地,并进行解压。

    2. 下载并安装 Windows 版本的 OpenVPN 客户端

      说明
      • 推荐使用官方 OpenVPN 客户端 v2.3.6 及以上版本。

      • 按照默认选项安装即可。如非必要,请勿自主勾选选项。缺省情况下,OpenVPN 将被安装至 C:\Program Files\OpenVPN 目录中。

    3. 将上述步骤中下载的证书文件包解压后的所有文件拷贝到 C:\Program Files\OpenVPN\config 目录中。

    4. 打开配置样例文件 rtr-xxxxxxxx.ovpn,参考以下内容进行修改并保存。

      配置示例

      client
      dev tun
      proto <udp>
      remote <your-router-eip> (1194)
      resolv-retry infinite
      nobind
      persist-key
      persist-tun
      ca yunify-ca.crt
      cert <rtr-xxxxxxxx.crt>
      key <rtr-xxxxxxxx.key>
      tls-auth <rtr-xxxxxxxx.takey> 1
      cipher AES-256-CBC
      comp-lzo
      mssfix 1400

      配置说明

      • <udp> 需要根据实际情况替换为 OpenVPN 配置的协议类型。

      • <1194> 需要根据实际情况替换为 OpenVPN 配置的端口号。

      • 证书文件 <rtr-xxxxxxxx.crt><rtr-xxxxxxxx.key> 以及 <rtr-xxxxxxxx.takey> 需要根据下载的证书密钥文件名修改。

      • <your-router-eip> 需要替换为 VPC 网络的公网 IP 地址。

    5. 启动 OpenVPN 客户端,在任务栏右下角点击 OpenVPN 图标 ,然后点击连接建立 VPN 连接。

      win oneopenvpn connect
  • Linux 客户端

    以下操作以 Ubuntu 系统为例进行描述,其他 Linux 版操作方法类似。

    1. 点击下载证书 (Linux),下载证书文件包 <vpc_id>-certs.zip 至本地,并进行解压。

    2. 执行以下命令行,安装 OpenVPN。

      sudo apt-get install openvpn
    3. 将上述步骤中下载的证书文件包解压后的所有文件拷贝至 /etc/openvpn 目录中。

    4. 打开配置样例文件 rtr-xxxxxxxx.conf,参考以下内容进行修改并保存。

      配置示例

      client
      dev tun
      proto <udp>
      remote <your-router-eip> 1194
      resolv-retry infinite
      nobind
      user <nobody>
      group <nogroup>
      persist-key
      persist-tun
      ca yunify-ca.crt
      cert <rtr-xxxxxxxx.crt>
      key <rtr-xxxxxxxx.key>
      tls-auth <rtr-xxxxxxxx.takey> 1
      cipher AES-256-CBC
      comp-lzo
      mssfix 1400

      配置说明

      • <udp> 需要根据实际情况替换为 OpenVPN 配置的协议类型。

      • <1194> 需要根据实际情况替换为 OpenVPN 配置的端口号。

      • 证书文件 <rtr-xxxxxxxx.crt><rtr-xxxxxxxx.key> 以及 <rtr-xxxxxxxx.takey> 需要根据下载的证书密钥文件名修改。

      • <your-router-eip> 需要替换为 VPC 网络的公网 IP 地址。

      • <nobody><nogroup> 用于定义运行 OpenVPN 的用户及用户组,请分别查询您本地系统的 /etc/password/etc/group 文件。

    5. 执行以下命令连接 VPN。

      sudo service openvpn start
  • Mac 客户端(Tunnelblick)

    1. 点击下载证书 (Mac),下载证书文件包 <vpc_id>-certs.zip 至本地。

    2. 下载并安装 Tunnelblick

    3. 将上述步骤中下载的证书文件包解压至同一目录中。并打开后缀为 .ovpn 的配置文件,参考以下内容进行修改。

      配置样例

      client
      dev tun
      proto <udp>
      remote <your-router-eip> 1194
      resolv-retry infinite
      nobind
      user <nobody>
      group <nogroup>
      persist-key
      persist-tun
      ca yunify-ca.crt
      cert <rtr-xxxxxxxx.crt>
      key <rtr-xxxxxxxx.key>
      tls-auth <rtr-xxxxxxxx.takey.key> 1
      cipher AES-256-CBC
      comp-lzo
      mssfix 1400

      配置说明

      • <udp> 需要根据实际情况替换为 OpenVPN 配置的协议类型。

      • <1194> 需要根据实际情况替换为 OpenVPN 配置的端口号。

      • 证书文件 <rtr-xxxxxxxx.crt><rtr-xxxxxxxx.key> 以及 <rtr-xxxxxxxx.takey.key> 需要根据下载的证书密钥文件名修改。

      • <your-router-eip> 需要替换为 VPC 网络的公网 IP 地址。

      • <nobody><nogroup> 用于定义运行 OpenVPN 的用户及用户组,请分别查询您本地系统的 /etc/password/etc/group 文件。

    4. 在 Tunnelblick 面板中添加 .ovpn 配置文件,或双击 .ovpn 文件便可将其配置添加到 Tunnelblick,随后便可以发起 VPN 连接。

      tunnelblick connect
  • Mac 客户端(OpenVPN)

    1. 点击下载证书 (Mac),下载证书文件包 <vpc_id>-certs.zip 至本地并解压。

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

      brew install openvpn
    3. 执行以下命令行,删除 OpenVPN 默认配置文件。

      rm /usr/local/etc/openvpn/*
    4. 将上述步骤中下载的证书文件包解压后的所有配置文件拷贝至 /usr/local/etc/openvpn/ 目录。<rtr-xxx-certs> 需根据实际情况替换为配置文件解压目录。

      cp <rtr-xxx-certs> /usr/local/etc/openvpn/
    5. 打开后缀为 .ovpn 的配置文件,参考以下内容进行修改。

      配置样例

      client
      dev tun
      proto <udp>
      remote <your-router-eip> 1194
      resolv-retry infinite
      nobind
      user <nobody>
      group <nogroup>
      persist-key
      persist-tun
      ca yunify-ca.crt
      cert <rtr-xxxxxxxx.crt>
      key <rtr-xxxxxxxx.key>
      tls-auth <rtr-xxxxxxxx.takey.key> 1
      cipher AES-256-CBC
      comp-lzo
      mssfix 1400

      配置说明

      • <udp> 需要根据实际情况替换为 OpenVPN 配置的协议类型。

      • <1194> 需要根据实际情况替换为 OpenVPN 配置的端口号。

      • 证书文件 <rtr-xxxxxxxx.crt><rtr-xxxxxxxx.key> 以及 <rtr-xxxxxxxx.takey.key> 需要根据下载的证书密钥文件名修改。

      • <your-router-eip> 需要替换为 VPC 网络的公网 IP 地址。

      • <nobody><nogroup> 用于定义运行 OpenVPN 的用户及用户组,请分别查询您本地系统的 /etc/password/etc/group 文件。

    6. 执行以下命令发起 VPN 连接。

      sudo /usr/local/opt/openvpn/sbin/openvpn --config /usr/local/etc/openvpn/<rtr-xxxxxxxx>.ovpn

附录

用户名/密码验证

若用户的 OpenVPN 开启了 用户名/密码 的验证方式,在每次进行连接的时候,用户需要手动输入用户名和密码。用户也可以通过以下方式,将用户名与密码写入配置文件中,从而无须在每次连接时手动输入密码。详细操作方式如下。

  1. 在客户端的配置文件中新增 auth-user-pass password.txt, 其中 password.txt 是用于保存 用户名/密码 信息的文件。

    配置示例

    client
    dev tun
    proto <udp>
    remote <your-router-eip> 1194
    resolv-retry infinite
    nobind
    user nobody
    group nogroup
    persist-key
    persist-tun
    ca yunify-ca.crt
    cert <rtr-xxxxxxxx.crt>
    key <rtr-xxxxxxxx.key>
    tls-auth <rtr-xxxxxxxx.takey.key> 1
    auth-user-pass password.txt
    cipher AES-256-CBC
    comp-lzo
    mssfix 1400

    配置说明

    如果是 Mac 系统,不需要 password.txt 文件,配置文件中 auth-user-pass 字段后不需要写文件名,只保留 auth-user-pass 字段即可。连接 VPN 时,系统会提示输入账号密码,并支持保存到 Mac 系统的 Keychain 中。

  2. password.txt 文件中,添加用户名及密码。password.txt 文件样例如下,用户名和密码需分为两行存放。

    <user_name>
    <password>

如何让 OpenVPN 客户端启用服务端推送的 DNS 配置

VPC 内网配置的域名解析,通过 VPN 拨入到本地生效,无需手动去配置 Hosts 解析,以下是具体案例的实践过程。

  1. 配置内网解析的域名如下。

    openvpn dns push 01
  2. 修改 VPN 服务的配置,在附加配置里增加以下内容。push 的路由需要按照指定的格式进行填写。

    push "route 172.20.0.0 255.255.0.0"
    push "dhcp-option DNS 172.20.255.254"
  3. 本地拨入 VPN 以后查看是否生效,如果没有生效,可参考以下内容,刷新 DNS 缓存。

    ipconfig /flushdns
  4. 如截图所示,解析已经生效。

    openvpn dns push 02
  5. 如内网 DNS 配置没有生效,需要离开私有网络后再重新加入私有网络,并手动指定内网 IP 地址,或者参考以下格式,手动更改配置文件 /etc/resolv.conf 的内容。

    [root@i-tqzv58ti ~]# cat /etc/resolv.conf
    # Generated by NetworkManager
    search localdomain pek3.qingcloud.com
    nameserver 172.20.255.254