【精】如何搭建NPS进行内网穿透


前言

本教程就是教大家使用NPS搭建一个内网穿透服务。


一、NPS概述

NPS是一款轻量级、高性能、功能强大的内网穿透代理服务器,支持tcp、udp、http等几乎所有流量转发,支持WEB界面管理主机连接。

NPS的原理

运行NPS服务的云服务器和运行NPS客户端的主机之间会创建一条TCP或UDP隧道,可以映射云服务器上的某个端口到客户端主机的指定端口,其他主机访问云服务器的这个端口的流量都会通过创建的这条隧道转发到映射的主机端口,实现内网穿透效果。
在这里插入图片描述

二、NPS服务器搭建

1、下载软件

本教程使用的是github上面的一款开源工具,具体链接附在下面。下载与自己服务器和客户端的系统相对应的版本,如果无法访问,也可以通过我的网盘分享下载,网盘里面有linux和windows的64位服务端,还有windows64位的客户端。

https://github.com/ehang-io/nps/releases

在这里插入图片描述

网盘链接:https://pan.baidu.com/s/10a6RQPi16ivwjHt5qPKEFA 
提取码:zx68

2、云服务器配置

首先需要一台云服务器,可以选择腾讯云或者阿里云等云服务器厂商,通常有很大的折扣力度,我选的是腾讯云的轻量应用服务器ubuntu20.04系统。

2.1、防火墙配置

需要放行以下端口(后文会描述如何自行更改端口,增加安全性)
TCP22:用于远程SSH连接
TCP8080:用户NPS管理界面的默认登录端口

2.2、用WinSCP远程上传服务文件

  • 使用WinSCP通过22端口以root身份连接服务器,再上传服务器文件linux_amd64_server.tar.gz。
  • 如果你的云服务器是windows系统,可以直接使用windows自带的远程桌面把软件复制过去。

在这里插入图片描述

2.3、使用SSH终端安装启动

使用MobaXterm、SecureCRT或PUTTY等终端ssh连接云服务器,进行配置。

  • 安装
mkdir nps //创建nps使用的文件夹
mv linux_amd64_server.tar.gz ./nps //把软件移动到创建好的nps文件夹中
cd nps //进入创建的nps文件夹
tar -zxvf linux_amd64_server.tar.gz //解压压缩包,使用"ls"命令就能看到目录下面多了conf和web的文件夹,还有一个可执行文件nps

在这里插入图片描述

  • 启动
./nps install //输入安装命令
nps start //启动nps服务

如果是windows系统,管理员身份运行cmd,安装时输入nps.exe install,启动需要进入程序目录输入nps.exe start。
安装后windows配置文件位于C:\Program Files\nps,linux位于/etc/nps

2.4、如何解决无法启动nps的问题

=====================
How to resolve the issue?

Step 1:
run nps, it will show the log
在这里插入图片描述
we can see the 80 port have been used by other program, so we need to change the port.

Step 2:
chang the 80 port to 81 port, if the 81 port, you have been used, you can change to other port.
vi /ect/nps/conf/nps.conf

在这里插入图片描述
Step 3:
nps restart
ps -ef|grep nps
netstat -anp|grep “:81”
在这里插入图片描述

Step 4:
check the “IP:8080” in browser.
If you use the aliyun, you need to open the 8080 port and 81 port in aliyun security policy(安全策略).

Also if the 8080 port has been used , you also need change the 8080 port to other port.

=====================

  • 浏览器打开IP+8080端口,即可看到nps管理界面,用户名和密码默认是admin/123,请及时修改。

在这里插入图片描述

在这里插入图片描述

2.5、修改配置文件

  • 如果需要修改登录用户名、密码、网页登录端口等信息,可以修改/etc/nps下的nps.conf文件,相关的参数信息可以看表格。

在这里插入图片描述

名称含义
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
  • 仪表盘里面可以看到客户端的连接端口默认为8024,需要在云服务器的防火墙放行此端口才能正常工作。

在这里插入图片描述

三、客户端连接

  • 点击仪表盘里面的客户端,按图片所示新增一个客户端。

在这里插入图片描述

  • 填写备注,下面的压缩和加密选择“是”。

在这里插入图片描述

  • 添加好后就会得到一个客户端ID为2。

在这里插入图片描述

  • 点击左边的加号,会出现下面的一条客户端命令,这个命令是在windows系统下面执行的,执行的时候不需要前面的"./"。

在这里插入图片描述

  • 在保存了nps客户端的文件里按住shift键点击鼠标右键,打开Powershell

在这里插入图片描述

  • 输入命令cmd,和从网页上获取到的命令,出现Successful就可以了。

  • 此步骤可以修改conf里面的配置,直接将vkey写入配置文件,点击nfc运行即可。

    在这里插入图片描述

  • 可以看到网页上的状态显示在线

    在这里插入图片描述

  • 创建TCP隧道

    在这里插入图片描述

  • 客户端ID写之前创建客户端得到的ID,服务端端口写一个没有用过的端口就行,当然防火墙里面也要放行这个端口。目标端口写需要访问的端口。

在这里插入图片描述

  • 这样所有访问服务端端口的流量就会被转发到客户端端口,也就成功连接上了处于内网的主机。
  • 目标(IP:端口):127.0.0.1.3389(windows远程端口为3389,这个不能改)

在这里插入图片描述

总结

使用nps这样一款小工具实现了内网穿透的效果,可以实现出门在外用轻薄本连接家里游戏主机快乐玩耍的需求,当然其他TCP和UDP的连接也都是可行的,看个人的具体需求,也不会占用云服务太多的资源,非常值得推荐。

  • 4
    点赞
  • 52
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值