openvpn路由设置 - d的博客 - 博客大巴

来源:百度文库 编辑:神马文学网 时间:2021/12/06 13:36:40

openvpn路由设置

2010-01-04

版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明
http://daemon-sniper.blogbus.com/logs/56202157.html

openvpn 如果以点对点的方式运作,那么应该扩大范围,客户端不止能访问服务器,而且应该能访问服务器所在网络的其他机器.

举个例子吧,假设服务器端的内网使用 192.168.10.0/24 网段,openvpn 拨号的 vip 设置成 192.168.20.0/24 网段.

首先,如果 client 通过 vpn 访问 192.168.10.0/24 网段,只需要在配置文件里添加以下参数就可以了:

push "route 192.168.10.0 255.255.255.0"

push 的作用就是把选项内容给连接的 vpn 客户端执行,也就是在 vpn 客户端执行:

route 192.168.10.0 255.255.255.0

下一步,我们要为从VPN客户端 192.168.20.0/24 网段到openVPN服务器所在的局域网的网关设置一个路由(假如OpenVPN服务器和局域网网关不是同一台机器,这个设置就很有必要).

一般典型的远程访问情况是,客户端都是以单机使用VPN。但是如果客户端是本地局域网的网关(如总公司)你希望每台在这个局域网的机器都能通过路由使用VPN.

举个例子,我们假设这个客户端的局域网使用的是192.168.20.0/24的子网,并且那个VPN客户端有一个通用名为client2的证书,我们的目的就是设置一个VPN通道,让客户端局域网内的所有机器能跟OpenVPN服务器局域网端的所有机器相互联系。

安装之前,有一些必须遵守的基本前提:

1:客户端局域网的子网(在我们这个例子中是192.168.20.0/24)不能通过在同一网段的服务器或者其他客户端站点的途径加入到VPN。任何一个子网想加入VPN的通道路由必须是唯一的。

2:客户端必须拥有一个唯一的通用名称在其证书中(我们这个例子叫“client2”),而且duplicate-cn 这个参数不能在OpenVPN服务器的配置文件里被启用。 

首先,我们必须确信客户端的IP 和 TUN/TAP转发功能是打开的。

然后,我们将处理服务器端的配置文件进行一个必要的修改配置,假如服务器配置文件没有提到客户端配置文件的目录,那么添加如下一行。

client-config-dir ccd

也就是当一个新的客户端连接OpenVPN服务器的时候,服务器进程会针对客户端证书中的匹配通用名称来检查这个目录,如果找到与之匹配的文件,就会对这个客户端进行额外配置的处理。

下一步,我们要建立一个名叫 client2 的文件在ccd 目录下,在这个文件里有如下的控制语句:

iroute 192.168.20.0 255.255.255.0 
既可以把 192.168.20.0/24 网段的路由添加给 client 2

下一步,在服务器端的 server.conf 上添加如下语句

route 192.168.20.0 255.255.255.0

你可能会问?为什么要有 route 和 iroute 这多余重复的设置? 理由是在iroute 控制从OpenVPN服务器到远程客户端的路由的时候,route控制着从内核到OpenVPN服务器(通过TUN接口)。两者都很重要。

下一步,问问你自己是否允许client2的网段(192.168.20.0/24)和OpenVPN服务器的其他客户之间有网络流量交换,如果是的话,那就在服务器的配置文件中添加如下语句:

client-to-client
push “route 192.168.20.0 255.255.255.0″

这将让OpenVPN服务器为client2客户网段跟其他连接的客户端进行广播通知。

最后一步,这一步经常会忘记,那就是为服务器局域网的网关添加一个直接从192.168.20.0/24到OpenVPN的路由(你可能不需要这一步,假如本身OpenVPN服务器就是这个服务器端局域网的网关)。假如你忘了这一步的设置,当尝试从192.168.20.8机器ping一个在服务器局域网内的机器(非OpenVPN自己ping自己),会输出一个不能到达机器的提示。但是我们不能不知道如果路由一个ping的回复,因为我们根本不知道怎么到达192.168.20.0/24。通常的经验做法是,在整个局域网路线通过VPN通道的时候(VPN服务器不是这个局域网的网关机器)之前,我们得保证所有VPN客户端网段到服务器端局域网网关的路由路径。

同样,如果客户端机器运行OpenVPN,而且也不是它本身局域网的网关,那么也得为那台提供其他机器可以通过VPN访问客户端所在局域网途径的机器设置一个从客户端机器到局域网网关的路由。