Softether-VPN 拆分隧道

简介: 去除 Softether VPN 拆分隧道功能,可用于中小型企业的 VPN 管理

SoftEther VPN 简介

需求来源

远程网关与本地网关

对于VPN来说,存在远程网关与本地网关的概念,以下图以SoftEther VPN 的 SecureNAT 配置为例,接入VPN后本地路由表的对比 。

  • 如果使用远程网关,默认路由均走VPN隧道,这样VPN服务器压力较大,而且日常的网络访问都需要从VPN服务器作为出口,很显然作为远程接入公司网络该场景使用不太合理
  • 如果使用本地网关,默认路由走的是本地的网络出口


本地网关配合静态路由

如果单纯的使用本地网关,是无法直接访问到异地的内网地址的,缺少了一步静态路由。

比如使用本地网关的情况下,公司内网存在一个地址为 192.168.7.5 , 连接VPN后,tracert一下,如图所示,经过几跳以后,在公网直接超时了。


此时我们只需要把VPN分配的虚拟网络的网关,(图中192.168.200.1 就是通过虚拟局域网前往异地内网的网关),作为本地的一条静态路由,指向如果走7网段直接通过网关192.168.200.1,添加后再次tracert 一下, 可以看到直接通过远程网关访问到了异地内网的机器

route add 192.168.7.0 mask 255.255.255.0 192.168.200.1


所以如果使用本地网关,我们需要进行一次静态路由的添加,这里存在的问题也显而易见

  • 不添加为本机永久路由,需要每次机器重启后手动添加路由
  • 添加为本机永久路由,可能会在某些网络环境下造成地址冲突等情况


Split Tunneling

Split Tunneling (拆分隧道),是SoftEther-VPN中比较强悍的一个功能。具体位置在SecureNAT配置界面就可以找到。


简单来讲 拆分隧道可以理解为推送静态路由,接入 VPN 以后,server端会推送设置的静态路由到client端,断开VPN后,推送的静态路由失效,完美的解决了上述问题带来的痛点。



但是对于Softether VPN 来说,拆分隧道功能并不适合官方下载的版本,从网上查到的信息,某些地区不可以使用该功能在内的一部分功能(当然仅限于官方下载的编译好的版本,对于自己进行源码编译是不限制的)



解除限制

下载源码

  • 下载地址, 组件选择 Source Code of SoftEther VPN
  • 如果是生产环境在用,建议下载在用版本的源码


删除限制部分代码

  • 解压后,在以下路径中找到Server.c文件,编辑Server部分代码

/your_tar_path/src/Cedar/Server.c

  • 可以看出Server端代码在以下 两个函数中 出现了限制的关键词
voidSiGetCurrentRegion(CEDAR*c, char*region, UINTregion_size)
boolSiIsEnterpriseFunctionsRestrictedOnOpenSource(CEDAR*c)
SiIsEnterpriseFunctionsRestrictedOnOpenSource函数中调用了SiGetCurrentRegion函数,最终的逻辑判断还是发生在SiIsEnterpriseFunctionsRestrictedOnOpenSource函数该段代码if (StrCmpi(region, "JP") ==0||StrCmpi(region, "CN") ==0)
{
ret=true;
}


  • 我们直接把 ret 的赋值改为  false;当然更改方法多种多样


编译

  • CentOS
yum -y groupinstall "Development Tools"yum -y install readline-devel ncurses-devel openssl-devel
./configure
make


  • Debian
apt-get install gcc automake autoconf libtool make libreadline-dev libssl-dev zlib1g-dev lib32ncurses5-dev -y./configure
make


部署

  • 编译完成后,会在如下路径生成vpnserver 以及hamcore.se2文件

bin/vpnserver/

  • 直接用上述两个文件替换掉原部署的vpnserver以及hamcore.se2即可
  • 注意: 替换前注意备份原目录,替换前注意停止vpnserver服务


测试

  • 再次Manager连接进行路由推送,并没有弹出窗口限制
  • 客户端拨入VPN,再次查看路由表,发现路由已经推送过来了;断开VPN后该条路由被清理


Docker镜像

可以直接拉取镜像以便在 Docker 以及 K8s 集群中使用

docker pull abyssviper/softethervpn

详细使用说明请参考:https://hub.docker.com/r/abyssviper/softethervpn



Softether VPN 经过测试在百人规模公司的远程办公中利用拆分隧道能力,不管是速度还是稳定性都是没有任何问题的,如果您对本文有任何疑问,请给我留言。

目录
相关文章
|
7月前
|
安全 网络安全 网络虚拟化
WireGuard 系列文章(二):WireGuard 简介 - 快速、现代、安全的 VPN 隧道
WireGuard 系列文章(二):WireGuard 简介 - 快速、现代、安全的 VPN 隧道
|
网络虚拟化
MPLS VPN跨域C2 RR反射器方案(二)
MPLS VPN跨域C2 RR反射器方案
150 0
|
网络虚拟化
MPLS VPN跨域C2 RR反射器方案(一)
MPLS VPN跨域C2 RR反射器方案
168 0
|
网络虚拟化
MPLS VPN跨域C1方案 RR反射器(二)
MPLS VPN跨域C1方案 RR反射器
91 0
|
7天前
|
网络虚拟化
配置BGP/MPLS IP VPN示例
本文介绍了通过配置MPLS VPN实现分部与总部之间的通信需求。具体要求为分部1和分部2只能与总部通信,而分部之间不能通信。配置思路包括使用BGP协议传递路由,并将各分部分别划分到不同的VPN实例中(VPN1、VPN2、VPN3),通过设置RD和Target属性确保路由隔离。操作步骤涵盖设备IP地址配置、MPLS域内互通、PE上的VPN实例配置、接口绑定、MP-IBGP配置、CE与PE间的路由交换及MPLS LDP功能配置。最终验证显示,同一VPN内的CE设备可以相互通信,不同VPN的CE设备则无法通信,满足了组网需求。
配置BGP/MPLS IP VPN示例
|
4月前
|
网络协议 Shell 网络虚拟化
手把手教你玩MPLS VPN如何配置
手把手教你玩MPLS VPN如何配置
382 0
|
6月前
|
网络协议 网络虚拟化 网络架构
MPLS VPN协议高级应用
MPLS VPN协议高级应用
|
6月前
|
网络协议 网络虚拟化 虚拟化
|
6月前
|
网络协议 网络虚拟化
MPLS VPN跨域方案(一)
MPLS VPN跨域方案(一)