Catch Up
书接上回,上一章中,群晖已经能定期给 Windows 物理机服务器做备份了,但是依然无法从外网访问服务器上的内容,本篇讲述如何在 Ubuntu 中安装 NPS 客户端,也就是所谓的 NPC ( Client )。
Chapter 1 准备一个 Ubuntu 系统
在 ESXi 中新建一个虚拟机,我将全部的核心都分配出去了,然后初期分配了 2GB 内存,为的是安装的时候能快一些。然后使用 BIOS
启动,这个虚拟机主要是用于 NPS 客户端服务的,不干别的,因此储存空间只分配了 16GB。然后网口也是分一个独立使用的即可。
系统选择的是 ubuntu-22.04-live-server-amd64.iso 这个镜像,安装的时候仅仅勾选 Open SSH
和一些基础组件,其他的不需要,装了也是占用资源。安装过程中提示镜像源,我更换的是 阿里云的镜像源,地址如下:
http://mirrors.aliyun.com/ubuntu/
安装的时候只使用命令行界面就行,因为根本用不着图像化界面。
镜像在创建的时候以虚拟光驱的形式挂在,第一次安装完成之后,会要求重启,这个时候进入虚拟机设置页面将这个虚拟光驱断开连接,然后就和其他的安装过程一样。
不明白的可以看这篇博客的前半段 Esxi 6.7部署配置Ubuntu-22.04-live-server_Rocky-Lad的博客-CSDN博客_esxi安装ubuntu,博主讲的非常清晰,虽然软件版本不一样但是不影响安装过程。
Chapter 2 安装 NPS 客户端 ( NPC )
我因为已经安装过 NPS 的服务端了,这里就不再展示了,网上有许多的 NPS 服务端的安装教程,但是 NPS 的客户端特别是针对于 Ubuntu 的客户端安装比较少,这里着重展示这一部分。
Step 1 下载配置 Linux 版本的 NPS 客户端 ( NPC )
我的服务端是 0.26.10 版本,因此我是用下面的命令下载这一版本
wget https://github.com/ehang-io/nps/releases/download/v0.26.10/linux_amd64_client.tar.gz
如果你使用的是别的版本,请到 Github 中寻找对应版本,Github 仓库地址在此 Releases · ehang-io/nps · GitHub
Step 2 创建启动脚本
解压后,我直接将解压后的全部文件放在了 home/{username}/
这个目录,其中的 username
是你的用户名。然后在这个目录创建 startnpc.sh
这个文件。并将下面的内容复制进去,然后保存。
#!/bin/sh
cd /home/{username}/
echo '{Your Password}'|sudo -S nohup ./npc -server={Server Addr} -vkey={VKEY} -type=tcp >file.out 2>&1 &
- {username} 是你的用户名,具体第二行也就是
cd
命令后面的路径,需要和你的解压路径一致,也就是进入这个路径之后,可以看到你解压后的全部文件。 - {Your Password} 是你的用户密码,最理想的情况下,
root
用户和你创建的用户的密码是一致的。 - {Server Addr} 是你的 NPS 服务端的服务器的 IP 地址及端口号,格式如下:
xxx.xxx.xxx.xxx:xxxx
。 - {VKEY} 是 NPS 服务端生成的一个密钥。
Step 3 创建自启动脚本
输入下面的指令,进入 /etc/systemd/system
目录,网上也有说前往 /lib/systemd/system
路径的,我试过,没成功,估计是是给 Ubuntu 20.04 使用的,在 22.04 版本失效了。这里需要注意系统版本,如果不成就去另外一个目录试试。
cd /etc/systemd/system/
用管理员权限创建 npc.service
,输入下面两个脚本中的一个,我忘记哪个有效了,都试试。
shell 1
[Unit]
Description=一款轻量级、功能强大的内网穿透代理服务器。支持tcp、udp流量转发,支持内网http代理、内网socks5代理,同时支持snappy压缩、站点保护、加密传输、多路复用、header修改等。支持web图形化管理,集成多用户模式。
ConditionFileIsExecutable=/home/{username}/npc
Requires=network.target
After=network-online.target syslog.target
[Service]
LimitNOFILE=65536
StartLimitInterval=5
StartLimitBurst=10
ExecStart=/home/{username}/startnpc.sh "-debug=false"
Restart=always
RestartSec=120
[Install]
WantedBy=multi-user.target
- ConditionFileIsExecutable 后面填写解压后文件里的
npc
的文件地址 - ExecStart 后面填写的是 NPC 启动脚本的文件地址
shell 2
[Unit]
Description=npc
After=network.target
<200b>
[Service]
Type=forking
ExecStart=/home/{username}/startnpc.sh
Restart=always
RestartSec=5
PrivateTmp=true
<200b>
[Install]
WantedBy=multi-user.target
- ExecStart 后面填写的是 NPC 启动脚本的文件地址
创建完成之后,保存,然后输入下面的命令
sudo systemctl daemon-reload
接着设置开机自启动
sudo systemctl enable npc
设置开启服务
sudo systemctl start npc
查看服务状态
sudo systemctl status npc
Chapter 3 后续设置
上述操作完成之后,就可以重启虚拟机进行测试了。查看服务能否正常自启动,上面的两个代码总有一个能用,具体哪个生效我给忘了,实在抱歉。
之后,都设置完成之后,按照流程关闭虚拟机,然后更改资源分配设置,如图:
我测试过,这个是 Ubuntu 22.04 的最低能启动的配置,因为这个虚拟机只专注于 NPC 客户端服务,因此这个需求足够,我挂在公网的服务器的配置甚至比这个还要低 =)无非就是开机的时候慢一些而已。
然后把这个虚拟机也添加到开机自启动里,这样服务器开始这个虚拟机也就开始工作了。