用户指南

VPN 隧道指南

在网络拓扑指南中,我们在零雲中创建了两个私有网络, 并使用了一台路由器来连接和管理它们。 本篇指南旨在介绍如何将您的办公网络或家庭网络或您自己数据中心的网络与零雲中您的私有网络连接在一起, 形成公私兼顾的混合云(hybrid cloud)。

目前零雲支持 OpenVPN 协议。将加入对 IPSec 协议的支持。

总览

在前一章( 网络拓扑指南 )中,我们创建两个私有网络, 分别是开发环境网络 192.168.100.0/24 、生产环境网络 192.168.200.0/24 , 并使用了一台路由器将它们彼此互联,并且将该路由器连接到了 Internet 上(即,分配了一个公网 IP 地址)。

假设您当前位于办公网络,本地网络地址是 192.168.1.0/24 , 下面我们的任务是将零雲中的两个网络与您的本地网络连接。

注解

因为涉及到网络间互联,所以各个网络必须使用不同的网络地址, 否则地址就冲突了。如果存在地址冲突,您可以将零雲私有网络与路由器断开、再重新连接至路由器, 在对话框中重新指定一个网络地址给予您的零雲私有网络。

OpenVPN 隧道服务

登录 WEB 控制台,点击左边导航条中的“网络”,在右边主显示区域 “路由器” 项下点击您的路由器,进入其详情页,切换至“VPN 隧道服务”页签, 然后点击“打开此服务”。

在弹出的对话框里,多数情况下,直接使用缺省配置即可, 不过建议您点开高级选项复查一下各项配置,尤其是 VPN 网络地址不能跟您的本地网络存在冲突。

确认无误后,点击“提交”,然后点击页面上方的“应用修改”(有个黄色箭头在闪烁), 以更新路由器的配置。

另外,还需要去该路由器使用的防火墙规则中打开 VPN 服务器的运行端口, 以上图为例,需要打开 UDP 下行 1194 端口。并记得 应用更改

OpenVPN 客户端

在上一节启用了 OpenVPN 隧道服务后,您会看到一个名为“下载证书”的按钮, 点击该按钮,即可得到一个文件名类似 rtr-1234abcd-certs.zip 的 ZIP 包, 里面有配置 OpenVPN 客户端的必备证书,密钥文件和客户端配置文件样例:

  • rtr-1234abcd.crt: SSL 客户端证书
  • rtr-1234abcd.key: SSL 客户端私钥
  • rtr-1234abcd.takey: OpenVPN TLS Auth 密钥
  • yunify-ca.crt: 零雲 CA 根证书
  • rtr-1234abcd-linux-sample.conf: Linux 系统客户端的配置样例
  • rtr-1234abcd-windows-sample.ovpn: Windows 系统客户端的配置样例

注解

如果配置客户端时遇到问题,可以参考下 zip 包中对应操作系统的配置文件样例。

Windows

第一步,下载 OpenVPN Windows 安装包,并安装它。缺省情况下,OpenVPN 将被安装到 C:\Program Files\OpenVPN 目录中。

第二步,将前面 ZIP 包中的四个文件放入 C:\Program Files\OpenVPN\config 目录中。

第三步,将以下配置保存到 C:\Program Files\OpenVPN\config 目录中,文件名任意, 扩展名为 .ovpn ,比如可以叫做 rtr-1234abcd.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-1234abcd.crt>
key <rtr-1234abcd.key>
tls-auth <rtr-1234abcd.takey> 1
cipher AES-256-CBC
comp-lzo
  

注解

请将以上文件中的 <> 连同扩起来的部分替换成您的配置。如: remote <your-router-eip> 1194 替换为 remote 172.121.25.XXX 1194

第四步,您可以连接了。

Linux

以 Ubuntu Linux 为例子来描述,其他的 Linux 分发版都是类似的做法。

第一步,安装:

$ sudo apt-get install openvpn

第二步,将前面 ZIP 包中的四个文件放入 /etc/openvpn 目录中。

第三步,将以下配置保存到 /etc/openvpn 目录中,文件名任意,扩展名为 .conf , 比如可以叫做 rtr-1234abcd.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-1234abcd.crt>
key <rtr-1234abcd.key>
tls-auth <rtr-1234abcd.takey> 1
cipher AES-256-CBC
comp-lzo

注解

请将以上文件中的 <> 连同扩起来的部分替换成您的配置。如: remote <your-router-eip> 1194 替换为 remote 172.121.25.XXX 1194

其中 user / group 请分别查询您本地 Linux 系统的 /etc/password/etc/group 文件。

第四步,您可以连接了:

$ sudo service openvpn start

PPTP 隧道服务

启动 PPTP 服务

登录 WEB 控制台,点击左边导航条中的“网络”,在右边主显示区域 “路由器” 项下点击您的路由器,进入其详情页,切换至“VPN 服务”页签, 然后点击“打开 PPTP 服务”。

在弹出的对话框里,你需要配置 VPN 用户名和密码, 您也可以点开高级选项复查一下各项配置,尤其是 VPN 网络地址不能跟您的本地网络存在冲突。

确认无误后,点击“提交”,然后点击页面上方的“应用修改”(有个黄色箭头在闪烁), 以更新路由器的配置。

另外,还需要去该路由器使用的防火墙规则中打开 PPTP 服务器的运行端口, 即 TCP 下行 1723 端口。并记得 应用更改 。

