使用nps实现内网穿透

news2025/1/16 5:42:27

1、介绍

​ 当我们想把内网的一些资源暴露在公网上时,可以使用内网穿透功能。比如公司的内网服务器,部署了平时需要开发的项目,但是回到家中无法访问,就可以使用内网穿透,将公司内网的接口映射到一台公网的服务器上,用这台公网服务器做转发即可实现在家中也能外网访问。这样的就不需要我们在公网上部署一套一模一样的服务了,费时费力,而且还要同步数据。

2、准备工作

​ 想要实现内网穿透功能首先我们需要准备:

  • 一台公网服务器(用作nps的服务端)
  • 一台需要做转发的内网服务器(用作nps的客户端)

3、nps服务端安装及配置

3.1 下载nps服务端

​ 注意nps服务端是安装在公网服务器上的!!!

​ 服务端下载地址:https://github.com/ehang-io/nps/releases

在这里插入图片描述

​ 可以看到有很多版本,我的外网服务器是Linux的,可以输入命令查看服务器架构版本:

arch

在这里插入图片描述

​ x86_64 直接下载 linux_arm64_server.tar.gz 这个版本即可。可以手动下载到本地,然后通过scp命令传到服务器,也可以直接在外网服务器上下载。

​ 通过scp传送到外网服务器命令(如果开放了账号密码登录):

scp -P ssh开放的端口(如果为22,可以不用带此参数) 下载的linux_arm64_server.tar.gz的位置 登录的账号@外网服务器ip:你要拷贝到的外网服务器的位置

​ 如:

scp -P 22 C:\Users\dxc\Downloads\linux_arm64_server.tar.gz root@xxx.xxx.xxx.xxx:/home/nps

​ 按下回车,再输入密码即可(注意大小写)。

​ 通过scp传送到外网服务器命令(只开放了通过证书登录的方式):

scp -i 你证书的位置 -P ssh开放的端口(如果为22,可以不用带此参数) -r 下载的linux_arm64_server.tar.gz的位置 登录的账号@外网服务器ip:你要拷贝到的外网服务器的位置

​ 如:

scp -i C:\Documents\server-pro\ecmarkets-universal.pem -P 22 C:\Users\dxc\Downloads\linux_arm64_server.tar.gz root@81.xxx.xxx.xxx:/home/nps

​ 直接在外网服务器上下载命令:

wget https://github.com/ehang-io/nps/releases/download/v0.26.10/linux_arm64_server.tar.gz

​ 下载完成后解压,输入命令:

tar -zxvf linux_arm64_server.tar.gz

​ 解压完成后,输入指令,查看文件:

ll

​ 我们能看到有如下这些文件:

​ 这样nps就下载解压成功了。

3.2 nps配置

​ 其中 conf 文件夹中的 nps.conf 就是我们服务端的配置文件,我们需要根据自己情况稍作修改。输入命令:

vim nps.conf

​ 默认配置如图:

在这里插入图片描述

​ 我们可以根据自己的场景稍作修改,找到 #web 下的内容,其中:

  • web_username:登录管理端的账号。
  • web_password:登录管理端的密码,默认为123,此处我改为123456。
  • web_port:管理端页面的端口,默认为8080,我服务器的8080端口已被项目占用,因此我此处改为7002。
#web
web_host=a.o.com
web_username=admin
web_password=123456
web_port = 7002
web_ip=0.0.0.0
web_base_url=
web_open_ssl=false
web_cert_file=conf/server.pem
web_key_file=conf/server.key

​ 修改完成后,按 esc 退出编辑模式,在输入:

:wq

​ 保存并退出。

​ 其余配置说明如下:内容来源于官方文档:https://ehang-io.github.io/nps/#/?id=nps

