IT男的VPS系列教程 篇七:超强内网穿透nps 解决所有无公网IP问题(上)
两年前写了一篇关于内网穿透的文章,至今还有不少朋友询问内网穿透的问题,至少表明内网穿透的需求没有减少,而且我发现这个系列教程也很久没有更细了。
当初的文章如下:IT男的VPS系列教程 篇一:内网穿透(Frp)-拯救没有公网IP的你
背景和需求
需求
目前来说,各大运营商都在减少对个人用户提供公网IP,这已经是一个趋势,估计在IPv6普及前不会有好转。虽然可以通过客服要回公网ip,但是难度太大了,就算能要到运营商也得恶心恶心你,所以目前外网访问家里路由器、NAS、智能家居等成了问题。
对于没有公网IP的解决办法也有很多:收费的有花生壳、TeamView,免费的有frp、ngrok等。目前我也一直使用frp。
frp的问题
FRP非常稳定,功能强大,我也是一直稳定使用。但是还是有几个不爽的地方,主要问题体现在:
没有可视化界面,全部操作都是conf文件配置,有些路由器单独做了可视化界面(比如Koolshare),操作还方便一点,但是其他平台只能通过配置文件了。
不能服务端操控,每次添加隧道都需要在客户端完成。如果你有多台设备,修改连接的时候需要登录每一台设备去操作。
发现nps
近期我一直在寻找看有没有做Frp面板的项目,但是一直未果,这期间发现了一些自己带面板操作的内网穿透项目,比如nsp、landproxy等,其中nps算是比较成熟、稳定的。所以今天拿来给大家演示。
nps是一款轻量级、高性能、功能强大的内网穿透代理服务器。目前支持tcp、udp流量转发,可支持任何tcp、udp上层协议(访问内网网站、本地支付接口调试、ssh访问、远程桌面,内网dns解析等等……),此外还支持内网http代理、内网socks5代理、p2p等,并带有功能强大的web管理端。
本教程依然面对小白用户,但是需要前期的文章做基础,其中对VPS的基础操作请看IT男的VPS系列教程 篇一:内网穿透(Frp)-拯救没有公网IP的你
原理
这张图很好解释了内网穿透的原理,由于内网(通常情况是家里的有线宽带)没有公网IP,无法在路由器上做端口映射,或者利用动态DNS连接回家里的设备,所以需要一个具有公网IP的设备来进行传递数据,公网IP设备和家里的能够建立一个稳定的隧道。(请忽略关于HTTP/1.1和/2的逻辑)
在nps中,我们把具有公网IP的设备称为服务端,就是标题中提到的VPS,不明白的看本系列第一篇文章,没有公网IP的内网设备称为客户端,一般是家里的设备,可能是路由器、NAS、树莓派等。
数据流的传递方向:外网设备 - 服务端(VPS) - 客户端(内网设备)
功能场景
那么nps能够实现什么功能:
在外网使用HTTP代理访问内网站点----> http代理模式,比如在外网访问群辉的HTTP界面,这应该是最常用的
想在外网通过远程桌面连接内网的机器,做云服务器到内网服务器端口的映射,----> tcp代理模式,穿透3389端口
在非内网环境下使用内网dns,或者需要通过udp访问内网机器等----> udp代理模式
搭建一个内网透明穿透,在外网如同使用内网一样访问内网资源或者设备----> socks5代理模式,比如在外网直接通过192.168.1.1访问路由器,连域名都不需要
如果你有以上需求,那么用nps完全ok。以下教程全部在Vultr上实现,日本节点,Ubuntu18.04系统64位。基础知识请参阅前期教程。
服务端
VPS和域名准备
准备好你手头的VPS,保证IP正常,防火墙开放。阿里、AWS都需要单独开放防火墙的。
准备好你的域名,并做好泛域名解析。比如我这里用将 *.nps.imgki.com 的A记录指向我的服务器IP。
准备好SSH登录器,比如Xshell、Putty等。
泛域名准备好之后,我的*.nps.imgki.com就全部指向服务器了。以上准备工作如果有不明的请看前期教程。
服务端安装
去Github的页面下载服务端程序 这里可能大家就迷糊了,这么多选哪个?我简单解释一下:
带有server的都是服务端,client的都是客户端;在根据架构选择适应自己系统,比如X86-64架构,在BSD家族及其他Linux发行版则使用“amd64”,而32位版本则称为“i386”(或 i486/586/686)。
对于Vultr在登录的时候,说的很明白,X86-64位,应该选择linux_amd64_server.tar.gz。
下载并解压程序
wget https://github.com/cnlh/nps/releases/download/V0.17.3/linux_amd64_server.tar.gz &&tar -zxvf linux_amd64_server.tar.gz && cd nps
运行程序
./nps start
程序默认的web端口是8080,隧道端口是8284,所以请提前放行这两个端口,也保证不要占用。
之后访问IP:8080可以登录web页面,默认用户名admin,密码123
新建客户端
点击client-new-填入连接名称。这个新建客户端建立一次就可以。
之后就可以看到客户端的具体内容,表明offline不在线,这是当然,应为客户端还没连接呢。黄色的命令请记好,一会需要用到。
服务端更多配置
服务端就装好了。当然服务端还有一些参数可以修改,比如端口、用户名密码、服务模式等等。这些配置参数全部在conf/nps.conf下。不过即使不改这些配置已经可以使用了。
vi conf/nps.conf
下面说几个重要的,其他配置还有不少,详情请见官方介绍:服务端配置
httpport web管理端口 是管理界面的登录端口
password、username 是服务端管理界面的用户名和密码
bridgePort 服务端和客户端通信端口 是隧道的通信端口
httpsProxyPort 域名代理https代理监听端口
httpProxyPort 域名代理http代理监听端口
客户端
我客户端是家里的HTPC下Hyper-V运行的虚拟机,安装系统也是ubuntu。
下载并解压程序
mkdir npc && cd npc && wget https://github.com/cnlh/nps/releases/download/V0.17.3/linux_amd64_client.tar.gz &&tar -zxvf linux_amd64_client.tar.gz
连接客户端
刚才新建client的命令可以拿来用了。这个表明让客户端连接服务器的公网ip8284端口
nohup ./npc -server=202.182.107.162:8284 -vkey=v9tkr51x7618o3b >/dev/null 2>&1 &
之后看到web端Online就表明连接成功了。
使用场景
经过以上流程,客户端和服务端的通信就建立好了,也相当于为我们连接家里的所有设备增加了一个窗口,以下就是针对具体的使用环境来配置了,有web界面当然是方便多了。
场景1:连接回家里的路由器
家里内网网段是192.168.1.X,主路由是192.168.1.1:8080,域名是router.nps.imgki.com
Client-Hostl-Add host
添加名称、域名和内网IP,注意内网IP要加端口
之后访问router.nps.imgki.com可以看到Ac68u的登录界面啦
场景2:远程桌面连接家里HTPC
家里HTPC端口为192.168.1.8:3389,穿透端口为8024
Client-Tunnel-增加tcp代理
之后远程桌面登录202.182.107.162:8024
场景3:SOCK5透明代理
如果你觉着这种域名的形式还是太恶心,太麻烦,希望直接输入192.168.1.X连回家里的各种设备的话,那么:
Client-Tunnel-增加Sock代理
增加一个8003的端口
在sock的代理中增加代理目的地,比如chrome中增加利用SwitchyOmega增加一个sock5代理,添加服务器地址和端口。
在浏览器中直接输入192.168.1.1,直接访问到路由器,连域名都省了。
总结
优点
功能强大、支持TCP/UDP,支持HTTP(s)、Sock5代理;具有web管理界面;客户端可以使用无配置模式;加密、压缩等特性。
不足
稳定性略差,最近几天来看时不时服务端崩溃;目前资料和教程较少;嵌入式系统目前成熟的运用较少。
虽然存在一些遗憾,但是不妨碍nps成为一款优秀的内网穿透软件。此外,由于产品比较年轻,Github上也只有160commits、31issues,整体上还有一段路要走,特别是在稳定性和成熟性上有待加强,但至少值得期待。
我的建议
如果你追求稳定,穿透配置不会经常变化,没有太多要求,建议用frp;如果你想试试新产品,喜欢web界面,不怕麻烦,可以试一试nps。
本文计划还有下篇,主要是nps还有一些高级用法,比如安全私密代理、p2p穿透、数据压缩加密等,但一般需求比较小众,稍微总结一下另文在谈吧。
写的比较急,如果有不对的欢迎大家指出!
对面打紧大龙啊
校验提示文案
优乐美兑二锅头
校验提示文案
做你永远的爸爸
校验提示文案
linxu1989
校验提示文案
让爱随风而逝
校验提示文案
Bodhimirror
校验提示文案
卖女孩的火柴
校验提示文案
ergou_
校验提示文案
LomoA
校验提示文案
iweiran
校验提示文案
好奇的爺爺
校验提示文案
20141021简爱
校验提示文案
iT天选打工人
校验提示文案
seirika
校验提示文案
呐喊
校验提示文案
解毒药
校验提示文案
Planton
校验提示文案
xxika
校验提示文案
值友3233263282
校验提示文案
leolle
校验提示文案
拆除魔仙堡的哈士奇
校验提示文案
值友1829917443
校验提示文案
桢熙
校验提示文案
LomoA
校验提示文案
值友5674964759
校验提示文案
GordonJ
校验提示文案
味堂
校验提示文案
大叔爱电脑
校验提示文案
smzd买
校验提示文案
Geralt13775
但frp用了几个月,稳定性说第二的话没人敢说第一
校验提示文案
悬崖上的剁椒鱼头
校验提示文案
funteapot
整个在nginx下,是如何配置的?谢谢
p2p方式如果连群晖video station?
校验提示文案
值友3744466442
校验提示文案
eric823V
校验提示文案
eric823V
校验提示文案
hitsword
校验提示文案
小浅玩机
校验提示文案
恩山初评
校验提示文案
我不上谁上
校验提示文案
我不上谁上
校验提示文案