使用nps内网穿透的问题记录

实现目标:将局部网(可访问互联网)设备的端口映射到公网服务器上

1.资料准备

下载nps(server)和npc(client)安装包:https://github.com/ehang-io/nps/releases

文档:https://ehang-io.github.io/nps/#/

安装包版本(0.26.10  核心版本0.26.0)

补充:公网服务器一般使用x64 的服务端,由于我的客户端是jetson nano 所以我选择了arm的客户端进行安装

2.公网服务器端的操作:

  • 建好nps文件夹,进入文件夹,下载好nps服务端,移入文件夹中并进行安装
    tar xzvf linux_amd64_server.tar.gz 
    ./nps install
    nps start
    ps -ef|grep nps # 查看进程
    nps --version   # 查看版本
  • 卸载命令
    nps uninstall
  • 公网服务器上加安全组开放所需要的端口(或者全部打开1-65535),打开类型可以是UDP类型,也可以是TCP类型、HTTP类型

  • 出方向: 是指 本ECS 实例访问内网或私网中其他 ECS 实例或者公网上的资源。 入方向: 是指内网或私网中的其他 ECS 实例或公网上的资源访问 本ECS 实例

 3.用浏览器配置nps 的操作:

  • 添加客户端

  •  给该客户端加TCP隧道

 4.客户端的操作:

  • 建立nps文件夹,将客户端压缩包放入文件夹中,解压nps客户端(arm64
    tar xzvf linux_arm64_client.tar.gz
    ./npc -server=47.113.149.105:8024 -vkey=br0auqkcoat879fs -type=tcp
  • 运行上面生成的需要在客户端执行的命令,8024端口(nps默认的桥接端口)
  • web端显示在线

  • 注册系统(自启动,守护进程)

  • 可以直接将启动命令放入rc.local 中,前npc是一个目录    后一个npc是命令

 

 5.验证是否成功

  • 我用的MobaXterm进行ssh连接,填访问客户端的用户名和密码,不要填服务器的

  •  可以通过ssh连服务器端口  连接到客户端  证明服务器8003和本地局域网设备的22端口互通

6. 服务器端 nps停止运行

  • 客户端打印

  •  web端进入不了服务器8080端口
  • nps会出现断连的情况,不过会重新连接上,像是服务端挂了,暂时未找到原因
  • connection refuse 是服务端tcp端口未被监听,也就是nps端挂了,一般会重启
  • connection reset by peer 是nps服务端tcp连接出现异常给npc发了reset信号,让npc关闭tcp连接
  • connetion time out 是网络不通,客户端连不上服务器
  • close mux 关闭多路复用器

猜你喜欢

转载自blog.csdn.net/qq_42314865/article/details/129360261