PPTP 客户端

Windows XP

对于初次连接的用户,可以先通过以下步骤创建新的网络连接:

  • 第一步:单击 “开始”,选择 “控制面板”,单击 “网络和Internet连接”
  • 第二步:选择 “创建一个到您的工作位置的网络连接”
  • 第三步:选择 “虚拟专用网络连接”,然后单击 “下一步”
  • 第四步:输入公司名(自定义即可),然后单击 “下一步”
  • 第五步:设置服务器地址为路由器的公网地址,单击 “下一步”
  • 第六步:勾选 “在我的桌面上添加一个到此连接的快捷方式”,然后单击 “完成”

VPN 网络连接已经创建的情况下,只需要在桌面上点击该网络连接,在界面上输入 VPN 连接的用户名和密码, 然后点击 “连接” 就可以了。

注意:连接 VPN 之后,默认情况下你本地默认网关会指向 VPN 服务器,即所有流量都会通过 VPN 服务器。 如果这不是你想要的,那么禁用的方法是:

  • 第一步:点击 VPN 连接中的 “属性”,选择 “网络”
  • 第二步:选择 “TCP/IP” 并点击 “属性”
  • 第三步:在常规项中点击 “高级”,将 “在远程网络上使用默认网关” 前面的勾选去掉,点击 “确定”
  • 第四步:断开并重新连接 VPN.

Windows 7

对于初次连接的用户,可以先通过以下步骤创建新的网络连接:

  • 第一步:单击 “开始”,选择 “控制面板”,单击 “网络和Internet”,单击 “网络和共享中心”,
  • 第二步:选择 “设置新的连接或网络”,选择 “连接到工作区”,单击 “下一步”
  • 第三步:选择 “使用我的 Internet 连接(VPN)”
  • 第四步:在 “Internet地址” 处输入路由器的公网IP,”目标名称” 可以自定义,单击 “下一步”
  • 第五步:输入 VPN 连接的用户名和密码,点击 “连接”即可完成。

VPN 网络连接已经创建的情况下,只需要点击桌面右下角的网络连接处,选择并点击相应的网络连接,在界面上输入 VPN 连接的用户名和密码, 然后点击 “连接” 就可以了。

注意:连接 VPN 之后,默认情况下你本地默认网关会指向 VPN 服务器,即所有流量都会通过 VPN 服务器。 如果这不是你想要的,那么禁用的方法是:

  • 第一步:右键对应的 VPN 连接,选择 “属性”
  • 第二步:选择 “网络” 中的 “TCP/IPv4”,然后点击 “属性”
  • 第三步:在常规项中点击 “高级”,将 “在远程网络上使用默认网关” 前面的勾选去掉,点击 “确定”
  • 第四步:断开并重新连接 VPN.

Linux

以 Ubuntu Linux 为例子来描述,其他的 Linux 分发版都是类似的做法。

第一步,安装 PPTP 客户端:

$ sudo apt-get install pptp-linux  

第二步,修改 /etc/ppp/chap-secrets 文件,配置验证所需的用户名和密码,字符串之间用 “\t” 分隔:

<user_name>   pptpd   <password>        *  

注解

请将以上文件中的 <> 连同扩起来的部分替换成您的配置。如:
"<user_name>   pptpd   <password>        *" 替换为 "guest   pptpd   passw0rd        *"

第三步,新建 /etc/ppp/peers/<tunnel> 文件,<tunnel> 是由你定义的一个隧道名称, 例如我们可以叫做 vpn,即这个文件为 /etc/ppp/peers/vpn:

pty "pptp <vpn_server_ip> --nolaunchpppd" 
name <user_name>  
remotename pptpd  
require-mppe-128  
file /etc/ppp/options.pptp  
ipparam <tunnel>  

注解

请将以上文件中的 <> 连同扩起来的部分替换成您的配置。如:
<vpn_server_ip> 替换为路由器的公网IP,
<user_name> 替换为 VPN 连接的用户名,
<tunnel> 替换为你定义的隧道名称,在本例中是 vpn.

第四步,启动 VPN 客户端:

$ pon <tunnel> persist  

注解

请将以上命令行中的 <> 连同扩起来的部分替换成你定义的隧道名称,在本例中是 vpn.

第五步,配置路由规则。如果你希望通过 VPN 来访问路由器内部私有网络里的机器,你还需要手动配置路由规则, 假设你需要访问的私有网络的网络地址为 192.168.10.0/24,相应的路由配置为:

$ ip route add 192.168.10.0/24 dev ppp0  

注解

命令中的 ppp0 为客户端连接的设备名,如果你只有一个 VPN 客户端正在运行,那默认设备一般都是 ppp0,
如果不是,你可以通过 ifconfig 命令来进行查看。

如果你希望在每次启动客户端之后能自动配置路由规则,则你可以将你需要的指令写成脚本,放置在 /etc/ppp/ip-up.d/ 下面。

例如,可以创建脚本文件 /etc/ppp/ip-up.d/add-route,内容为:

#!/bin/sh  ip route add 192.168.10.0/24 dev $1  

第六步,关闭 VPN 客户端。如果你想断开 VPN 连接,可以执行一下命令:

$ poff <tunnel>  

注解

请将以上命令行中的 <> 连同扩起来的部分替换成你定义的隧道名称,在本例中是 vpn.

FAQ