名称含义
web_portweb管理端口
web_passwordweb界面管理密码
web_usernameweb界面管理账号
web_base_urlweb管理主路径,用于将web管理置于代理子路径后面
bridge_port服务端客户端通信端口
https_proxy_port域名代理https代理监听端口
http_proxy_port域名代理http代理监听端口
auth_keyweb api密钥
bridge_type客户端与服务端连接方式kcp或tcp
public_vkey客户端以配置文件模式启动时的密钥,设置为空表示关闭客户端配置文件连接模式
ip_limit是否限制ip访问,true或false或忽略
flow_store_interval服务端流量数据持久化间隔,单位分钟,忽略表示不持久化
log_level日志输出级别
auth_crypt_key获取服务端authKey时的aes加密密钥,16位
p2p_ip服务端Ip,使用p2p模式必填
p2p_portp2p模式开启的udp端口
pprof_ipdebug pprof 服务端ip
pprof_portdebug pprof 端口
disconnect_timeout客户端连接超时,单位 5s,默认值 60,即 300s = 5mins

注意:如果你先进行了 install 操作,然后再去修改 conf 文件夹下的 nps.conf 文件,那么修改将不会生效。因为当我们 install 后默认的配置文件将会在 /etc/nps 下面的 nps.conf ,此时你需要去修改此处的配置,然后在切换到nps的安装目录输入 nps restart 重启即可生效!!!

3.3 nps服务端启动

​ 输入启动命令,启动nps服务端,如果你和我一样修改了管理端的端口,那么启动服务端将会占用80、8024、7002端口。如果你存在某些端口被占用,请到配置文件自行修改即可。

./nps install
nps start

​ 此时,我们打开浏览器输入:

xxx.xxx.xxx(你的外网服务器ip):你配置的web_port端口

​ 即可看到如下登录界面:

在这里插入图片描述

​ 输入配置的账号密码,默认为admin/123,点击登录,进入仪表盘:

在这里插入图片描述

​ 此时nps的服务端我们就配置完毕了,接下来开始配置客户端。

4、nps客户端配置

4.1 管理端添加客户端配置

​ 此处我们在管理界面点击左侧菜单栏的“客户端”,再点击“新增”按钮进行客户端的新增。

在这里插入图片描述

​ 进入到新增客户端页面:

在这里插入图片描述

​ 其中:

  • 备注:客户端的备注,可填可不填,根据自身情况。
  • Basic认证用户名:不需要填。
  • Basic认证密码:不需要填。
  • 唯一验证密钥:不需要填,让系统自动生成。
  • 允许客户端通过配置文件连接:填“是”即可。
  • 压缩:填“是”即可。
  • 加密:填“是”即可。

​ 填完之后,点击保存按钮,我们即可看到新增的客户端已经出现在列表中。

在这里插入图片描述

​ 此时,我们还需要配置隧道,点击左侧的“TCP隧道”进行新增。

在这里插入图片描述

  • 模式:我们选择TCP隧道。
  • 客户端ID:填写刚刚我们创建的客户端的ID,如果是第一次创建,那客户端ID为2。
  • 备注:不需要填。
  • 服务端端口:该端口表示你的客户端的应用最后被映射到服务器上的访问端口,比如你的客户端应用的端口为3781,服务端端口填写8999,那么 访问服务端的ip:8999 相当于访问 你客户端ip:3781 的资源。
  • 目标(IP:端口):客户端需要被代理的服务的端口。

​ 配置好后点击“新增”即可。如果想在这个客户端配置多个映射,只需要添加隧道即可。

在这里插入图片描述

4.2 nps客户端安装及连接

​ 下载地址:https://github.com/ehang-io/nps/releases

​ 此处我用的是本地电脑作为客户端,本地电脑为win10,64位操作系统,其他操作系统流程几乎一致。

​ 此处我下载 windows_amd64_client.tar.gz 这个版本。

在这里插入图片描述

​ 解压文件,进入 windows_amd64_client 目录:

在这里插入图片描述

​ 直接在当前路径下进入cmd:

在这里插入图片描述

​ 此时我们需要启动客户端,而启动的命令在我们管理端的客户端配置页面,找到我们创建的客户端,点击最前面的“+”号,复制下方的“客户端命令”。注意如果在windows下执行,不要复制前面的“./”!!!

在这里插入图片描述

​ 复制后在cmd窗口中执行,如图:

在这里插入图片描述

​ 看到输出“Successful connection with server xx.xx.xx.xx:8024”,代表连接成功了。我们也可以在管理界面中看到连接变为了“在线”。

