Centos&银河麒麟服务器版系统编译安装softetherVPN+开启softetherVPN静态路由表推送功能

使用centos7.6mini/银河麒麟服务器版编译安装softetherVPN并开启静态路由表推送功能

softetherVPN官网:http://softether.fishinfo.cn/cn.aspx

官网和网盘上下载源码都可以,我这里用的是9760版本的源码,其他版本源码测试未成功,建议使用9760源码

https://zzzsec.lanzn.com/iOHl91hnc1vg密码:fint

安装操作采用源码编译的方式进行安装,理论上redhat系linux系统(centos、银河麒麟服务器版、其他国产操作系统)下都是适用的,目前经过测试的有x86架构的centos和银河麒麟、arm架构下的银河麒麟

安装基础环境准备

安装好系统后,首先需要为softetherVPN安装一些编译时需要用到的组件

yum -y install wget gcc zlib-devel openssl-devel readline-devel ncurses-devel

将softetherVPN源码压缩包上传到服务器/opt目录下,我这里是放到了/opt目录下

image-20250404121646903

image-20250404121742906

编译安装softetherVPN

对源码文件进行解压缩

tar -zxvf softether-src-v4.38-9760-rtm.tar.gz

image-20250404121843683

进入解压缩后的v4.38-9760目录下

image-20250404121912301

修改源码文件参数以支持静态路由表下发功能

vi src/Cedar/Server.c

image-20250404121946999

使用vi编辑器打开后,通过shift+g键跳转到文件的最后一行,由最后一行向前找到下面图中参数所在位置,将ret = true改为ret =false,然后wq保存后退出

image-20250404122206555

此时可以开始对源码进行编译

./configure

make

image-20250404122326475

等待一段时间完成编译后,进入bin/vpnserver路径下,通过./vpnserver start启动softetherVPN

image-20250404122523907

SoftetherVPN正常启动后,可以看到此时VPN使用的端口为5555

为了方便后续调试,暂时把防火墙关闭

systemctl stop  firewalld.service

image-20250404122624772

配置softetherVPN(softetherVPN基础配置)

在同一局域网的另一台电脑上安装softetherVPN的管理程序,安装后如下图

image-20250404122849483

打开后点击新设置

image-20250404122953703

名称可以随意

主机名为安装softetherVPN server的centos的IP地址

端口号为前文centos softetherVPN启动后显示的端口

密码 首次连接不需要输入密码

image-20250404123126655

填写完成后点击连接

image-20250404123150193

连接到刚安装好的softetherVPN需要设置初始密码

首次设置提示简单安装,这里可以直接关闭

image-20250404123240909

IPSEC/L2TP设置这里我们选择是,Windows可以使用Windows的softetherVPN客户端连接VPN,但是苹果电脑只能使用此方式连接VPN,如果后期需要macos连接vpn的话需要按照此图进行勾选,此处按照下图勾选IPSEC/L2TP的配置,IPSEC预共享密钥可以自己改动,尽量设置的复杂一些,设置完成后点击确定即可

image-20250404123349671

首次进入设置默认存在一个DEFAULT的虚拟HUB,这里我们把DEFAULT虚拟HUB删除掉,然后新建一个虚拟HUB,这里建议虚拟HUB名为VPN,管理密码可以自己设置

image-20250404123852498

image-20250404123922769

创建完成后我们可以点击管理虚拟HUB进入虚拟HUB配置页面

image-20250404123944593

点击管理用户可以新增或者删除用户,另外还有一些对用户的验证方式,此处不再赘述,客户端连接VPN之前,我们需要先在此处为需要使用的用户建立用户名和密码

image-20250404124010470

image-20250404124028463

虚拟NAT和虚拟DHCP服务器,用以为拨入用户分配IP地址和静态路由

image-20250404124102765

这里我们先进行SecureNAT设置,再启用SecureNAT

image-20250404124123192

一般情况下,我们可以直接使用默认配置,

虚拟主机网络接口IP为拨入VPN用户的网关

虚拟DHCP服务器设置可以为拨入用户自动分配IP

DNS服务器可以根据自己需求调整,保存默认也可以

虚拟NAT功能无特殊需求保持默认即可

此处配置完成后就可以直接启用SecureNAT功能,softetherVPN的基础功能就可以正常使用了

image-20250404213726801

image-20250404213741975

SoftetherVPN下发静态路由(softetherVPN定制化配置)

如果一些场景下,不需要vpn客户端所有的流量走VPN隧道,只需要特定网段的流量走softetherVPN的情况下,可以使用静态路由表推送功能,

使用静态路由表推送功能建议将SecureNAT配置中的默认网关删除留空,因为DHCP服务器分发IP的时候分发了默认网关,使用VPN的电脑就会生成一台默认路由指向网关,导致连接VPN的电脑的所有流量都会走VPN隧道出去,所以建议使用静态路由表推送功能时先删除掉网关

PS:以下配置为根据自己网络实际需求进行定制化配置,不了解自己网络的可以不看

根据自己需要编辑静态路由

例如:连接VPN的电脑访问192.168.3.0/24网段时走VPN隧道,其他情况下仍然走电脑自己的网络

可以编辑静态路由 192.168.3.0/255.255.255.0/192.168.30.1

image-20250404220531389

image-20250404220611325

SoftetherVPN设置开机自启+系统开启防火墙

设置softetherVPN开机自启已经相应防火墙策略开通

###编辑rc.local文件###
vi /etc/rc.d/rc.local 

###在最后一行添加上述代码后保存###
/opt/v4.38-9760/bin/vpnserver/vpnserver start

image-20250404220849045

为rc.local添加可执行权限

chmod +x /etc/rc.d/rc.local

image-20250404220912703

开启防火墙,为softetherVPN开启特定端口(如果服务器不想使用防火墙的情况下,需要永久关闭防火墙,上文中的systemctl stop firewalld只能临时关闭防火墙,重启后防火墙会自动开启)

systemctl  start firewalld
firewall-cmd --zone=public --add-port=5555/tcp --permanent
systemctl  restart firewalld

image-20250404221128942

softetherVPN特殊使用方式

1、不对客户端的IP进行nat,使用二层网桥

SecureNAT里面把虚拟NAT设置勾选去掉,不进行NAT功能,

虚拟DHCP服务器可设置可不设置,不设置的情况下,可以使用桥接的物理网卡连接网段内的DHCP服务器进行地址下发,也可以自己设置上,使用softetherVPN进行地址下发,网关设置为桥接的物理网卡所在网段的网关,DHCP分配的IP也设置成桥接的物理网卡所在网段可以使用的IP,虚拟主机网络接口可以不设置,设置的情况下不能与桥接的物理网卡所在网段的主机地址重合

image-20250404221426632

设置二层桥接

image-20250404221555211

虚拟HUB选择自己使用的虚拟HUB

桥接的网络适配器为安装softetherVPN的服务器的物理网卡,可以根据自己的需求选择

选择好后,选择创建桥

image-20250404221621688

使用二层桥接的好处是,所有拨进来的VPN用户都会在VPN服务器所在的局域网内拥有单独的IP地址,通过网络设备可以分析到每一个用户的行为,同时因为没有使用softetherVPN自带的NAT功能,一定程度上也减少了设备的开销,使VPN访问速度以及延迟表现更好

THE END