内网穿透工具NPS(保姆级教程)
前言:
有时候我们受限于硬件设备和网络的的问题,无法将内网的大容量、高性能存储设备或计算设备对外访问。这个时候就会变的特别苦恼,上云呢成本太大,不用云呢公网又无法直接访问,这个时候怎么办呢,NPS它来了!!!!
nps是一款轻量级、高性能、功能强大的内网穿透代理服务器。目前支持tcp、udp流量转发,可支持任何tcp、udp上层协议(访问内网网站、本地支付接口调试、ssh访问、远程桌面,内网dns解析等等……),此外还支持内网http代理、内网socks5代理、p2p等,并带有功能强大的web管理端。
GitHub地址:https://github.com/ehang-io/nps
下载地址:https://github.com/ehang-io/nps/releases/tag/v0.26.10
详细介绍参考文档:https://gitee.com/penry/nps?skip_mobile=true#nps
一、环境准备
1、带公网的服务器一台(以下均使用ECS代替),配置不用特别高
2、内网的Linux服务器或者Windows服务器
二、源码包下载
1、先在ECS上下载NPS的服务端包进行安装配置
wget https://github.com/ehang-io/nps/releases/download/v0.26.10/freebsd_amd64_server.tar.gztar -zxf linux_amd64_server.tar.gz[root@qingtong nps]# ls
conf linux_amd64_server.tar.gz nps web
2、默认配置文件在conf目录下,也可以先启动在配置文件,启动后的配置文件在/etc/nps/conf/nps.conf 修改这个配置文件也是可以的
请参照下面的基础配置文件修改适配自己的配置
如需更高级的配置请参考:https://gitee.com/penry/nps?skip_mobile=true#nps
#应用程序的名称,此处为"NPS"。
appname = nps
#Boot mode(dev|pro)
#启动模式,可以是开发模式(dev)或生产模式(pro)。
runmode = dev#HTTP(S) proxy port, no startup if empty
#HTTP和 HTTPS代理的配置,包括代理服务器的IP和端口,以及是否只使用HTTPS代理。
http_proxy_ip=0.0.0.0
http_proxy_port=22000
https_proxy_port=22001
https_just_proxy=true#default https certificate setting
默认的HTTPS证书和私钥文件路径。
https_default_cert_file=conf/server.pem
https_default_key_file=conf/server.key##bridge
#桥接(bridge)配置,定义桥接的类型、端口和IP。
bridge_type=tcp
bridge_port=22002
bridge_ip=0.0.0.0# Public password, which clients can use to connect to the server
# After the connection, the server will be able to open relevant ports and parse related domain names according to its own configuration file.
#公共密码,客户端使用该密码连接到服务器。
public_vkey=123#Traffic data persistence interval(minute)
#Ignorance means no persistence
#流量数据持久化间隔,以分钟为单位。
#flow_store_interval=1# log level LevelEmergency->0 LevelAlert->1 LevelCritical->2 LevelError->3 LevelWarning->4 LevelNotice->5 LevelInformational->6 LevelDebug->7
#日志级别,数值从0到7,表示从紧急(LevelEmergency)到调试(LevelDebug)。
log_level=7
#log_path=nps.log#Whether to restrict IP access, true or false or ignore
#是否限制IP访问。
#ip_limit=true#P2P配置,定义P2P的IP和端口。
#p2p
#p2p_ip=127.0.0.1
#p2p_port=6000#web
#Web管理界面的配置,包括主机名、用户名、密码、端口和IP。
web_host=a.o.com
web_username=admin
web_password=^hjkl/-321,
web_port = 22003
web_ip=0.0.0.0
#Web管理界面的基本URL路径。
web_base_url=
#Web管理界面是否启用SSL以及SSL证书和私钥文件的路径。
web_open_ssl=false
web_cert_file=conf/server.pem
web_key_file=conf/server.key
# if web under proxy use sub path. like http://host/nps need this.
#web_base_url=/nps#Web API unauthenticated IP address(the len of auth_crypt_key must be 16)
#Remove comments if needed
#auth_key=test
#Web API无需身份验证时允许访问的IP地址,以及用于加密的密钥。
auth_crypt_key =1234567812345678#allow_ports=9001-9009,10001,11000-12000
#允许连接的端口范围。TCP协议相关配置,包括模式、服务器端口和目标端口范围。
[tcp]
mode=tcp
server_port=22000-23000
target_port=22000-23000#Web management multi-user login
#允许用户登录、注册和更改用户名的配置。
allow_user_login=true
allow_user_register=true
allow_user_change_username=true#extension
#不同功能的开关,控制流量限制、速率限制、隧道数量限制、本地代理、连接数量限制、多IP支持以及系统信息显示等。
allow_flow_limit=false
allow_rate_limit=false
allow_tunnel_num_limit=false
allow_local_proxy=false
allow_connection_num_limit=false
allow_multi_ip=false
system_info_display=false#cache
#HTTP缓存的配置,包括是否启用和缓存长度。
http_cache=false
http_cache_length=100#get origin ip
#是否在HTTP请求中添加原始IP头。
http_add_origin_header=false#pprof debug options
#pprof_ip=0.0.0.0
#pprof_port=9999#client disconnect timeout
#客户端断开连接的超时时间,单位为秒。
disconnect_timeout=60
安装成功后,对于linux,darwin,将会把配置文件和静态文件放置于/etc/nps/,并将可执行文件nps复制到/usr/bin/nps或者/usr/local/bin/nps,安装成功后可在任何位置执行
nps test|start|stop|restart|status
3、安装配置完成后打开web页面控制端输入配置文件里的账号密码登录
1)在左侧的导航栏点击客户端,然后根据提示新增客户端