在这里插入图片描述

5、测试

​ 到此处,nps的所有配置和启动事项都完成了,接下来我们可以通过访问我们的外网服务器ip + 我们配置的TCP隧道中的端口,就能直接转发到我们的本地服务上了。

​ 我本地启动了一个端口为 3781 的 Java 服务,接下来我访问外网服务器的ip + 我们配置TCP隧道中的端口,能看到穿透成功。如图:

在这里插入图片描述

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

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

相关文章

现浇钢筋混泥土楼板施工岗前安全VR实训更安全高效

建筑行业天天与钢筋混凝土砼在,安全施工便成了企业发展的头等大事。 当今社会,人人都奉行生命无价,安全至上。可工地安全事故频繁发生,吞噬掉多少宝贵生命。破坏了多小个家庭?痛定死痛,为了提高施工人员的安全意识。 …

多目标优化

https://zhuanlan.zhihu.com/p/158705342 概念 单目标优化只有一个优化目标,所以可以比较其好坏。 但是多目标优化,在需要优化多个目标时,容易存在目标之间的冲突,一个目标的优化是以其他目标劣化为代价的,所以我们要…

CUDA小白 - NPP(2) -图像处理-算数和逻辑操作(2)

cuda小白 原始API链接 NPP GPU架构近些年也有不少的变化,具体的可以参考别的博主的介绍,都比较详细。还有一些cuda中的专有名词的含义,可以参考《详解CUDA的Context、Stream、Warp、SM、SP、Kernel、Block、Grid》 常见的NppStatus&#xf…

Vue项目直接报错

