2023-06-09
开源项目-工具介绍
00
请注意,本文编写于 414 天前,最后修改于 232 天前,其中某些信息可能已经过时。

目录

nps使用场景
安装使用
nps服务端安装
配置内网主机
配置客户端
使用中的问题

nps是一款轻量级、高性能、功能强大的内网穿透代理服务器。支持tcpudp流量转发及任何tcpudp的上层协议。开发通常用它来做本地支付调试、访问内网网站(类似VPN的作用)。相对于其他内网穿透工具如ngrok花生壳。它的优点是开源,缺点是要自己架设服务端(有自己的服务器)。本文简单介绍通过docker架设nps(服务端)和·npc(客户端)的使用实例。

nps使用场景

首先贴一下官网地址: nps官网文档 再贴一下我搭建后的管理后台

image.png 我们可以用

  • 做微信公众号开发、小程序开发等----> 域名代理模式
  • 想在外网通过ssh连接内网的机器,做云服务器到内网服务器端口的映射,----> tcp代理模式
  • 在非内网环境下使用内网dns,或者需要通过udp访问内网机器等----> udp代理模式
  • 在外网使用HTTP代理访问内网站点----> http代理模式
  • 搭建一个内网穿透ss,在外网如同使用内网vpn一样访问内网资源或者设备----> socks5代理模式

安装使用

官方文档采用的是直接在宿主机上安装,而我的习惯是用docker,这样方便软件管理,卸载也干净。

nps服务端安装

  • cd ~ # 进入个人home目录,统一目录,避免安装问题
  • git clone https://github.com/ehang-io/nps.git
  • mkdir -p /opt/nps/conf
  • cp ~/nps/conf/* /opt/nps/conf # 准备好配置文件
  • vi /opt/nps/conf/nps.conf 修改以下三处地方
  • image.png
  • docker启动 docker run -d --name=nps --restart=always --net=host -v /opt/nps/conf:/conf ffdfgdfg/nps
    • --restart=always 随docker自动重启
    • --net=host 容器内部的网络设置与主机相同
    • -v 容器文件宿主机文件映射,这里映射的是配置文件
  • 访问 http://ip:8080
  • 放行端口,一般腾讯云阿里云都有可视化的防火墙页面,这里强调几个端口
    • 8024 这个是客户端与nps服务通信所用的端口(网桥端口)
    • 8080 前面配置的管理后台UI界面端口
    • 命令行示例 firewall-cmd --zone=public --add-port=8024/tcp --permanent

配置内网主机

image.png

  • 点击新增,填一下备注就行,(客户端地址不用管我也不知道啥含义),保存回来就是上图的样子, 注意这个密钥是客户端用的 (后面会用到)
  • 点击隧道 新增一条记录
    • 选择场景(我的目标服务是一个网站,我选择了TCP隧道)
    • 客户端ID随便填,别重复就行
    • 服务器端口,代理服务器的端口 (注意防火墙也要放行这个端口)
    • 目标: 目标应用的主机局域网IP+端口, 千万别填 127.0.0.1😂
    • image.png
  • 当然你可以填多个,这里是一对多的关系(可以代理内网的一台主机主机上的多个服务)
  • image.png

配置客户端

  • docker run -d --name=npc --restart=always --net=host ffdfgdfg/npc -server=<server-ip>:8024 -vkey=<前面在管理后台创建主机自动生成的密钥>
  • 注意内网服务的端口 11091(前面添加隧道填的) 也要放行

致此不出意外便大功告成!

image.png

更多关于内网穿透知识 看一看这个博客  内网系列

使用中的问题

  • 默认nps会占用80和443端口,支持修改为其他端口
    • 修改配置文件 opt/nps/conf/nps.conf
    • http_proxy_porthttps_proxy_port
  • 管理后台端口web_port=8080 貌似不能改,改了不能访问,因这是个普通端口,就不折腾了
  • 映射配置必须指向内网的具体应用的端口, 不能指向nginx
    • 用一图来说明
    • nps.drawio.png

本文作者:郭敬文

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!