2)新增客户端口新增TCP隧道与刚才新增客户端就行绑定(客户端ID与前边创建的客户端进行对应),服务端口的配置范围是配置文件里限制的,请依照配置文件来

4、在内网的Linux主机上安装NPC客户端进行内网穿透
wget https://github.com/ehang-io/nps/releases/download/v0.26.10/linux_amd64_client.tar.gz
#解压
tar -zxf linux_amd64_client.tar.gz
NPC客户端是不需要任何配置文件的,所以只需要程序就可以

复制此处的命令到内网的主机上执行
扩展知识:推荐大家使用第一种方法,至于区别请看下列对比
要将 NPC 客户端的输出重定向到后台或文件,你可以使用 shell 中的重定向功能。有两种常见的方法可以做到这一点:1、后台运行并保存输出到文件npc -server=xxx.xxxxxxx.xxx:22002 -vkey=qingtongqingc@test1 -type=tcp &> /var/log/npc.log &# 这将把 NPC 客户端的标准输出和标准错误输出都重定向到名为 npc.log 的文件,并且客户端在后台运行(使用 & 符号)。2、后台运行并将输出保存到文件但仅记录标准错误输出npc -server=xxx.xxxxxxx.xxx:22002 -vkey=qingtongqingc@test1 -type=tcp 2> /var/log/npc_error.log &# 这将把标准错误输出重定向到名为 npc_error.log 的文件,而标准输出仍然会显示在终端上。

5、确认没问题后进行验证

