一款轻量级、高性能、功能强大的内网穿透代理服务器
几乎支持所有协议,支持内网http代理、内网socks5代理、p2p等,简洁但功能强大的WEB管理界面,支持服务端、客户端同时控制,扩展功能强大,全平台兼容,一键注册为服务。

为什么要用P2P模式?

P2P是peer-to-peer的缩写,因为点对点,不消耗你VPS或独服的流量,假如你买的是国内VPS或独服本身因为价格和国情的原因,流量就吃紧,假如要传送一个几十G的数据,用传统TCP穿透模式,你传送多少流量,你的VPS就消耗多少流量,而且p2p模式一旦握手成功,就直接交给2端独立通讯,自身是断开的,并且速度快于TCP。

使用Docker安装服务端nps(在服务端-->中转服务器)

安装Docker

curl -fsSL https://get.docker.com -o get-docker.sh
sh get-docker.sh

拉取镜像安装 server

拉取镜像并修改配置文件

docker pull ffdfgdfg/nps
mkdir nps && cd nps 
wget https://archive.etoiles.me/d/博客附件/nps_p2p-1/conf.tar.gz && tar -zxvf conf.zip
cd conf
vim nps.conf  ##按照下面修改必要的配置文件

修改必要的配置文件

#bridge
bridge_type=tcp
bridge_port=6800  #监听端口为6800可修改
bridge_ip=0.0.0.0

#p2p
p2p_ip=   #修改127.0.0.1,填写公网IP地址,不要填写域名
p2p_port=6000   #p2p端口可修改,官方默认6000,但是防火墙一定要放行6000-6002

#web
web_username=  #设置web页面用户名
web_password=  #设置web页面密码
web_port=   #设置web页面端口
web_ip=0.0.0.0

启动nps服务端

#<本机conf目录>可以自己设置,按照本例为/root/nps/conf
docker run -d --name nps --net=host -v <本机conf目录>:/conf ffdfgdfg/nps #请勿照抄

安装npc客户端并配置-->内网机器-->客户机-->需要被穿透的

下载已经编译好的npc,注意,建议去作者github下载对应系统架构文件,演示使用的是amd64

cd ~
wget https://github.com/ehang-io/nps/releases/download/v0.26.10/linux_amd64_client.tar.gz && tar -zxvf linux_amd64_client.tar.gz
cd npc
chmod 755 npc

安装npc访问端-->需要访问内网服务的机器

注意:是访问端,访问端!!!举例说明:你需要访问家里内网服务器的ssh,此时已经配置了nps(服务端用于连接客户端和访问端)和npc(用于内网ssh服务),此时,你需要在公司使用电脑(访问端)访问家里ssh。这里的公司电脑就是访问端!!
访问端的安装方式与客户端一样,下面用windows来举例:

github下载对应的windows-npc

https://github.com/ehang-io/nps/releases/download/v0.26.10/windows_amd64_client.tar.gz

解压后找到npc和conf文件夹

npc就是我们等会需要启动使用的程序

开始配置服务(服务端nps与客户端npc)

服务端nps-web页面上添加客户机-->客户机即需要被穿透的机器-->内网服务

添加客户机
配置后保存

客户机内输入命令

复制命令后输入到客户机启动npc
nps与npc连接

服务端nps-web页面上添加p2p隧道

目标 (IP:端口) :填写客户机需要被穿透的端口,例如127.0.0.1:8080
唯一标识密钥:自己设置,不能重复

添加p2p隧道

在访问端开启p2p访问

复制刚刚nps-web的命令打开访问端的命令行页面,windows就是cmd
注意:这里复制的命令我们可以在后面添加-local_port=xx,xx可以自定义端口,默认为2000
复制p2p连接命令
下图表示成功通过p2p隧道连接成功
p2p成功
下图表示p2p失败,流量通过服务端(就是前面配置的nps端),可以尝试通过重启访问端重试
p2p失败

Enjoy!

按照本例中的连接内网8080端口,配置完整后可以直接连接访问端输入127.0.0.1:2000即可,其他用法可以参考官网wiki

注意:不是所有的nat类型都支持p2p,使用下面脚本检测

只需要在客户端和访问端npc输入命令检测即可,参考wiki

./npc nat -stun_addr=stun.stunprotocol.org:3478

按照检测类型分类,能否成功参考下图:
注意:按照上面命令检测的类型,Not behind a NAT 等于下表中的全锥型(Full Cone)

一般来讲, NAT可以分为四种类型,分别是:全锥型(Full Cone);受限锥型(Restricted Cone), 或者说是IP受限锥型;端口受限锥型(Port Restricted Cone), 或者说是IP + PORT受限锥型;对称型(Symmetric)

查看nat类型是否支持

最后修改:2024 年 03 月 31 日
如果觉得我的文章对你有用,请随意赞赏