【折腾服务器 4】ESXi 中 Ubuntu 安装 NPS 客户端 ( NPC )

news/2024/12/3 7:25:55/

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}/npcRequires=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 后续设置

上述操作完成之后,就可以重启虚拟机进行测试了。查看服务能否正常自启动,上面的两个代码总有一个能用,具体哪个生效我给忘了,实在抱歉。

之后,都设置完成之后,按照流程关闭虚拟机,然后更改资源分配设置,如图:

image-20221226002338220

image-20221226002352059

我测试过,这个是 Ubuntu 22.04 的最低能启动的配置,因为这个虚拟机只专注于 NPC 客户端服务,因此这个需求足够,我挂在公网的服务器的配置甚至比这个还要低 =)无非就是开机的时候慢一些而已。

然后把这个虚拟机也添加到开机自启动里,这样服务器开始这个虚拟机也就开始工作了。


http://www.ppmy.cn/news/6678.html

相关文章

梦想SkyPython IDLE入门

IDLE是Python软件包自带的一个集成开发环境&#xff0c;初学者可以利用它方便地创建、运行、测试和调试Python程序。 一、IDLE的安装 实际上&#xff0c;IDLE是跟Python一起安装的&#xff0c;不过要确保安装时选中了“Tcl/Tk”组件&#xff0c;准确地说&#xff0c;应该是不要…

车牌检测模型训练(含源码和数据集)

车牌检测模型训练(含源码和数据集) 本教程利用NVIDIA TAO进行车牌检测模型的训练: 模型框架:SSD数据集: CRPD, 连接:https://github.com/yxgong0/CRPD训练框架: NVIDIA TAO, 安装教程连接: https://docs.nvidia.com/tao/tao-toolkit/text/tao_toolkit_quick_start_guide.html…

C#语言实例源码系列-实现FTP下载文件

专栏分享点击跳转>Unity3D特效百例点击跳转>案例项目实战源码点击跳转>游戏脚本-辅助自动化点击跳转>Android控件全解手册 &#x1f449;关于作者 众所周知&#xff0c;人生是一个漫长的流程&#xff0c;不断克服困难&#xff0c;不断反思前进的过程。在这个过程中…

【类和对象(上)】

Quitters never win and winners never quit. 目录 1.面向过程和面向对象初步认识 2.类的引入 3.类的定义 4.类的访问限定符及封装 4.1 访问限定符 4.2 封装 5.类的作用域 6.类的实例化 7.类对象模型 7.1 如何计算类对象的大小 7.2 结构体内存对齐规则 8.this指针 …

后端思维篇:如何抽个上报模板

前言 大家好&#xff0c;我是田螺。 我的后端思维专栏好久没更新啦&#xff0c;本文是后端思维专栏的第六篇哈。我的整个后端思维专栏都是跟日常工作相关的哈。 最近刚好优化了安全上报这块的代码&#xff0c;抽了一个基础模板&#xff0c;看起来挺优雅的。所以今天手把手教…

[Jule CTF 2022] 部分WP

这个比赛参加的人极少&#xff0c;比赛有一星期那么长&#xff0c;快结束的时候来了个大牛&#xff0c;一下上到12000&#xff0c;我这6K只能排到第二了。不过题还是挺不错的。只是入口不是人链接&#xff0c;得自己输才能进&#xff0c;可能很多人因为这个没参加。 Crypto E…

spring事物使用示例及原理总结

目录 事务示例 示例一 示例二 示例三 示例四 示例五 示例六 事务原理 EnableTransactionManagement 执行代理对象目标方法 事务示例 示例一 在test()方法直接调用abc()方法&#xff0c;并在test()方法添加Transactional&#xff0c;test()和abc()方法分别会更新id…

《计算机软件基础》实验一

实验一&#xff1a;线性表&#xff0f;栈与队 一、实验目的 了解实现线性表&#xff0f;栈与队&#xff0f;数组所涉及到的数据结构。 二、实验要求 因受时间限制&#xff0c;从以下给出的4个实验内容中任选3个&#xff0c;分析并补齐给出的源程序&#xff0c;运行相应的程…