访问成功后就可以在任何地方去访问这台内网的机器
windows主机的添加方法类似,后续有时间会在更新,请大家持续关注~~~~~~~~
相关文章:
内网穿透工具NPS(保姆级教程)
前言: 有时候我们受限于硬件设备和网络的的问题,无法将内网的大容量、高性能存储设备或计算设备对外访问。这个时候就会变的特别苦恼,上云呢成本太大,不用云呢公网又无法直接访问,这个时候怎么办呢,NPS它来…...
最长公共子序列问题
构造最长公共子序列为什么要这样构造序列 for(int i1;i<n;i){int k;cin>>k;b[k]i;}for(int i1;i<n;i){int k;cin>>k;a[i]b[k];}并且为什么要求上升序列,是有什么数学知识包含在其中吗? 为什么在求最长公共子序列时,f[mid]大…...
服务器数据恢复—热备盘同步中断导致Raid5数据丢失的数据恢复案例
服务器数据恢复环境: 某单位一台服务器上有一组raid5阵列,该raid5阵列有15块成员盘。上层是一个xfs裸分区,起始位置是0扇区。 服务器故障&检测: 服务器raid5阵列中有硬盘性能表现不稳定,但是由于管理员长时间没有关…...
桥接模式-C++实现
桥接模式是一种结构型设计模式,它是将抽象部分和实现部分隔离,通过组合关系将抽象部分和实现部分解耦,使它们可以独立变化。 因此,桥接模式可以很好的处理两个或两个以上维度的变化。 举一个例子说明: 假设我们现在…...
PHP字符串函数的解析
在PHP中,字符串是一种常见的数据类型,用于存储和操作文本数据。PHP提供了丰富的字符串函数,用于执行各种字符串操作,包括截取、连接、替换、搜索等。在这篇文章中,我们将深入解析一些常用的PHP字符串函数,以…...
科研学习|研究方法——使用python强大的Statsmodel 执行假设检验和线性回归
如果你使用 Python 处理数据,你可能听说过 statsmodel 库。 Statsmodels 是一个 Python 模块,它提供各种统计模型和函数来探索、分析和可视化数据。该库广泛用于学术研究、金融和数据科学。 在本文中,我们将介绍 statsmodel 库的基础知识、如…...
设计模式——责任链模式
文章目录 责任链模式的定义场景示例责任链模式实现方案责任链模式扩展责任链模式的优缺点责任链模式在框架源码中的应用 责任链模式的定义 责任链模式又称职责链模式,是一种行为型设计模式。官方描述:使多个对象都有机会处理请求,从而避免请…...
nginx得if语句内proxy_pass不允许携带url部分,如何处理
在nginx中,proxy_pass指令不能直接携带URL部分。但是,可以使用rewrite指令结合正则表达式来处理URL部分。 下面是一个示例配置,演示如何使用rewrite指令将URL中的某个部分进行替换后传递给后端服务器: location /v100/{proxy_…...
CentOS7设置 redis 开机自启动
CentOS7设置 redis 开机自启动 步骤1.创建redis.service文件2.重新加载所有服务3.设置开机自启动4.自由地使用linux系统命令4.1.启动 Redis 服务4.2.查看 Redis 状态(-l:查看完整的信息)4.3.停止 Redis 服务4.4.重启 Redis 服务 步骤 如果你傲娇,不想拷贝࿰…...
C++虚函数(定义,作用,原理,案例)
一.定义: C的虚函数是在父类(基类)中声明的的函数,它可在子类(派生类)中重写。二.作用 虚函数的目的是实现多态性,即在程序运行时根据对象的实际类型确定调用哪个函数。三.使用方法: 在基类中声明虚函数时,需要在函…...
C#中.NET 6.0 控制台应用通过EF访问新建数据库
目录 一、 操作步骤 二、编写EF模型和数据库上下文 三、 移植(Migrations)数据库 四、编写应用程序并运行 前文已经说过.NET Framework4.8 控制台应用通过EF访问新建数据库,这里的数据据库要根据事先编写好的EF模型、经过一番操作&#x…...
conda创建pytorch环境报错
昨天训练数据的时候,发现Anaconda占用C盘达到了20G(暑假在cmd状态下安装的,默认下载到了C盘),心道再创建几个环境,C盘就要爆红了,于是重装Anaconda到了D盘,不过之后的初始化并不顺利…...
数据结构-插入排序实现
文章目录 1、描述2、代码实现3、结果4、复杂度 1、描述 待排序的数组分为已排序、未排序两部分; 初始状态时,仅有第一个元素为已排序序列,第一个以外的元素为未排序序列; 此后遍历未排序序列, 将元素逐一插入到已排序的序列中&am…...
CGlib动态代理和JDK动态代理
CGlib代理模式是一种基于字节码操作的代理模式,它通过生成被代理类的子类来实现代理功能。 CGlib通过继承被代理类,生成一个代理类的子类,并重写父类的方法,在方法的前后插入相应的代理逻辑。这种方式不需要被代理类实现接口&…...
分类预测 | Matlab实现PSO-GRU-Attention粒子群算法优化门控循环单元融合注意力机制多特征分类预测
分类预测 | Matlab实现PSO-GRU-Attention粒子群算法优化门控循环单元融合注意力机制多特征分类预测 目录 分类预测 | Matlab实现PSO-GRU-Attention粒子群算法优化门控循环单元融合注意力机制多特征分类预测分类效果基本描述程序设计参考资料 分类效果 基本描述 1.Matlab实现PSO…...
Python OpenCV 视频抽帧处理并保存
上篇文章中基于OpenCV实现图像处理后,类似的,也可以对视频进行处理。OpenCV库可以将视频的每一帧读取出来,然后对每一帧图像做相应的操作,并保存成新的视频。 1. 读取视频,获取相关参数 import cv2 import numpy as…...
英伟达AI布局的新动向:H200 GPU开启生成式AI的新纪元
英伟达Nvidia是全球领先的AI计算平台和GPU制造商,近年来一直在不断推出创新的AI产品和解决方案,为各行各业的AI应用提供强大的支持。 最近,英伟达在GTC 2023大会上发布了一款专为训练和部署生成式AI模型的图形处理单元(GPU&#…...
Windows11 python3.12 安装pyqt6 pyqt6-tools
Windows11 python3.12 安装pyqt6比较容易,但pyqt6-tools一直安装不上去。出错信息如下: (venv) PS D:\python_project\pyqt6> pip install pyqt6-tools Collecting pyqt6-toolsUsing cached pyqt6_tools-6.4.2.3.3-py3-none-any.whl (29 kB) Collec…...
反弹Shell
概述 反弹shell(reverse shell)就是控制端监听在某TCP/UDP端口,被控端发起请求到该端口,并将其命令行的输入输出转到控制端。reverse shell与telnet,ssh等标准shell对应,本质上是网络概念的客户端与服务端…...
Guava RateLimiter的限流机制详解
限流是保护高并发系统的三种有效方法之一。另外两个分别是缓存和降级。限流在很多场景中都会使用到限制并发数和请求数。例如,在限时抢购的情况下,限流可以保护您自己的系统和下游系统不被巨大的流量淹没。 限流的目的是通过限制并发访问或请求或者限制…...
为什么需要建设工程项目管理?工程项目管理有哪些亮点功能?
在建筑行业,项目管理的重要性不言而喻。随着工程规模的扩大、技术复杂度的提升,传统的管理模式已经难以满足现代工程的需求。过去,许多企业依赖手工记录、口头沟通和分散的信息管理,导致效率低下、成本失控、风险频发。例如&#…...
测试markdown--肇兴
day1: 1、去程:7:04 --11:32高铁 高铁右转上售票大厅2楼,穿过候车厅下一楼,上大巴车 ¥10/人 **2、到达:**12点多到达寨子,买门票,美团/抖音:¥78人 3、中饭&a…...
家政维修平台实战20:权限设计
目录 1 获取工人信息2 搭建工人入口3 权限判断总结 目前我们已经搭建好了基础的用户体系,主要是分成几个表,用户表我们是记录用户的基础信息,包括手机、昵称、头像。而工人和员工各有各的表。那么就有一个问题,不同的角色…...
DIY|Mac 搭建 ESP-IDF 开发环境及编译小智 AI
前一阵子在百度 AI 开发者大会上,看到基于小智 AI DIY 玩具的演示,感觉有点意思,想着自己也来试试。 如果只是想烧录现成的固件,乐鑫官方除了提供了 Windows 版本的 Flash 下载工具 之外,还提供了基于网页版的 ESP LA…...
Linux-07 ubuntu 的 chrome 启动不了
文章目录 问题原因解决步骤一、卸载旧版chrome二、重新安装chorme三、启动不了,报错如下四、启动不了,解决如下 总结 问题原因 在应用中可以看到chrome,但是打不开(说明:原来的ubuntu系统出问题了,这个是备用的硬盘&a…...
Android15默认授权浮窗权限
我们经常有那种需求,客户需要定制的apk集成在ROM中,并且默认授予其【显示在其他应用的上层】权限,也就是我们常说的浮窗权限,那么我们就可以通过以下方法在wms、ams等系统服务的systemReady()方法中调用即可实现预置应用默认授权浮…...
排序算法总结(C++)
目录 一、稳定性二、排序算法选择、冒泡、插入排序归并排序随机快速排序堆排序基数排序计数排序 三、总结 一、稳定性 排序算法的稳定性是指:同样大小的样本 **(同样大小的数据)**在排序之后不会改变原始的相对次序。 稳定性对基础类型对象…...
GruntJS-前端自动化任务运行器从入门到实战
Grunt 完全指南:从入门到实战 一、Grunt 是什么? Grunt是一个基于 Node.js 的前端自动化任务运行器,主要用于自动化执行项目开发中重复性高的任务,例如文件压缩、代码编译、语法检查、单元测试、文件合并等。通过配置简洁的任务…...
C/C++ 中附加包含目录、附加库目录与附加依赖项详解
在 C/C 编程的编译和链接过程中,附加包含目录、附加库目录和附加依赖项是三个至关重要的设置,它们相互配合,确保程序能够正确引用外部资源并顺利构建。虽然在学习过程中,这些概念容易让人混淆,但深入理解它们的作用和联…...
从“安全密码”到测试体系:Gitee Test 赋能关键领域软件质量保障
关键领域软件测试的"安全密码":Gitee Test如何破解行业痛点 在数字化浪潮席卷全球的今天,软件系统已成为国家关键领域的"神经中枢"。从国防军工到能源电力,从金融交易到交通管控,这些关乎国计民生的关键领域…...
