liuyuchen 2011-07-20
比SSH隧道安全更高、功能更多的一种解决方案是,让你的笔记本电脑成为VPN网络的一个成员。传统上,VPN是公司实施的一种安全机制,旨在让员工们在远离办公室时——或者甚至在同一家公司的远程分支机构时,可以全面而安全地访问企业网络。
但你没必要是个大人物才能享用VPN技术的好处。归功于免费开源的OpenVPN,你在家里就能组建起完全属于你自己的VPN服务器,然后能够从你所在的任何地方,安全地访问家庭局域网里面的资源。另外,你只要在OpenVPN配置中稍作几处细小调整,还能使用该服务器来安全地上网冲浪,这意味着你可以通过从笔记本电脑到远程OpenVPN服务器的加密隧道,重新路由发送所有网络流量。
先决条件
你可以将OpenVPN安装在市面上的任何一款操作系统上,不过最好是用Linux或*BSD。对我来说,选择Linux是明摆着的。虽然一开始我认为自己会选择Ubuntu Server,但Amahi Home Server很快因极其容易的安装和配置而赢得了我的芳心。
说到类似组建环境的软件部分,你其实只需要一款Linux发行版。至于硬件部分,配备奔腾3级处理器、512MB内存和20GB硬盘的这样一种中规中矩的设备完全够用了。另外,你总是可以为Amahi准备一个虚拟机,然后使用该虚拟机而不是物理机。实际上我就是这么做的。
至于虚拟化平台,我本该选择免费的VirtualBox软件——顺便说一下,这款软件可供Windows、Mac OS X和Linux等主机使用。但VMware很早就赢得了我的信任。说实话,我使用VMware的技术也觉得最自在。我那台旧iMac运行Mac OS X Snow Leopard,担任小型虚拟化主机的角色完全绰绰有余,于是我开始用VMware Fusion构建了一台Amahi虚拟机。如果你的主机电脑运行Windows或Linux,又想继续使用VMware,那么你可以使用工作站版本或免费的VMware Player。
我会在下文演示如何使用Amahi发行版来构建完全属于自己的OpenVPN家庭服务器,只要遵照七个步骤,轻轻松松就能搞定。
要想有可能建立起VPN连接,客户机必须处在与服务器不同的子网。从哪个子网来连接你没得选择,不过可以确保你的OpenVPN服务器处在一个不太常见的子网,比如10.10.10.*或10.20.30.*等。你只要相应地设置住宅(ADSL)路由器,可能还要重新配置局域网里面使用静态IP地址的任何个人电脑。话虽如此,在下面的一些屏幕截图中,你会看到我们的OpenVPN服务器处在极其常见的子网192.168.1.*里面。但那是由于我们构建的这台服务器只是用于本文演示而已。
第一步:为Amahi配置一个新的虚拟机
如果你碰巧有一台备用设备完全闲置着,那倒是也不需要虚拟化。不过作为一名不折不扣的虚拟化爱好者,我很少有闲置硬件,于是很高兴开始踏上了另一趟愉快的虚拟化之旅。下列屏幕截图显示了我那个Amahi虚拟机的参数。
第二步:为HAD创建配置文件,并下载
Amahi是一款基于Fedora的发行版,为家庭级文件服务器、媒体服务器和应用服务器而设计。Amahi的那些人员喜欢把这类服务器称之为家庭数字助手(Home Digital Assistant),简称HDA。如果你想进一步了解Amahi,弄清楚它能够为你的家庭网络做什么,强烈鼓励你从其官方网站的这一页开始好好了解一番。在你开始下载Amahi之前,要注册一个免费帐户,为你的HAD创建配置文件。参阅下列屏幕截图,即可了解更多细节。
就我们这个创建环境而言,其实没有理由下载安装DVD。Amahi Express CD完全可以了,可以从这里获得该光盘,通过BitTorrent或直接通过HTTP来下载。至于选择32位版本还是64位版,我建议你选择前者,因为选择64位版其实没什么优点。下载完成后,你就有了一个名为Amahi-6.1-Express-v1-i386.iso的ISO映像文件。
第三步:安装Amahi
安装Amahi的经历不像你之前可能安装其他任何Linux发行版的经历。在本文中这意味着安装过程很容易、很快速、很简单。参阅下列屏幕截图即可了解所有细节。
第四步:初始配置
成功安装Amahi后,你需要通过其网络界面登录到系统上,更改默认的管理员密码,以及创建一个或多个普通用户。
第五步:测试OpenVPN服务器
至此,你的家庭OpenVPN(虚拟)服务器应该建立并运行起来。为了测试它,你就得在家庭局域网的外面。但根本用不着拿起那台笔记本电脑奔到外面去,因为你可以直接从Amahi网站来测试服务器!
第六步:下载、安装和配置适合操作系统的VPN客户软件
你可以从Amahi项目的这个维基页面下载一款合适的OpenVPN客户软件。不管你的笔记本电脑运行哪种操作系统,客户软件的配置都相当容易。
以Windows为例,只要先下载该客户软件,然后安装并运行。
在Mac OS X下安装VPN客户软件来得比较复杂。在Amahi人员建议的两款客户软件中,我选择了Tunnelblick,它是开源的,而且对我来说效果始终很好。Amahi维基的这个页面详细介绍了安装和配置方面的操作指南。下面就是我在运行Mac OS X Leopard的MacBook上进行的一番操作。
首先,我开启Terminal(终端)端口,把最新的Tunnelblick稳定版安装到了我的桌面上。截至本文截稿时,这个最新稳定版是版本3.1.7:
mblack:~ cvar$ cd ~/Desktop mblack:Desktop cvar$ curl -O http://tunnelblick.googlecode.com/files/Tunnelblick_3.1.7.dmg % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 3441k 100 3441k 0 0 706k 0 0:00:04 0:00:04 --:--:-- 802k mblack:Desktop cvar$ mblack:Desktop cvar$ ls -lh Tunnel* -rw-r--r-- 1 cvar staff 3.4M Jul 10 08:43 Tunnelblick_3.1.7.dmg mblack:Desktop cvar$
我从桌面上的那个*.dmg文件,以平常的方式安装了Tunnelblick:先打开DMG,把Tunnelblick.app拷贝到Applications文件夹。回到Terminal(终端)窗口上,我在桌面上创建了一个名为amahi.tblk的文件夹,切入到该文件夹:
mblack:Desktop cvar$ mkdir amahi.tblk mblack:Desktop cvar$ cd amahi.tblk mblack:amahi.tblk cvar$
按照Amahi维基上的操作指南,我下载了下列三个文件:
mblack:amahi.tblk cvar$ curl -O http://dl.amahi.org/vpn/AmahiHDAClient.crt % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 3809 100 3809 0 0 6291 0 --:--:-- --:--:-- --:--:-- 14373 mblack:amahi.tblk cvar$ curl -O http://dl.amahi.org/vpn/AmahiHDAClient.key % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 887 100 887 0 0 1364 0 --:--:-- --:--:-- --:--:-- 2889 mblack:amahi.tblk cvar$ curl -O http://dl.amahi.org/vpn/ca-cert.crt % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 1257 100 1257 0 0 2072 0 --:--:-- --:--:-- --:--:-- 4054 mblack:amahi.tblk cvar$ mblack:amahi.tblk cvar$ ls -lh total 24 -rw-r--r-- 1 cvar staff 3.7K Jul 10 09:08 AmahiHDAClient.crt -rw-r--r-- 1 cvar staff 887B Jul 10 09:08 AmahiHDAClient.key -rw-r--r-- 1 cvar staff 1.2K Jul 10 09:08 ca-cert.crt mblack:amahi.tblk cvar$
我创建了一个空文件,并命名为openvpn.ovpn:
mblack:amahi.tblk cvar$ touch openvpn.ovpn mblack:amahi.tblk cvar$ ls -lh total 24 -rw-r--r-- 1 cvar staff 3.7K Jul 10 09:24 AmahiHDAClient.crt -rw-r--r-- 1 cvar staff 887B Jul 10 09:24 AmahiHDAClient.key -rw-r--r-- 1 cvar staff 0B Jul 10 09:27 openvpn.ovpn -rw-r--r-- 1 cvar staff 1.2K Jul 10 09:24 ca-cert.crt mblack:amahi.tblk cvar$
我在TextEdit中打开了openvpn.ovpn,把下列内容粘贴到里面:
remote delta.yourhda.com 1194 client dev tun proto udp resolv-retry infinite nobind persist-key persist-tun ca Ca-cert.crt cert AmahiHDAClient.crt key AmahiHDAClient.key comp-lzo verb 3 auth-user-pass
当然在你这个例子中,要把“delta”换成为HAD赋予的那个名字。然后,我保存openvpn.ovpn,退出TextPad,第一次运行Tunnelblick。
最后但并非最不重要的一点是,本文是以Linux为例来演示的。正如你所料,Amahi维基的这个页面详细介绍了如何连接到OpenVPN服务器的操作指南。我遵照了这些简单、一般的操作指南,一次是在openSUSE设备上,另一次是在Ubuntu设备上。在这两种情况下,我都成功连接到了远程OpenVPN服务器,没有任何问题。
第七步:通过OpenVPN服务器,重新路由发送所有网络流量
到现在,你随时能够安全地连接到家庭网络,访问(ADSL)路由器后面的资源。这相当有用,但如果你通过OpenVPN服务器还能安全地上网冲浪,那就更棒了。这一点完全能够做到:你只要在主要的OpenVPN配置文件中作几处改动即可。
从Amahi虚拟机的文本控制台,以root用户的身份登录到Fedora,进入到/etc/openvpn目录,用文本编辑器打开amahi.conf(nano是个不错的选择):
[root@localhost ~]# cd /etc/openvpn/ [root@localhost openvpn]# nano amahi.conf
找到下面这一行
push "route 192.168.1.0 255.255.255.0"
把它注释掉:
#push "route 192.168.1.0 255.255.255.0"
提醒:你的Amahi可能在不同的子网里面,所以你可能看到的不是192.168.1.0,而是192.168.0.0或10.0.0.0之类的子网。就在被注释掉的那一行下面,插入下列内容:
push "redirect-gateway def1"
将变更内容保存到amahi.conf,退出编辑器。重新启动OpenVPN服务,就万事大吉了:
[root@localhost openvpn]# /etc/init.d/openvpn restart Shutting down openvpn: [ OK ] Starting openvpn: [ OK ] [root@localhost openvpn]#
祝贺你!现在开始,只要你一连接到OpenVPN服务器,不但可以访问家庭路由器后面的资源,还能够通过远程家庭服务器,安全地上网冲浪!