如何在Linux上用OpenVPN搭建安全的远程网络架构

jqh 2013-11-12

对你在互联网上传送的数据采用一层妥善安全的加密机制,以挫败各种各样的窥视活动,这总归是谨慎的举措;由于我们的政府大量获取每一则信息,此举显得愈发地重要。说到保护在不可信赖的网络上传送的数据,OpenVPN是首要选择。本文将简要介绍一下如何设置OpenVPN,那样即使你出门在外,也可以安全地访问自己的家庭服务器。

先简单地说一说VPN:市面上有许多并非名至实归的商用VPN。它们并不比由SSL保护的网站强一点,因为它们信任所有客户机。真正的VPN(虚拟专用网)通过不可信赖的网络连接两个可信赖的端点设备。你根本无法从随便找到的任何一台电脑登录上去,这是好事,因为你大概也明白这个道理:从一个被感染的主机登录到你的专有网络是件坏事,不管网络连接本身有多么安全。所以,你必须同时配置服务器和客户机。

OpenVPN快速入门

你需要在不同子网上的两台电脑,比如同一个网络上的一台有线电脑和一台无线电脑(或者在Virtualbox中的几个Linux访客系统),你还要知道这两台电脑的IP地址。假设把示例中的这两台电脑分别命名为Studio和Shop。在这两台电脑上都安装OpenVPN。OpenVPN内置在大多数Linux发行版中,所以你可以借助常用的程序包管理器来安装它。本文这个示例适用于Debian、Ubuntu及众多的派生版本:

$ sudo apt-get install openvpn openvpn-blacklist

该命令可安装服务器以及检查已泄密密钥黑名单的一个小程序。你必须安装这个黑名单检查程序!由于从前Debian发行了一款破损版的OpenSSL(参阅http://www.debian.org/security/2008/dsa-1571),该版本OpenSSL有一个破损的随机数生成器,所以用该版本OpenSSL生成的密钥按理说不堪一击,不可信赖。随机数生成器其实并非随机性的,而是可以预测的。这种情况发生于早在2008年的时候,使用过缺陷版OpenSSL的人都理应能够查到并更换安全性差的密钥。尽管这是五年多前的事情,但为了保险起见,还是应该用黑名单检查程序。

现在不妨测试一下,为此在我们的两台电脑之间建立一条未经加密的隧道。首先ping每台电脑,确保它们彼此可以正常联系。然后确保OpenVPN没有在运行,因为我们要开始手动启动它:

$ ps ax|grep openvpn

如果它在运行,就终止它。假设Studio的IP地址是192.168.1.125,Shop的IP地址是192.168.2.125。建立一条从Studio到Shop的未经加密的隧道:

$ sudo openvpn --remote 192.168.2.125 --dev tun0 --ifconfig 10.0.0.1 10.0.0.2

然后,建立一条从Shop到Studio的未经加密的隧道:

$ sudo openvpn --remote 192.168.1.125 --dev tun0 --ifconfig 10.0.0.2 10.0.0.1

你成功建立了连接后,看到诸如此类的信息:

Wed Oct 16 2013 ******* WARNING *******: all encryption and authentication

features disabled -- all data will be tunnelled as cleartext

Wed Oct 16 2013 TUN/TAP device tun0 opened

Wed Oct 16 2013 do_ifconfig, tt->ipv6=0, tt->did_ifconfig_ipv6_setup=0

Wed Oct 16 2013 /sbin/ifconfig tun0 10.0.0.1 pointopoint 10.0.0.2 mtu 1500

Wed Oct 16 2013 UDPv4 link local (bound): [undef]

Wed Oct 16 2013 UDPv4 link remote: [AF_INET]192.168.2.125:1194

Wed Oct 16 2013 Peer Connection Initiated with [AF_INET]192.168.2.125:1194

Wed Oct 16 2013 Initialization Sequence Completed

“Initialization Sequence Completed”(初始化序列已完成)这几个神奇的字眼证明了你的做法正确。你应该可以使用隧道地址来回ping,即ping 10.0.0.1和ping 10.0.0.2。你建立起隧道后,应该可以使用你想使用的任何IP地址,只要没有与现有网络的IP地址重叠就行。想关闭隧道,只要按Ctrl+c组合键。

纯粹为了试着玩,在你的隧道上打开一个SSH会话。图1显示了基于VPN隧道的成功的SSH登录,它还显示了每日消息(Message of the Day):

$ ssh [email protected]

如何在Linux上用OpenVPN搭建安全的远程网络架构

图1:基于VPN隧道的成功的SSH会话,以及每日消息。

哇,它成功了!

相关阅读:

OpenVPN 的详细介绍:请点这里
OpenVPN 的下载地址:请点这里

相关推荐