SoftEther VPN进阶:静态路由表推送(拆分隧道)
2015-01-15前段时间我曾介绍过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。
2、打开http://bgp.he.net,查看74.125.204.199所在网段的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
|
您可能也喜欢:
51 条评论
-
已经重新编译,可以使用路由推送了
-
同样的版本,windows下的功能比linux下多
-
不能使用在windows上,需要安装在linux上就可以了
-
楼主 不知您对ss翻墙或者利用ipv6免流有没有研究??
-
大哥你的那个版本可发给我们一份吗 现在官网下载的 已经屏蔽掉这个功能了
-
大哥你的那个版本可发给我们一份吗 现在官网下载的 已经屏蔽掉这个功能了
-
博主你好~小白一个哇~~我这边搭建了VPN也通过修改源码顺利拆分隧道了~不过就是虚拟DHCP服务器跟我路由器的DHCP服务有冲突,导致无线连接的设备都直接使用虚拟DHCP服务器的地址了。。。请问有没有方法解决呢?
-
我有同样问题,dhcp冲突,按理说,本地内网有dhcp的话,无需再开securenat增加dhcp server,增加了话肯定有 冲突。但是我发现如果不开启securenat,我用手机(安卓和苹果都是如此)很难连入,要拨好多次才能成功。而开启了securenat,简直是秒连。但更棘手的问题又出现,就是2个dhcp冲突。请问你解决了吗?
-
我有同样问题,dhcp冲突,按理说,本地内网有dhcp的话,无需再开securenat增加dhcp server,增加了话肯定有 冲突。但是我发现如果不开启securenat,我用手机(安卓和苹果都是如此)很难连入,要拨好多次才能成功。而开启了securenat,简直是秒连。但更棘手的问题又出现,就是2个dhcp冲突。请问你解决了吗?
-
-
根据@Terry_Zheng分享的帖子,我找到了源码,更改并编译好了可以使用静态路由表的版本~~~各位可在我的云盘下载~~目前在我实验室的网络已经稳定运行了~
链接: http://pan.baidu.com/s/1jHvrIn0 密码: sdkc-
找到的源码,能发我一份不,看到请回复,发邮箱zxcvbai@gmail.com
-
你好,能否编译一份4.20正式版呢,需要静态路由推送这个功能,无奈对这个编译丝毫摸不着头脑,谢谢了
-
其实不用编译,管理界面不允许添加,可以直接修改配置文件,在DhcpPushRoutes后面添加就是了,格式就是管理界面的说明格式,只是从第二条路由开头需要加$20在路由前面
-
-
不好意思,网盘的源码过期了,麻烦能帮忙给我发一份吗,急需路由推动功能,我的邮箱是297091659@qq.com,万分感激
-
大神链接失效了啊
-
您好,麻烦能给我发送一份不?
-
-
马哥,会考虑写下搭建AnyConnect的教程么?
-
现在速度怎么样。。以前用的时候还不入zym
-
请教一下博主,你用的哪个版本,是开源的么?
我用开源的 4.17-9562-beta-2015.05.30 版,提示「不支持此功能。它尚未在 SoftEther VPN 的开源版本上实施。」-
http://www.vpnusers.com/viewtopic.php?f=7&t=2826&sid=127971784117c0fcdae4ab0248bfe40c#p6249
这个帖子说了真正原因是因为北京,从 SoftEther VPN 4.06 Build 9430 (Beta) (March 20, 2014) 这个版本默认是禁用了这个功能,但是可以手动启动,然而有没有说怎么手动启用,改代码么?
-
-
说得对 顶一个
-
又来了。
-
真心看不懂。
-
北京网站建设前来学习
-
好像不行,已经是最新版本了,但是提示『不支持此功能 他尚未在开源版本上实施』
-
为什么我保存的时候提示 不支持此功能 说没有在开源版本中开放什么的 我已经更新到4.15的了
-
来过了
-
支持一下你哦
-
可以说看不懂吗
-
这些内容的看看哈
-
5、退出SoftEther VPN Server管理器,回到你的本机环境。从VPN连接属性开始(假定你已经创建了VPN连接并且一切正常),依次选择“网络”选项卡、“Internet 协议版本 4(TCP/IP IPv4)”、“属性”、“高级”,将“在远程网络上使用默认网关”的勾取消掉,保存。这样再连接VPN时,就只有送往推送路由表中网段的数据会经由VPN隧道进行传输了。
在vpn网卡属性里找不到你说的 在远程网络上使用默认网关 这个按钮,windows 8.1 系统
-
這個有被特徵檢測的風險吧
-
好技术啊。
评论被关闭!
马总,如何修改源码重新编译啊?在哪里修改