软件指南针:专注于软件传播与分享

扩大OpenVPN使用范围,包含服务器或客户端子网中的其他计算机

来源:原创 1834次浏览 0条评论
☞ 本文主要介绍软件OpenVPN的相关内容:扩大OpenVPN使用范围,包含服务器或客户端子网中的其他计算机

   其下列版本/分支可以参考本文:

  • 全部版本/分支
英文原文:http://openvpn.net/index.php/open-source/documentation/howto.html#scope

扩大OpenVPN使用范围,包含服务器或客户端子网中的其他计算机

包含基于路由模式的VPN服务器端的多台计算机(dev tun)

VPN既然能够让服务器和客户端之间具备点对点的通信能力,那么扩展VPN的作用范围,从而使客户端能够访问服务器所在网络的其他计算机,而不仅仅是服务器自己,也是可能办得到的。

我们来做这样一个假设,服务器端所在局域网的网段为10.66.0.0/24,VPN IP地址池使用10.8.0.0/24作为OpenVPN服务器配置文件中server指令的传递参数。

首先,你必须声明,对于VPN客户端而言,10.66.0.0/24网段是可以通过VPN进行访问的。你可以通过在服务器端配置文件中简单地配置如下指令来实现该目的:

push "route 10.66.0.0 255.255.255.0"

下一步,你必须在服务器端的局域网网关创建一个路由,从而将VPN的客户端网段(10.8.0.0/24)路由到OpenVPN服务器(只有OpenVPN服务器和局域网网关不在同一计算机才需要这样做)。

另外,请确保你已经在OpenVPN服务器所在计算机上启用了IPTUN/TAP转发。

包含基于桥接模式的VPN服务器端的多台计算机(dev tap)

使用以太网桥接的好处之一就是你无需进行任何额外的配置就可以实现该目的。

包含基于路由模式的VPN客户端的多台计算机(dev tun)

在典型的远程访问方案中,客户端都是作为单一的计算机连接到VPN。但是,假设客户端计算机是本地局域网的网关(例如一个家庭办公室),并且你想要让客户端局域网中的每台计算机都能够通过VPN。

举这样一个例子,我们假设你的客户端局域网网段为192.168.4.0/24,VPN客户端使用的证书的Common Name为client2。我们的目标是建立一个客户端局域网的计算机和服务器局域网的计算机都能够通过VPN进行相互通讯。

在创建之前,下面是一些基本的前提条件:

  • 客户端局域网网段(在我们的例子中是192.168.4.0/24)不能和VPN的服务器或任意客户端使用相同的网段。每一个以路由方式加入到VPN的子网网段都必须是唯一的。
  • 该客户端的证书的Common Name必须是唯一的(在我们的例子中是"client2"),并且OpenVPN服务器配置文件不能使用duplicate-cn标记。

首先,请确保该客户端所在计算机已经启用了IPTUN/TAP转发。

下一步,我们需要在服务器端做一些必要的配置更改。如果当前的服务器配置文件没有引用一个客户端配置目录,请添加一个:

client-config-dir ccd
在上面的指令中,ccd是一个已经在OpenVPN服务器运行的默认目录中预先创建好的文件夹的名称。在Linux中,运行的默认目录往往是/etc/openvpn;在Windows中,其通常是OpenVPN安装路径/config。当一个新的客户端连接到OpenVPN服务器,后台进程将会检查配置目录(这里是ccd)中是否存在一个与连接的客户端的Common Name匹配的文件(这里是"client2")。如果找到了匹配的文件,OpenVPN将会读取该文件,作为附加的配置文件指令来处理,并应用于该名称的客户端。

下一步就是在ccd目录中创建一个名为client2的文件。该文件应该包含如下内容:

iroute 192.168.4.0 255.255.255.0
这将告诉OpenVPN服务器:子网网段192.168.4.0/24应该被路由到client2

接着,在OpenVPN服务器配置文件(不是ccd/client2文件)中添加如下指令:

route 192.168.4.0 255.255.255.0

你可能会问,为什么需要多余的routeiroute语句?原因是,route语句控制从系统内核到OpenVPN服务器的路由,iroute控制从OpenVPN服务器到远程客户端的路由。它们都是必要的。

下一步,请考虑是否允许client2所在的子网(192.168.4.0/24)与OpenVPN服务器的其他客户端进行相互通讯。如果允许,请在服务器配置文件中添加如下语句:

client-to-client
push "route 192.168.4.0 255.255.255.0"

这将导致OpenVPN服务器向其他正在连接的客户端宣告client2子网的存在。

最后一步,这也是经常被忘记的一步:在服务器的局域网网关处添加一个路由,用以将192.168.4.0/24定向到OpenVPN服务器(如果OpenVPN服务器和局域网网关在同一计算机上,则无需这么做)。假设缺少了这一步,当你从192.168.4.8向服务器局域网的某台计算机发送ping命令时,这个外部ping命令很可能能够到达目标计算机,但是却不知道如何路由一个ping回复,因为它不知道如何达到192.168.4.0/24。主要的使用规则是:当全部的局域网都通过VPN时(并且OpenVPN服务器和局域网网关不在同一计算机),请确保在局域网网关处将所有的VPN子网都路由到VPN服务器所在计算机。

类似地,如果OpenVPN客户端和客户端局域网网关不在同一计算机上,请在客户端局域网网关处创建路由,以确保通过VPN的所有子网都能转向OpenVPN客户端所在计算机。

包含基于桥接模式的VPN客户端的多台计算机(dev tap)

这需要更加复杂的设置(实际操作可能并不复杂,但详细解释就比较麻烦):

  • 你必须将客户端的TAP接口与连接局域网的网卡进行桥接。
  • 你必须手动设置客户端TAP接口的IP/子网掩码。
  • 你必须配置客户端计算机使用桥接子网中的IP/子网掩码,这可能要通过查询OpenVPN服务器的DHCP服务器来完成。

作者:软件指南针(http://www.softown.cn),转载请保留出处!

用户评论

使用指南 故障排除 0 返回顶部