SoftEther VPN进阶:静态路由表推送(拆分隧道)

2015-01-15

SoftEther-VPN-logo

前段时间我曾介绍过SoftEther VPN在Linux系统下的安装和配置,今天咱们再进一步,介绍一个SoftEther VPN的高级功能——静态路由表推送(拆分隧道)。

以Windows操作系统为例,默认情况下建立VPN连接后所有网络流量都是经由VPN隧道进行传输的。但是很多时候这是完全没必要的,甚至是低效的,其实只要一部分特定流量通过VPN隧道即可。在实际应用场景中,假如我是一名电信用户,我只需要对访问联通的流量进行加速,而电信流量,直接走电信的网络就可以了。为达到这个目的,我们通常是在建立VPN隧道后采用路由表来为不同的目的IP设定不同的路由信息。但是由于路由表配置起来比较麻烦,而且稍有不慎就会导致机器上不去网,而且这种路由表错误一般人根本查不出来,所以如果能在建立VPN隧道的同时配置好路由表,自然是最好不过的事情了。

在对SoftEther VPN这款神器进行一番把玩后,我发现SoftEther VPN还真有这样的功能——静态路由表推送(拆分隧道)。根据我的理解,静态路由表推送就是在建立VPN隧道的同时,服务器端将预先设定的路由条目一并推送给客户端,而后客户端再把它加入到本地的路由表中。这样一来,客户端(本地PC)只需将发往推送路由条目包含网段的数据包转发给VPN服务器,从而达到了智能传输的目的。

废话不多说,下面看看这个静态路由表推送功能是如何配置的:

1、使用SoftEther VPN Server管理器连接服务器端;(Linux下的SoftEther VPN服务器配置请见此处)

2、依次选择“管理虚拟HUB”=>“虚拟NAT和虚拟DHCP服务器”=>“SecureNAT配置”;

3、选择“编辑该静态路由表以推送”;(注意:旧版本的SoftEther VPN Server管理器中没有这个按钮,需要更新到新版本才行)

4、将定义好的路由表加入其中,保存。(路由条目间以逗号或者空格分开)

路由条目的格式如下:

网络号/子网掩码/网关(即VPN网关)

以Google Public DNS(8.8.4.4/8.8.8.8)为例,它的路由条目可以定义如下:

8.8.4.0/255.255.255.0/192.168.254.1,
8.8.8.0/255.255.255.0/192.168.254.1

其中8.8.4.0和8.8.8.0是网络号,255.255.255.0是子网掩码,192.168.254.1是我的VPN网关。

5、退出SoftEther VPN Server管理器,回到你的本机环境。从VPN连接属性开始(假定你已经创建了VPN连接并且一切正常),依次选择“网络”选项卡、“Internet 协议版本 4(TCP/IP IPv4)”、“属性”、“高级”,将“在远程网络上使用默认网关”的勾取消掉,保存。这样再连接VPN时,就只有送往推送路由表中网段的数据会经由VPN隧道进行传输了。

取消“在远程网络上使用默认网关”

比较可惜的是,SoftEther VPN的静态路由表最多只支持64个条目。尽管支持的路由条数较少,但因为好多网站使用同一家CDN服务商的缘故(共享IP或者IP网段相同),实际上需要的路由条目数很少。比如我的推送路由表中,尽管只有40来条路由信息,但对于常用网站来说已经绰绰有余了。

 

=========关于路由条目生成==========

有的朋友可能会说,我对网络知识了解有限,那么,我的路由表应该如何生成呢?别急,一步步来,下面我以Google为例进行讲解:

1、首先,我们需要得到Google的IP地址。运行“命令提示符”,使用“nslookup”命令得到Google的IP地址:74.125.204.199。

nslookup

2、打开http://bgp.he.net,查看74.125.204.199所在网段的BGP广播信息:

Google IP地址 BGP广播信息

为了将尽可能多的Google服务包含在内,我们选择规模较大的网络(即子网掩码长度为16的网络)。因此,我们会在路表中添加如下一条路由条目:

74.125.0.0/255.255.0.0/192.168.254.1

其中74.125.0.0为该网络的网络号,直接拿过来就行;255.255.0.0是对应长度为16的子网掩码;192.168.254.1是VPN服务器的网关,上面已经说过了。就这么简单,一个路由条目就搞定了。如果你的服务器在海外的话,在添加完上述路由条目后你可能会发现,不仅Google首页能上了,Gmail等服务似乎也没有问题……一条路由就可以搞定N多服务,神奇吧。

关于子网掩码长度与子网掩码之间的转换,大家可以参照下表:

子网掩码长度
子网掩码
8
255.0.0.0
9
255.128.0.0
10
255.192.0.0
11
255.224.0.0
12
255.240.0.0
13
255.248.0.0
14
255.252.0.0
15
255.254.0.0
16
255.255.0.0
17
255.255.128.0
18
255.255.192.0
……
(有规律,自己找吧)
24
255.255.255.0
……
……
32
255.255.255.255

除非特殊说明,本博客文章均为原创,转载请以链接形式标明博文地址。

本文链接地址: SoftEther VPN进阶:静态路由表推送(拆分隧道)

分类:互联网 | 标签: |
  1. 博主你好~小白一个哇~~我这边搭建了VPN也通过修改源码顺利拆分隧道了~不过就是虚拟DHCP服务器跟我路由器的DHCP服务有冲突,导致无线连接的设备都直接使用虚拟DHCP服务器的地址了。。。请问有没有方法解决呢?

  2. 请教一下博主,你用的哪个版本,是开源的么?
    我用开源的 4.17-9562-beta-2015.05.30 版,提示「不支持此功能。它尚未在 SoftEther VPN 的开源版本上实施。」

  3. 5、退出SoftEther VPN Server管理器,回到你的本机环境。从VPN连接属性开始(假定你已经创建了VPN连接并且一切正常),依次选择“网络”选项卡、“Internet 协议版本 4(TCP/IP IPv4)”、“属性”、“高级”,将“在远程网络上使用默认网关”的勾取消掉,保存。这样再连接VPN时,就只有送往推送路由表中网段的数据会经由VPN隧道进行传输了。

    在vpn网卡属性里找不到你说的 在远程网络上使用默认网关 这个按钮,windows 8.1 系统

    • 愿闻其详。你这一说,似乎真有这种问题。我用电脑连接L2TP(支持静态路由推送),海外的VPN就连接不上;但是换成手机(不支持静态路由推送),同样的网络环境,竟然就可以连上了。我一直搞不明白是啥问题,难道就是路由推送被特征检测了?