@TOC

前言

nps是什么?

nps是一款轻量级、高性能、功能强大的内网穿透代理服务器。目前反对tcp、udp流量转发,可反对任何tcp、udp下层协定,此外还反对内网http代理、内网socks5代理、p2p等,并带有功能强大的web治理端。

1. 筹备工作

  1. 一台领有公网IP的云服务器,我这里应用的是腾讯云轻量应用服务器,零碎为CentOS。
  2. 云服务器中须要装置配置好 Docker。参考地址:菜鸟教程-docker的装置
  3. 云服务器中装置好宝塔面板,如不须要域名拜访,能够跳过此步骤。参考地址:宝塔面板装置教程
  4. nps 服务器端和客户端的程序。下载地址:https://github.com/ehang-io/nps
  5. 一个已实现备案的域名,用来配置内网穿透泛域名拜访,如不须要域名拜访,能够跳过此步骤。

    2. 服务器端搭建nps并配置

    2.1 配置nps配置文件

    nps装置时须要加载配置文件,所以须要先创立好配置文件。

  6. 下载nps服务端配置文件到本地,抉择与服务器零碎绝对应的版本,我这里抉择 linux_amd64_server.tar.gz ,下载地址:https://github.com/ehang-io/nps/releases

  1. 解压下载好的安装包,进入 conf 目录下,对 npc.conf 配置文件进行批改。

    • 首先批改 http_proxy_porthttps_proxy_port 的端口号为2008020443
    • 配置 bridge_port28024
    • 配置批改 web_usernameweb_passwordweb_port ,其中 web_port 批改为 28080web_usernameweb_password 是web治理端的用户名和明码,自行配置即可; web_port 是web治理端的端口号,通过 IP:端口 即可拜访web治理端。
    • 其余配置请参照nps服务端配置文档并依据须要自行配置。参考地址:nps服务端配置文件

注:这里为了避免与其余已装置的环境抵触,将所有的端口号全副调整到20000-30000之间。

http_proxy_port:http代理端口号

https_proxy_port:https代理端口号

bridge_port:桥接端口号

web_username:web治理端用户名

web_password:web治理端明码

web_port:web治理端端口号

  1. 将批改好的配置文件及其目录 conf 上传到服务器的 /etc/nps 目录下,如果没有此目录,能够自行创立。

2.2 docker装置nps

  1. 拉取nps服务端docker镜像

    docker pull ffdfgdfg/nps
  2. 运行nps容器,并设置开机自启动

    docker run -d --restart=always --name nps --net=host -v /etc/nps/conf:/conf ffdfgdfg/nps
  3. 此时nps服务端曾经装置实现,能够通过 docker ps 查看是否运行胜利。

    2.3 web端配置nps并应用

    注:如无法访问,请到云服务器治理后盾凋谢对应端口的拜访权限。

    注:如装置了宝塔面板等,也须要去到面板治理界面凋谢端口的拜访权限。

  4. 首先通过浏览器拜访 http://服务器IP:28080 ,输出配置文件中设置的用户名和明码即可进入web治理端。28080是web_port配置的端口号。
  5. 在右侧客户端界面新增一个客户端,而后在客户端界面点击 "+" ,查看其中的客户端命令。

3. 客户端应用nps

  1. 下载nps客户端npc到本地,抉择与服务器零碎绝对应的版本,我这里抉择 windows_amd64_client.tar.gz ,下载地址:https://github.com/ehang-io/nps/releases
  2. 解压下载的文件,并搁置到指定地位,如桌面上。
  3. CMD管理员进入该解压后的目录中,并运行服务端提供的客户端命令。
  4. windows 运行命令,须要将其中 ./npc 替换为 npc.exe
  5. 此时本地npc客户端已胜利运行,并且web治理端也显示连贯状态为在线。

  1. 此时本地服务器已与云服务器连贯胜利。
  2. 在客户端界面点击隧道,新增一条隧道。如果须要在外网拜访本地 http://127.0.0.1:8080,则须要在隧道中新增一条 tcp 类型的隧道,如下图所示。

此时通过 服务器ip + 服务端端口号即可拜访本地的网站,内网穿透到此结束。

留神:

  1. CMD必须已管理员身份运行,否则无奈胜利。
  2. windows下请将其中的 ./npc 替换为 npc.exe
  3. nps服务端和客户端的版本必须统一,否则无奈连贯。
  4. nps中s示意服务端,npc中c示意客户端。

4. 配置泛域名解析

配置到下面一步曾经能失常应用了,但我手头有已备案的域名,就思考是否应用域名来代替 服务器ip + 端口的模式来进行内网穿透。

筹备工作:

  • 已备案域名一个
  • 云服务中须要装置宝塔面板
域名:这里应用 example.cn 代替域名,理论应用时请替换为本人的域名。
  1. 进入域名DNS解析页面,增加一条泛域名解析,将 *.nps.example.cn 解析到 服务器ip。
  2. 到nps的web端治理界面中增加一条域名解析。
  3. 此时便可通过 http://1.nps.example.cn:20080 拜访到本地内网网站了。这里的 20080http_proxy_port 中配置的端口号。
  4. 这时已胜利通过 域名+端口 的模式实现内网穿透,上面将通过配置勾销掉域名前面的端口,应用 仅域名 模式的拜访。

    1. 在云服务器的宝塔面板中创立一个网站,域名就填写 *.nps.example.cn
    2. 网站创立好后,点击设置,抉择配置文件,在配置文件最初增加如下内容,将域名代理到域名+端口的模式,从而实现独自的域名拜访。

      location / {resolver 114.114.114.114;proxy_pass http://$host:20080;}
  5. 至此实现域名的内网穿透拜访。

5. 参考链接

  1. nps官网
  2. nps文档
  3. CSDN-Centos8.2利用Docker实现NPS内网穿透与宝塔共存
  4. 宝塔面板装置教程
  5. 博客园-nginx的proxy_pass

    本文首发于自己博客:https://blog.gitnote.cn/post/nps

版权信息: CC BY-NC-SA 4.0 (自在转载-非商用-雷同形式共享-放弃署名)