SoftEtherVPN 异地组网及本地流量分离

安装服务器与客户端并初始化

这个步骤还是比较简单的,网络上有其他人的教程,而本篇文章主要分享的是后续的配置教程(用于异地组网、且不让本地的其他流量经过服务器),因此这里就不详细展开了。

我这里使用的服务端是在Ubuntu服务器上搭建的、修改源码去除了企业版功能限制的自行编译版本,客户端则是官方Github发布的V5版本Client。

官方Github仓库链接

需要修改的源码

参考了 这篇文章

(实际上本篇教程使用的方法不需要企业版功能)

文件 src/Cedar/Server.c

if (StrCmpi(region, "JP") == 0 || StrCmpi(region, "CN") == 0)
{
  ret = true;  // 将 ret 的值改为 false
}

编译过程这里就不写了,不过需要注意的是V5版本的构建命令变成了make -C build而不是之前的make

在构建时可以使用./configure --enable-static来启用静态构建,方便把二进制文件在不同发行版之间复制。

配置服务端

到这里应该已经安装好了服务端和图形化的管理工具、并且已经设置好端口和防火墙,创建好虚拟HUB了。

现在开始对虚拟HUB进行配置。

虚拟NAT和虚拟DHCP服务器

接下来启用SecureNAT并点击进入SecureNAT配置页面。

虚拟NAT和虚拟DHCP服务器

点击复选框禁用虚拟NAT功能,然后根据自己需求配置DHCP服务器的地址范围和子网掩码等。

请确保网卡的IP地址和默认网关地址一致,且网卡的IP地址在子网范围内。

虚拟NAT和虚拟DHCP服务器

点击确定保存(不需要向客户端推送静态路由表)。

如果之前向SoftEther客户端推送过静态路由表(客户端连接过),请在客户端删除路由条目(可以通过route print查看(Windows)),最方便快速的方法是删除SoftEther客户端连接所使用的虚拟网络适配器并重新创建

删除客户端的虚拟网络适配器

至此虚拟HUB配置完成。

客户端配置

软件配置

现在开始配置客户端。

输入配置名称和服务器、端口、虚拟HUB名称、账号密码等信息,选择一个虚拟网卡,点击“确定”。

添加客户端

在“高级设置”中可以按需调整“TCP连接数”、“使用SSL加密VPN会话”、“使用数据压缩”等选项。

高级设置

网卡配置

连接添加完成后先不要着急启动,先右键之前选择的虚拟网络适配器,选择“打开Windows网络连接”:

打开Windows网络连接

然后会打开控制面板。找到名称一样的网卡,右键打开属性。

控制面板网络连接

选择“Internet 协议版本 4”,点击属性按钮。

网络连接属性

进入高级设置:

网络连接高级设置

勾选启用自动跃点:

启用自动跃点

然后确定保存。

至此客户端配置完成。

效果测试

PING

此时查看路由表(route print)可以发现VPN虚拟网卡的跃点比正常网卡高,因此0.0.0.0流量会优先走本地网卡,实现流量分离。

可以通过抓包或在线IP查询网站来验证。

文章内如果存在错误,欢迎在评论区指出。