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

news2024/12/24 20:51:49

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 后续设置

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

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

image-20221226002338220

image-20221226002352059

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/115047.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

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

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

SpringSecurity(十)【CSRF 漏洞保护】

十、CSRF 漏洞保护 简介 CSRF&#xff08;Cross-Site Request Forgery 跨站请求伪造&#xff09;&#xff0c;也可称为一键式攻击&#xff08;one-click-attack&#xff09;通常缩写为 CSRF 或者 XSRF。CSRF 攻击是一种挟持用户在当前已登录的浏览器上&#xff0c;发送恶意请求…

Python绘制地磁场

文章目录简介磁场绘制简介 为国际参考磁场对Python的封装&#xff0c;可通过经纬高度以及时间来计算地磁场强度&#xff0c;使用方法简单粗暴&#xff0c;如下 import pyIGRF pyIGRF.igrf_value(lat, lon, alt, date)参数含义为 lat 纬度lon 经度alt 海拔date 日期&#xff…

vuejs中组件的两种不同的编写风格-选项式API及组合式API

前言随着vue3的逐渐稳定,以及周边生态的完善,现在vue3已经成为默认的使用方式了的所以,对于一个前端开发者,Vue2与Vue3都得要会,在vue3中新增很多东西,比如:Fragment,Teleport,Suspense,也去掉了vue2中一些特性,比如:移除keyCode支持作为v-on的修饰符等在编程风格上也有一些区别…

Java项目:springBoot+Vue汽车销售管理系统

作者主页&#xff1a;源码空间站2022 简介&#xff1a;Java领域优质创作者、Java项目、学习资料、技术互助 文末获取源码 项目介绍 本项目基于spring boot以及Vue开发&#xff0c;为前后端分离的项目。针对汽车销售提供客户信息、车辆信息、订单信息、销售人员管理、财务报表等…

【Python百日进阶-数据分析】Day138 - plotly甘特图:px.timeline()

文章目录一、语法二、参数三、返回值四、实例4.1 带有 plotly.express 的甘特图和时间表4.1.1 普通甘特图4.1.2 px.timeline 的离散颜色4.1.3 px.timeline 的连续颜色4.1.4 同一水平线上有多个条4.1.5 Dash中使用甘特图一、语法 甘特图是一种条形图&#xff0c;用于说明项目进…

【C++高阶数据结构】并查集

&#x1f3c6;个人主页&#xff1a;企鹅不叫的博客 ​ &#x1f308;专栏 C语言初阶和进阶C项目Leetcode刷题初阶数据结构与算法C初阶和进阶《深入理解计算机操作系统》《高质量C/C编程》Linux ⭐️ 博主码云gitee链接&#xff1a;代码仓库地址 ⚡若有帮助可以【关注点赞收藏】…

Linux之top命令详解

Linux之top命令详解 一、简单介绍 top是Linux性能分析工具&#xff0c;显示系统占用资源情况&#xff0c;和windows的任务管理器一样。top动态显示进程暂用资源情况&#xff0c;top对系统处理器的状态监视&#xff0c;它将显示CPU任务列表&#xff0c;按照CPU使用、内存使用和…

You are not allowed to create a user with GRANT

8.0之后的mysql不支持授权的时候就进行用户创建&#xff0c;所以创建之后才能授权; USE mysqlSELECT USER, PASSWORD, HOST FROM USER;SELECT USER ,grant_priv FROM USERCREATE USER zjy IDENTIFIED BY 123456; #host默认是%GRANT ALL PRIVILEGES ON *.* TO zjy% MySql-Ser…

【正点原子I.MX6U-MINI移植篇】rootfs移植过程详解(三)

Linux三巨头己经完成了2个了&#xff0c;就剩最后一个rootfs&#xff08;根文件系统&#xff09;了&#xff0c;根文件系统的组成以及如何构建根文件系统是Liux移植的最后一步&#xff0c;根文件系统构建好以后就意味着我们己经拥有了一个完整的、可以运行的最小系统。以后我们…

