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进阶:静态路由表推送(拆分隧道)

分类:互联网 | 标签: |

51条评论

  1. damon说道:

    马总,如何修改源码重新编译啊?在哪里修改

  2. VC说道:

    已经重新编译,可以使用路由推送了

  3. vc_joker说道:

    同样的版本,windows下的功能比linux下多

  4. 剑思庭说道:

    不能使用在windows上,需要安装在linux上就可以了

  5. kaisa说道:

    楼主 不知您对ss翻墙或者利用ipv6免流有没有研究??

  6. 措手不及说道:

    大哥你的那个版本可发给我们一份吗 现在官网下载的 已经屏蔽掉这个功能了

  7. 措手不及说道:

    大哥你的那个版本可发给我们一份吗 现在官网下载的 已经屏蔽掉这个功能了

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

    • greatlsd说道:

      我有同样问题,dhcp冲突,按理说,本地内网有dhcp的话,无需再开securenat增加dhcp server,增加了话肯定有 冲突。但是我发现如果不开启securenat,我用手机(安卓和苹果都是如此)很难连入,要拨好多次才能成功。而开启了securenat,简直是秒连。但更棘手的问题又出现,就是2个dhcp冲突。请问你解决了吗?

    • greatlsd说道:

      我有同样问题,dhcp冲突,按理说,本地内网有dhcp的话,无需再开securenat增加dhcp server,增加了话肯定有 冲突。但是我发现如果不开启securenat,我用手机(安卓和苹果都是如此)很难连入,要拨好多次才能成功。而开启了securenat,简直是秒连。但更棘手的问题又出现,就是2个dhcp冲突。请问你解决了吗?

  9. 根据@Terry_Zheng分享的帖子,我找到了源码,更改并编译好了可以使用静态路由表的版本~~~各位可在我的云盘下载~~目前在我实验室的网络已经稳定运行了~
    链接: http://pan.baidu.com/s/1jHvrIn0 密码: sdkc

  10. 迷雾说道:

    马哥,会考虑写下搭建AnyConnect的教程么?

  11. 影乐说道:

    现在速度怎么样。。以前用的时候还不入zym

  12. 马文建说道:

    亲,所有评论都是经过人工审核的,你的广告是显示不出来的哦。

  13. Terry_Zheng说道:

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

  14. 广告联盟说道:

    说得对 顶一个

  15. 食妆易购说道:

    厉害。
    http://www.38hzt.com

  16. 深浅SEO说道:

    真心看不懂。

  17. 北京网站建设前来学习

  18. james说道:

    好像不行,已经是最新版本了,但是提示『不支持此功能 他尚未在开源版本上实施』

  19. james说道:

    为什么我保存的时候提示 不支持此功能 说没有在开源版本中开放什么的 我已经更新到4.15的了

  20. 买木耳说道:

    支持一下你哦

  21. 杠杆资本说道:

    可以说看不懂吗

  22. 弘新教育说道:

    这些内容的看看哈

  23. nobita215说道:

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

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

  24. 说道:

    這個有被特徵檢測的風險吧

    • 马文建说道:

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

  25. 社新社说道:

    好技术啊。

  26. 马文建说道:

    谢谢支持哈,嘻嘻。

评论被关闭!