nps内网穿透实现外网访问树莓派

韩小韩
2020-09-09 / 11 评论 / 4,231 阅读 / 正在检测是否收录...
温馨提示:
本文最后更新于2021年05月24日,已超过28天没有更新,若内容或图片失效,请留言反馈。

花生壳内网穿透

花生壳我一直没舍得在上面花钱,因为有免费试用的基本能够满足需求。但是免费的才是最贵的。免费账号服务不稳定,经常掉线。

NPS服务

后来在网上找到了NPS服务,nps是一款轻量级、高性能、功能强大的内网穿透代理服务器。目前支持tcp、udp流量转发,可支持任何tcp、udp上层协议(访问内网网站、本地支付接口调试、ssh访问、远程桌面,内网dns解析等等……),此外还支持内网http代理、内网socks5代理、p2p等,并带有功能强大的web管理端。

但nps有个最大的问题就是:需要一台外网能访问到的服务器来架设nps服务。有人说你都有外网的服务器了还要内网穿透干什么呢?

在我看来,坚持使用nps的理由是这样,nps轻量级,高性能,但其本身负责的是流量转发功能,我们可以在内网服务器进行更密集、高负荷的运算,而承担nps服务的外网服务器的配置要求就低很多。同时也可以在外网服务器上运行一些其他的运算要求较低的服务。

所以我也算是把好钢用在刀刃上吧~其中公网服务端就需要一台VPS,配置不用太高,我使用的是阿里云的突发性能实例,具体可以到阿里云ECS查看。内网客户端使用家里的树莓派。

服务端 搭建 (Server)

项目release地址:

查找对应的server包。我的云服务器是X86-64架构,使用Ubuntu 18.04操作系统,所以选择linux_amd64_server.tar.gz

下载程序并解压:

wget https://github.com/ehang-io/nps/releases/download/v0.26.8/linux_amd64_server.tar.gz &&tar -zxvf linux_amd64_server.tar.gz

安装

sudo ./nps install

运行

nps start

之后访问 [服务器IP]:8080,登录web页面。默认用户名admin,密码123。

nps内网穿透实现外网访问树莓派

也可以通过配置 conf/nps.conf修改默认端口、用户名密码等信息。具体配置见下表:

名称ㅤ                含义
web_portㅤ            web管理端口
web_passwordㅤ        web界面管理密码
web_usernameㅤ        web界面管理账号
bridge_portㅤ         服务端客户端通信端口
https_proxy_portㅤ    域名代理https代理监听端口
http_proxy_portㅤ     域名代理http代理监听端口
auth_keyㅤ            web 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_portㅤ            p2p模式开启的udp端口

默认web端口是8080,客户端连接端口是8024,对于有防火墙的服务器,需要提前打开这两个端口。

新增客户端

在客户端标签页新增客户端配置

nps内网穿透实现外网访问树莓派

填个备注,剩下的默认就可以了

nps内网穿透实现外网访问树莓派

新增客户端完成后展开客户端详情,下面有一行命令随后用到。此时status还是offline,图中我这个是客户端也已经建立连接了所以online了。接下来我们就去搭建客户端并建立连接。

nps内网穿透实现外网访问树莓派

客户端 搭建(Client)

下载并解压

wget https://github.com/ehang-io/nps/releases/download/v0.26.8/linux_amd64_client.tar.gz &&tar -zxvf linux_amd64_client.tar.gz

之后执行web页里新增客户端下的命令

./npc -server=IP地址:8024 -vkey=密码 -type=tcp

随后再看服务端web页,客户端的status已经是online了。

配置客户端连接

现在服务端和客户端的连接已经建立起来,那么该如何访问内网的WordPress呢?
搞个域名先,国内的需要备案。
在服务端web页选择 域名解析 -> 新增

nps内网穿透实现外网访问树莓派

填入备注、域名、内网WordPress IP和端口号,客户端id要填之前新建好的客户端id。搞定。

ssh连接

当然我的网站其实是放在外网服务器的,示例的网站只是自己有个域名随便玩的。最主要的用处是能够随时随地通过ssh控制家里的树莓派。
在服务端web页选择 tcp隧道 -> 新增

nps内网穿透实现外网访问树莓派

服务端端口需要新建一个,之后不要忘记在服务器防火墙放行此端口。目标ip端口写树莓派的ip:22
之后在外网通过 ssh pi@my.servce.ip -p port 就可以啦

1

评论 (11)

取消
  1. 头像
    似水骄阳108
    Windows 10 · Google Chrome

    楼主 您好 教程有非常大的一个问题!!您的树莓派的操作系统使用官方的Raspbian,然后下载命令的程序是:linux_amd64_server.tar.gz ,64位程序的nps能在32位的raspbian系统上运行吗????然后看了nps的下载地址没有32位的 armV8的程序,是不是树莓派官方系统无法运行nps ???!!!

    回复
    1. 头像
      似水骄阳108
      Windows 10 · Google Chrome
      @ 似水骄阳108

      楼主 您好 教程有非常大的一个问题!!您的树莓派的操作系统使用官方的Raspbian,然后下载命令的程序是:linux_amd64_client.tar.gz ,64位nps客户端程序的nps能在32位的raspbian系统上运行吗????然后看了nps的下载地址没有32位的 armV8的程序,是不是树莓派官方系统无法运行nps ???!!!

      回复
    2. 头像
      韩小韩 作者
      Windows 10 · QQ Browser
      @ 似水骄阳108

      是的!我用服务器测试的,然后树莓派装的frp!

      回复
      1. 头像
        似水骄阳108
        Windows 10 · Google Chrome
        @ 韩小韩

        谢谢及时回复 我说的是客户端 64位 不是服务端

        回复
        1. 头像
          似水骄阳108
          Windows 10 · Google Chrome
          @ 似水骄阳108

          您的树莓派4b 是官方os 它是32位,然后NPSc 好像没有arm V8 只有64位 没有32位的,您的树莓派是用的官方raspbian系统 ???

          回复
  2. 头像
    FreddieFu
    Windows 10 · Google Chrome

    腾讯云centos64位服务器,开放了8080端口,也安装好了NPS,无法访问 IP:8080 怎么办

    回复
    1. 头像
      韩小韩 作者
      Windows 10 · QQ Browser
      @ FreddieFu

      如果按照步骤一步一步来是没问题的,如果有问题!!!我亲测!!!

      回复
  3. 头像
    jojo
    MacOS · Google Chrome

    自建服务推荐:frp、nps;付费服务推荐:蜻蜓映射

    回复
    1. 头像
      韩小韩 作者
      Windows 10 · QQ Browser
      @ jojo

      都用过,感觉nps更舒服点

      回复
  4. 头像
    强仔
    Android · QQ Browser
    该回复疑似异常,已被系统拦截!
    回复
    1. 头像
      韩小韩 作者
      Windows 10 · QQ Browser
      @ 强仔

      共同学习哈哈哈

      回复