智慧工地车辆未冲洗抓拍系统 opencv+yolo

智慧工地车辆未冲洗抓拍系统利用opencvyolo网络深度学习架构模型对现场画面中车辆的冲洗情况实现智能识别。OpenCV基于C实现&#xff0c;同时提供python, Ruby, Matlab等语言的接口。OpenCV-Python是OpenCV的Python API&#xff0c;结合了OpenCV CAPI和Python语言的最佳特性。O…

微信防撤回功能修改

今天无意之中看到了一个帖子&#xff0c;谈到了有关微信消息撤回的。突发奇想实现一下&#xff0c;以后就不怕错过朋友的消息了。 首先介绍一下基本思路&#xff0c;由于微信采用的是CS端原理&#xff0c;所有的数据请求均通过服务器&#xff0c;客户端只是响应指令而已。 A向…

实验三:自主存取控制实验

【实验目的】 掌握自主存取控制权限的定义和维护方法。掌握在ORACLE数据库中定义用户、角色&#xff0c;分配权限给用户、角色&#xff0c;回收权限&#xff0c;以相应用户登录数据库验证权限分配是否正确的方法。 【实验内容】 设有一个企业&#xff0c;由总裁负责管理采购、…

【Pandas指南】Series

Pandas数据结构简介 - Series 来源&#xff1a;Pandas官网&#xff1a;https://pandas.pydata.org/docs/getting_started/intro_tutorials/index.html 笔记托管&#xff1a;https://gitee.com/DingJiaxiong/machine-learning-study 下面将从对 pandas 中的基本数据结构进行快速…

Git Bash Here和RStudio软件的问题解决

Git Bash Here和RStudio软件的问题解决 文章目录Git Bash Here和RStudio软件的问题解决0、 写在前面1、Git软件在任务栏图标空白2、RStudio软件2.1 警告信息InormalizePath(path.expand(path),winslash,mustWork)2.2 incomplete final line found by readTableHeader on报错3、…

推荐两个go语言的websocket库

最近在写一个需要前后端保持通信的服务。前端要能及时感知后端数据的变化&#xff0c;后端要及时处理前端发过来的指令。这种服务就需要用到websocket了。 以前在写websocket相关的程序时&#xff0c;一直在用gorilla/websocket这个库&#xff0c;这个库事实上已经成为了go语言…

后端面试之系统设计 - 用户密码如何储存在DB里

原文地址&#xff1a;码农在新加坡的个人博客 背景 现在很多网站都因为爆库导致密码泄漏&#xff0c;要设计怎么样的密码储存机制&#xff0c;才能保证最大限度的不被盗取&#xff0c;即使数据泄漏&#xff0c;黑客也无法在短时间内获取对应的密码来登录用户的账号&#xff0c…

LeanCloud: 数据存储实现小程序云开发

1. LeanCloud 官网传送 2. LeanCloud选择原因 微信小程序的开发包括上线需要一个备案过的域名&#xff0c;而域名备案又需要一个服务器&#xff08;仅腾讯云而言&#xff09;。而微信云开发作为个人开发者受限于费用也不做考虑。 此时不考虑复杂的业务逻辑数据库读取是后端服…

A股、港股上市公司碳排放、碳强度和碳披露数据(2018-2021年)

随着中国碳强度减排任务的不断加重&#xff0c;当前政策的就业红利将不复存在&#xff0c;同时政策机制蕴含的资源错配、各行业边际减排成本不相等的问题则愈加严重&#xff0c;实施碳交易减排政策的时机逐渐成熟&#xff0c;政府应如何根据二氧化碳排放量、碳强度和碳披露等数…

带你走进Java字符串的小世界

目录 一. String 1. 什么是String 2. String常用构造器 3. 字符串的判断 4. 字符串的获取 5. 字符串的转换 6. 字符串比较和替换 7. 字符串的切割 二. StringBuffer与StringBuilder 2.1 关于StringBuffer 2.1.1 定义 2.1.2 构造方法 2.2 关于StringBuffer 三. StringJoiner的使…