使用SoftEther组建虚拟局域网
前言
本教程意在完成异地组网以安全访问内网设备,请勿用于任何非法用途!!!
之前一直使用的N2N作为组网工具,但最近老是断链不稳定(答辩校园网),想着换个组网工具试试,然后就找到了这款软件
这款软件其实算是专业的虚拟专用网络建立软件了,兼容IPsec/L2TP/L2TPv3/OpenVPN等等
开源地址https://github.com/SoftEtherVPN/SoftEtherVPN/
官方网站https://www.softether.org/
下载页面https://www.softether-download.com/?product=softether 当然也可以从GitHub上下载
开始
服务端
下载、编译
首先我们先部署服务端
下载源码至服务器,解压,进入目录
1 | tar zxf 压缩包名称 |
如果未配置GCC编译环境请先配置环境
1 | apt-get update |
将编译完后的文件夹移动至一个方便的地方(当然也可以不移动)
可以选择用户目录或者/usr/local
自行选择即可
配置服务端
编译完成后运行vpnserver
1 | ./vpnserver start |
当出现
1 | Let's get started by accessing to the following URL from your PC: |
并且没有其他报错则服务端启动完成
tips:如果服务器开启了防火墙则请放行5555端口
为了方便管理服务端,我们使用官方提供的服务端GUI管理程序
当然你也可以使用命令行的方式
1 | ./vpncmd |
来管理服务端(不推荐,因为需要设置的项目比较多GUI方便很多)
同样是在下载页面选择 SoftEther VPN Server Manager for Windows
至于要不要使用installer版本看你自己喜好
安装完成后我们打开管理程序
选择「新设置」,填写「设置名」(随自己喜好),「主机名」(可以填服务端的ip或者域名),「端口号」(默认为5555,之后更改的话这里也需要同步更改)
「密码」默认是空,不用填写
点击确定后连接
接着会弹出设置服务器密码的窗口(如果已经设置过则不会弹出)
设置完会弹出「SoftEther VPN Server / Bridge 简单安装」的窗口
选择「远程访问VPN Server」即可(用于点对点组网)
接着会弹出「创建虚拟HUB名称」的窗口,用于划分VLAN(每一个VLAN就是一个HUB)
创建完成后会弹出选一个什么动态DNS主机名什么的(就是一个DDNS),如果不需要就直接点退出(我是自己有域名解析到服务端,所以不需要)
然后在弹出的窗口里选择「L2TP over IPsec」(当然如果你不需要也可以不勾选,后面也是可以重新选择的),用于兼容L2TP(需要开放相应的端口),Android目前没有客户端,只能采用这种方式来连接
接着在弹出的窗口选择「禁用VPN Azure」(因为根本不需要)
接着来到创建用户环节
填写「用户名」,验证类型选择「密码验证」(目前版本无法使用「特定证书认证」,商业版应该支持),填写密码
点击「确定」完成创建用户
关闭用户管理窗口。在管理虚拟HUB界面右下角点击「虚拟NAT和虚拟DHCP服务器」
选择「启用SecureNAT」接着选择「SecureNAT配置」来为我们的VLAN内的设备分配虚拟局域网IP
网段划分如果不知道的话就保持默认设置
在「应用到客户端的选项」一栏,如果你需要使用服务端来转发访问网络(咳咳咳),那么「默认网关地址」就指向VLAN中服务端的IP地址,DNS服务器相同
如果仅仅是想组网,则将「应用到客户端的选项」一栏全部清除即可
到这里服务端的基本配置就完成了
这里是额外(可选)配置
在服务端管理主界面「监听器列表」内可以更改监听端口,将5555端口更改为你自己喜欢的端口号
关闭web api(因为目前web端管理界面还不完善,留着不如关了)
在「vpn_server.config」配置文件内更改「bool DisableJsonRpcWebApi」的键值为true,重启即可
在服务端管理主界面「加密与网络」内,更改加密方式,选择合适的加密方式;创建新的X509证书,然后导出到本地备用(之后客户端验证证书时会用到)
客户端
客户端就没那么多麻烦了(服务端会自动下发配置,很方便)
同样是在下载页面安装适合自己的客户端(本次教程使用Windows系统)
然后添加新的连接
连接名主机名什么的填就完了
如果在上面你完成了(可选)配置中的服务端证书生成,则可以在这个界面勾选「总是验证服务端证书」,然后选择「指定特定证书登录」,选择之前保存的那个证书即可
这将极大的加强密钥交换时的安全性
接着选择「通信的高级设置」中的「高级设置」,将TCP连接数改为8(根据你自己的实际情况而定),建议不要取消「使用SSL加密VPN会话」,不建议裸奔
可以勾选「使用数据压缩」,可能会增加CPU额外的开销,但是都3202年了难道谁还差这一点U的性能开销吗(doge
最后双击或者右键连接
其他Windows主机上重复上面设置即可
Linux端的使用(额外)
同样是下载页面下载合适的客户端
编译安装方式和服务端是一样的
唯一不同的是vpnserver变成了vpnclient
1 | ./vpnclient start |
启动客户端
我们这里使用vpncmd来管理客户端(可以提前将cmd语言改为中文,方便之后的设置,具体设置在lang.config内)
1 | ./vpncmd |
接着选择「2」来进行VPN Client 的管理
连接上后输入help来查看命令
都是中文就不多介绍什么了
首先输入「NicCreate」来创建新的虚拟LAN卡
启用卡「NicEnable」
接着我们从上往下来设置
启用数据压缩「AccountCompressEnable」
创建新的连接配置「ccountCreate」
设置接续设置的高级通信设置「AccountDetailSet」,主要是TCP连接数的设置
启用连接设置进行通信的加密「AccountEncryptEnable」,再次重申,不建议裸奔
认证类型设置为密码认证「AccountPasswordSet」
启用连接设置服务器证书验证选项「AccountServerCertEnable」
设置连接设置的服务器固有证明书「AccountServerCertSet」,指向之前保存的证书
禁止 VPN 客户服务的远程管理「RemoteDisable」,出于安全考虑,如果不需要请设置为禁用
使用连接设置,开始连接 VPN Server「AccountConnect」
获取当前连接设置的状态「AccountStatusGet」,查看连接是否成功
如果有连接信息则说明连接成功,但是还没折腾完
这时如果你在服务端查看连接的用户分配的IP地址会发现没有被分配IPv4地址
因为我们需要手动动态获取IP地址(Windows不用)
输入「ip addr」(此命令请在退出vpncmd后使用)来查看我们虚拟网卡名称(默认为vpn_vpn)
执行「dhclient vpn_vpn」即可
获取到ipv4地址后如果无法ping通其他主机(无防火墙影响下),则还需要手动增加静态路由
1 | ip route add 服务器IP地址 via 本地网关地址 |
参考
https://blog.csdn.net/Variazioni/article/details/127004628
Use this card to join MyBlog and participate in a pleasant discussion together .
Welcome to GoodBoyboy 's Blog,wish you a nice day .