概述
使用vlmcsd搭建一个windows激活服务器。主要是kms激活。
项目地址:https://github.com/Wind4/vlmcsd/releases/tag/svn1113

安装
# 克隆项目
git clone https://github.com/Wind4/vlmcsd.git
# 进入项目目录
cd vlmcsd
# 编译项目
make
# 将编译成功的二进制程序文件复制至Path路径中
cp bin/vlmcsd /usr/local/bin/
执行示例如下:
[root@zabbix01 ~]# cd /usr/local/src/
[root@zabbix01 src]# ls
[root@zabbix01 src]# git clone https://github.com/Wind4/vlmcsd.git
正克隆到 'vlmcsd'...
remote: Enumerating objects: 1636, done.
remote: Total 1636 (delta 0), reused 0 (delta 0), pack-reused 1636 (from 2)
接收对象中: 100% (1636/1636), 12.31 MiB | 3.00 MiB/s, 完成.
处理 delta 中: 100% (852/852), 完成.
[root@zabbix01 src]# cd vlmcsd
[root@zabbix01 vlmcsd]# make
make[1]: 进入目录“/usr/local/src/vlmcsd/src”
CC vlmcs.o <- vlmcs.c
CC kmsdata-full.o <- kmsdata-full.c
CC crypto.o <- crypto.c
CC kms.o <- kms.c
CC endian.o <- endian.c
CC output.o <- output.c
CC shared_globals.o <- shared_globals.c
CC helpers.o <- helpers.c
CC network.o <- network.c
CC rpc.o <- rpc.c
CC crypto_internal.o <- crypto_internal.c
CC dns_srv.o <- dns_srv.c
CC vlmcsd.o <- vlmcsd.c
CC kmsdata.o <- kmsdata.c
LD ../bin/vlmcs <- vlmcs.o kmsdata-full.o crypto.o kms.o endian.o output.o shared_globals.o helpers.o network.o rpc.o crypto_internal.o dns_srv.o
LD ../bin/vlmcsd <- vlmcsd.o kmsdata.o crypto.o kms.o endian.o output.o shared_globals.o helpers.o network.o rpc.o crypto_internal.o
make[1]: 离开目录“/usr/local/src/vlmcsd/src”
[root@zabbix01 src]# cp bin/vlmcsd /usr/local/bin/
[root@zabbix01 vlmcsd]# ll /usr/local/bin/vlmcsd
-rwxr-xr-x 1 root root 43080 6月 18 21:44 /usr/local/bin/vlmcsd
注意
事项一:git没有安装
一般新安装的Linux操作系统是没有git命令的,可以直接使用dnf工具安装的,手动安装一下。
[root@zabbix01 src]# git
-bash: git: 未找到命令
安装git
dnf -y install git
事项二:编译工具没有安装
在安装Linux操作系统时,没有选择开发工具,会造成无法进行编译安装软件,需要进行安装。
[root@zabbix01 vlmcsd]# make
-bash: make: 未找到命令
安装开发工具组
[root@zabbix01 vlmcsd]# dnf groupinstall "Development Tools" -y
如果以上命令遇到阻碍导致无法成功安装gcc及make,可以使用以下命令进行覆盖安装

[root@zabbix01 vlmcsd]# dnf groupinstall "Development Tools" --nobest --allowerasing -y

配置开机自启
使用以下两个方式均可。
方式一:系统服务
编写服务文件
vi /etc/systemd/system/vlmcsd.service
将下列信息写入service文件中。
[Unit]
Description=KMS server (vlmcsd)
After=network.target
After=network-online.target
Wants=network-online.target
[Service]
Type=oneshot
#如下路径替换成实际的
ExecStart=/usr/local/bin/vlmcsd
RemainAfterExit=yes
LimitNOFILE=65536
[Install]
WantedBy=multi-user.target
打开服务
[root@zabbix01 vlmcsd]# systemctl start vlmcsd
设置开机启动
[root@zabbix01 vlmcsd]# systemctl enable vlmcsd
方式二:Supervisor
需要事先安装supervisor 并且将其设置为开机启动
具体参考地址:https://blog.wlzs.cn/archives/shi-yong-supervisor
编写应用配置
vi /etc/supervisord.d/vlmcsd.ini
具体内容如下:
[program:vlmcsd]
# 路径根据实际情况进行填写
command=/usr/local/bin/vlmcsd
autostart=true
autorestart=true
启用服务
systemctl start supervisord
systemctl enable supervisord
supervisorctl start vlmcsd
验证服务
vlmcsd监听在1688端口进行服务,可以查看端口是否正常开放,也可以通过进程的方式查看。
# 端口方式
[root@zabbix01 vlmcsd]# ss -tnlp | grep 1688
LISTEN 0 128 0.0.0.0:1688 0.0.0.0:* users:(("vlmcsd",pid=3701385,fd=4))
LISTEN 0 128 [::]:1688 [::]:* users:(("vlmcsd",pid=3701385,fd=3))
# 进程方式
[root@zabbix01 vlmcsd]# ps -aux | grep vlmcsd
root 3701385 0.0 0.0 6572 116 ? Ss 21:45 0:00 /usr/local/bin/vlmcsd
开放端口
Linux一般都会开启selinux及firewalld,如不正确配置会导致服务无法正常提供服务。
设置selinux
显示为Disabled为关闭状态,可跳过此步骤。
[root@zabbix01 vlmcsd]# getenforce
Disabled
如果selinux没有关闭,可以通过修改配置文件进行。
[root@zabbix01 vlmcsd]# vi /etc/selinux/config
配置文件如下图所示,将SELINUX=enforcing更改为SELINUX=disabled。重启后会永久生效。一定要重启!

设置防火墙
如果防火墙已关闭,跳过此步骤。
inactive(dead)为关闭状态。
[root@zabbix01 vlmcsd]# systemctl status firewalld
● firewalld.service - firewalld - dynamic firewall daemon
Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled)
Active: inactive (dead)
Docs: man:firewalld(1)
如防火墙已开启,按以下方式设置端口开放
# 添加防火墙端口开放规则 允许访问1688的端口
[root@zabbix01 vlmcsd]# firewall-cmd --zone=public --add-port=1688/tcp --permanent
# 重载防火墙规则,让规则生效
[root@zabbix01 vlmcsd]# firewall-cmd --reload
客户端测试
telnet server_ip 1688

如下图所示,即客户端访问服务器正常,服务已正常启动。

评论区