最近自己在做一个vue2项目,vue并不熟悉,所以求解!!! 通过命令:vue create app 创建项目,但打开后,浏览器直接报错,意思为:不能在模块外使用import语句(at ho…

c++ opencv将彩色图像按连通域区分

要将彩色图像按连通域区分&#xff0c;您可以使用 OpenCV 中的 cv::connectedComponents 函数。 下面是一个简单的示例代码&#xff0c;说明如何使用 cv::connectedComponents 函数来检测并标记图像中的连通域&#xff1a; #include <opencv2/opencv.hpp> #include <…

智能制造产业链数字化转型、数字化互联工厂建设方案PPT

本资料来源公开网络&#xff0c;仅供个人学习&#xff0c;请勿商用&#xff0c;如有侵权请联系删除&#xff0c;更多浏览公众号&#xff1a;智慧方案文库 篇幅有限&#xff0c;无法完全展示&#xff0c;喜欢资料可转发评论&#xff0c;私信了解更多信息。

初次跑yolo5遇到的一些问题

1. ImportError: cannot import name COMMON_SAFE_ASCII_CHARACTERS‘ from charset-normalizerconstant‘ 这个报错可能是由于charset_normalizer模块的版本问题引起的。尝试更新charset_normalizer模块到最新版本&#xff0c;或者使用较旧的版本&#xff0c;看看是否可以解…

Java 中数据结构HashSet的用法

Java HashSet HashSet 基于 HashMap 来实现的&#xff0c;是一个不允许有重复元素的集合。 HashSet 允许有 null 值。 HashSet 是无序的&#xff0c;即不会记录插入的顺序。 HashSet 不是线程安全的&#xff0c; 如果多个线程尝试同时修改 HashSet&#xff0c;则最终结果是…

Android屏幕显示 android:screenOrientation configChanges

显示相关 屏幕朝向 https://developer.android.com/reference/android/content/res/Configuration.html#orientation 具体区别如下&#xff1a; activity.getResources().getConfiguration().orientation获取的是当前设备的实际屏幕方向值&#xff0c;可以动态地根据设备的旋…

恒运资本:市盈率怎么算?

市盈率&#xff08;P/E ratio&#xff09;是判别一家公司股票价格合理性的一个重要目标&#xff0c;也是投资者评估公司股票投资价值的重要参阅目标。市盈率越高&#xff0c;表明相对于公司的收益来说&#xff0c;该公司的股票定价越高。市盈率越低&#xff0c;则表明该股票被低…

虚拟列表的实现

一、什么是虚拟列表 在传统的列表渲染中&#xff0c;如果列表数据过多&#xff0c;一次性渲染所有数据将耗费大量的时间和内存。当我们上下滚动时&#xff0c;性能低的浏览器或电脑都会感觉到非常的卡&#xff0c;这对用户的体验时是致命的。 于是我们会想到懒加载&#xff0…

如何使用c3p0连接池???

1.首先下载架包。。。&#xff08;下载链接&#xff1a;https://note.youdao.com/ynoteshare/index.html?id61e2cc939390acc9c7e5017907e98044&typenote&_time1693296531722&#xff09; 2.将架包加入项目文件。 创建一个lib目录&#xff0c;将架包复制进去 右键点击l…

ManageEngine ServiceDesk Plus之CVE漏洞

什么是CVE&#xff1f; CVE的英文全称是“Common Vulnerabilities & Exposures”即通用漏洞披露&#xff0c;CVE像是一个字典表&#xff0c;为广泛认同的信息安全漏洞给出一个公共的名称。 使用一个公共名称&#xff0c;可以帮助用户在各自独立的各种漏洞数据库中共享数据…

价格管控的有效措施

品牌为了发展&#xff0c;会不断拓展销售渠道&#xff0c;随之也会有更多的经销商加入&#xff0c;经销商变多了&#xff0c;渠道问题也会逐渐突显&#xff0c;比如低价、窜货、假货&#xff0c;窜货和假货问题其实就是低价问题&#xff0c;所以治理好价格&#xff0c;就是解决…

数据倾斜优化

数据倾斜发生的原因有哪些&#xff1f; map输出数据按key Hash的分配到reduce中&#xff0c;由于key分布不均匀、业务数据本身的特性、建表时考虑不周等原因造成的reduce 上的数据量差异过大。 数据倾斜解决方式有哪些 group by 导致的数据倾斜 1.开启Map-Side聚合后&#x…

MSLearn 开学季:AI 进阶系列|PromptFlow - 做一个教育行业的 Copilot 应用

点击蓝字 关注我们 编辑&#xff1a;Alan Wang 排版&#xff1a;Rani Sun 微软 Reactor 为帮助广开发者&#xff0c;技术爱好者&#xff0c;更好的学习 .NET Core, C#, Python&#xff0c;数据科学&#xff0c;机器学习&#xff0c;AI&#xff0c;区块链, IoT 等技术&#xff0…

美创科技一体化智能化公共数据平台数据安全建设实践

公共数据是当今政府数字化转型的关键要素和未来价值释放的核心锚点&#xff0c;也是“网络强国”、“数字中国”的战略性资源。 作为数字化改革先行省份&#xff0c;近年来&#xff0c;浙江省以一体化智能化公共数据平台作为数字化改革的支撑总平台&#xff0c;实现了全省公共数…

华为云云服务器评测|华为云云耀云服务器L实例评测使用

文章目录 华为云云耀云服务器L实例简介华为云云耀云服务器L实例参数华为云云耀云服务器L实例部署网站的步骤华为云云耀云服务器L实例的核心卖点华为云云耀云服务器L实例适用于多种核心应用场景华为云云耀云服务器L实例总体感受 华为云云耀云服务器L实例简介 华为云云耀云服务器…

解决方案 | 法大大电子签:智慧银行建设背后的“助推器”

随着互联网技术的不断发展&#xff0c;银行业正在经历一场前所未有的数字化革命&#xff0c;平台搭建、场景化金融、在线金融逐渐成为商业银行转型智慧银行的发力点。而电子合同在银行业的广泛应用&#xff0c;为银行业务流程的无纸化、高效能提供了强有力的支持。 聚焦效率及…

高频电流探头的钳口使用和如何调零消磁

高频电流探头采用霍尔效应传感器技术来测量交流和直流信号&#xff0c;标配通用的 BNC 接口&#xff0c;可直接用示波器或记录仪等观察测量波形及数值&#xff0c;具有强大的通用性能。 电流探头钳口使用&#xff1a; 为电流指示方向。测量时&#xff0c;被测导体电流方向与指…