耳语海岸
艾泽拉斯避难谷地

内网穿透系列:NPS和FRP技术

一、NPS介绍

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

至于NPS搭建,实在太简单了,面板界面官方也有详细的教程,点此处查看,自己了解吧。

二、FRP介绍

FRP体积轻量但功能很强大,可以使处于内网或防火墙后的设备对外界提供服务,采用Golang编写,支持跨平台,仅需下载对应平台的二进制文件即可执行,没有额外依赖。支持 TCP、UDP、HTTP、HTTPS 等多种协议,直接说怎么搭建把。

三、服务器购置

建议你去腾讯云选个香港轻量应用服务器,峰值带宽可以达到30,而且是CN2-GIA线路, 选个最低配的就行,毕竟我们只在乎带宽不在乎配置,取服务器带宽、你家宽带上行速度的最低值。服务器系统选择 CentOS 7.X 版本的就行,其他的没什么要求。

四、服务端部署

(一)FRP安装

使用SSH 连到你的服务器。Root用户下,命令窗口依次运行:

wget https://raw.githubusercontent.com/MvsCode/frp-onekey/master/install-frps.sh -O ./install-frps.sh && chmod 700 ./install-frps.sh && ./install-frps.sh install

(二)参数选择

安装过程中会让你手动选择一些参数:

Please input frps bind_port [1-65535](Default Server Port: 5443):
#输入frp提供服务的端口,用于服务器端和客户端通信,按Enter键表示默认5443,否则手动输入新端口。
Please input frps dashboard_port [1-65535](Default dashboard_port: 6443):
#输入frp的控制台服务端口,用于查看frp工作状态,按Enter键表示默认6443,否则手动输入新端口
Please input frps vhost_http_port [1-65535](Default vhost_http_port: 80):
#输入frp进行http穿透的http服务端口,按Enter键表示默认80,否则手动输入新端口,一般不建议默认80
Please input frps vhost_https_port [1-65535](Default vhost_https_port: 443):
#输入frp进行https穿透的https服务端口,按Enter键表示默认443,否则手动输入新端口
Please input privilege_token (Default: WEWLRgwRjIJVPx2kuqzkGnvuftPLQniq):
#输入frp服务器和客户端通信的密码,默认是随机生成的,按Enter键表示按默认来,否则手动输入。frpc客户端需要这个接头暗号
Please input frps max_pool_count [1-200](Default max_pool_count: 50):
#设置每个代理可以创建的连接池上限,默认50
Please select log_level #####
1: info
2: warn
3: error
4: debug
#####################################################
Enter your choice (1, 2, 3, 4 or exit. default [1]):
#设置日志等级,4个选项,默认是info
Please input frps log_max_days [1-30]
(Default log_max_days: 3 day):
#设置日志保留天数,范围是1到30天,默认保留3天。
####  Please select log_file ########################
1: enable
2: disable
Enter your choice (1, 2 or exit. default [1]):
#####################################################
设置是否开启日志记录,默认开启,开启后日志等级及保留天数生效,否则等级和保留天数无效

以上如果你不知道怎么设置,直接回车就行,但密码最好自己设置下。

(三)完成安装

安装完成后会给出一些信息,建议保存在记事本上后面需要用到。

Congratulations, frps install completed!
==============================================
You Server IP      : 192.2x.x.x
Bind port          : 5443
KCP support        : true
vhost http port    : 80
vhost https port   : 443
Dashboard port     : 6443
token              : FvHqtRfxxxxxxxxx
tcp_mux            : true
Max Pool count     : 180
Log level          : info
Log max days       : 30
Log file           : enable
==============================================
frps Dashboard     : http:// 192.2x.x.x:6443/
Dashboard user     : zmrbk.com
Dashboard password : zmrbk.com
==============================================

frps status manage :frps {start|stop|restart|status|config|version}

到此FRP的服务器配置就已经说完了,你可以打开 http://192.2x.x.x:6443,来看看FRP的网页监控面板。

(四)端口开放

网上有些教程并没有说到这一部分,很多人发现无法使用,以上面为例,实际上是需要你在服务器防火墙上放开5443、6443这两个端口。如果你是买的阿里云/腾讯云,只需要在轻量应用服务器上的防火墙设置功能中,设置放开即可,如果你不是,就需要在命令窗口中执行以下:

firewall-cmd --state
#首先查看firewall服务状态,如果提示not runing,后面的就不用看了
firewall-cmd --permanent --add-port=5443/tcp
#开放5443的tcp端口,6443同理,改下数字就行
firewall-cmd --permanent --add-port=5443/udp
#开放5443的udp端口,6443同理,改下数字就行
firewall-cmd --reload
#修改完端口后一定记得执行这个命令重启防火墙,不然不生效

(五)更新及卸载

./install-frps.sh update
# 更新FRP服务端
./install-frps.sh uninstall
# 卸载FRP服务端

五、客户端部署

(一)域名购买

如果有域名的话,你每次直接输入 www.xxxx.com: 端口号(端口号 3389 的话就不用输)就可以远程控制电脑了,别人也可以直接通过域名访问你在家搭建的网站,而且现在的域名也花不了多少钱。

如果你只是有远程桌面的需求,并且记忆力好,能记得住服务器 IP 地址的话,就跳过这节吧。

买好域名后记得做域名解析,百度搜索下域名怎么解析,解析到你的服务器 IP 地址,建议做 “www”、“@” 和 “*” 三个。

(二)客户端设置

如果你路由器支持FRP客户端设置的话,就直接在路由器上做,毕竟路由器是家里一直在线的设备,如果你的路由器不支持,那就做到电脑上吧。嗯,这里又涉及到软路由了,后面出文章再讲吧。

点击此处,找到对应版本的FRP下载,解压到你盘里某个位置。找到 frpc.ini,用记事本或 Notepad++ 打开:

[common]
server_addr = 服务端IP或者域名
server_port = 你刚才在服务端设置的端口(5443)
privilege_token = 你刚才在服务端设置的密码

上面是服务端连接信息,下面举例说明常用的 tcp、http、https 映射:

[Web]   # 中括号中内容为映射名称,用以快速寻找区分众多的映射服务,每一个映射都要取一个名字,只支持英文,推荐命名形式:姓名简称_设备_服务
type = tcp    # 类型,因为你映射的是ssh端口,所以选择tcp,如果你要映射http服务或者http服务,那就填写对应的http或者https
local_ip = 127.0.0.1   # 为你映射局域网内设备的IP地址,假设127.0.0.1代表的是我电脑的内网ip地址
local_port = 8080   # 本地端口号,假设中8080端口为我电脑的远程控制端口(一般默认为3389,为了安全建议改一下);
remote_port = 8080   # 远端端口号,也就是映射成功之后你所用的端口号,可以自定义,端口号可选择0到65535;
custom_domains = XXX.XXX.XXX   # 你的IP地址或者域名

以上代表我在公司电脑上打开远程桌面,输入 XXX.XXX.XXX:8080 后就可以远程控制我家电脑。再举个例子:

[Web]   # 中括号中内容为映射名称,用以快速寻找区分众多的映射服务,每一个映射都要取一个名字,只支持英文,推荐命名形式:姓名简称_设备_服务
type = http    # 类型,因为你映射的是ssh端口,所以选择tcp,如果你要映射http服务或者http服务,那就填写对应的http或者https
local_ip = 127.0.0.1   # 为你映射局域网内设备的IP地址,假设127.0.0.1代表的是我电脑的内网ip地址
local_port = 8080   # 本地端口号,假设中8080端口为我电脑的远程控制端口;
remote_port = 80   # 远端端口号,也就是映射成功之后你所用的端口号,可以自定义,端口号可选择0到65535;
custom_domains = XXX.XXX.XXX   # 你的IP地址或者域名

以上代表我在公司电脑上打开浏览器,输入 XXX.XXX.XXX 后就可以访问在我家电脑上搭建的端口为 8080 的网站。就这样,把你想要的一条条往下加,保存即可。

那么怎么访问你家电脑某服务就不必我明说了吧。

tcp :单纯的 TCP 端口映射,服务端会根据不同的端口路由到不同的内网服务。
udp :单纯的 UDP 端口映射,服务端会根据不同的端口路由到不同的内网服务。
http :针对 HTTP 应用定制了一些额外的功能,例如修改 Host Header,增加鉴权。
https :针对 HTTPS 应用定制了一些额外的功能。
stcp :安全的 TCP 内网代理,需要在被访问者和访问者的机器上都部署 frpc,不需要在服务端暴露端口。
sudp :安全的 UDP 内网代理,需要在被访问者和访问者的机器上都部署 frpc,不需要在服务端暴露端口。
xtcp :点对点内网穿透代理,功能同 stcp,但是流量不需要经过服务器中转。
tcpmux :支持服务端 TCP 端口的多路复用,通过同一个端口访问不同的内网服务。

(三)客户端启动

Windows打开cmd,进入FRP客户端相应目录,输入以下命令启动 frps.exe 即可

frpc.exe

成功则看到如下信息(类似即可):

D:\frp\frp_0.16.1_windows_amd64>frpc.exe
2018/04/25 14:31:00 [I] [proxy_manager.go:298] proxy removed: []
2018/04/25 14:31:00 [I] [proxy_manager.go:308] proxy added: [ssh]
2018/04/25 14:31:00 [I] [proxy_manager.go:331] visitor removed: []
2018/04/25 14:31:00 [I] [proxy_manager.go:340] visitor added: []
2018/04/25 14:31:01 [I] [control.go:240] [f30f90361df8ce96] login to server success, get run id [f30f90361df8ce96], server udp port [0]
2018/04/25 14:31:01 [I] [control.go:165] [f30f90361df8ce96] [ssh] start proxy success

(四)访问面板

访问 http://192.2x.x.x:6443,点 Proxies,即可看到上述各个映射,然后就开始浪吧!

如果失败,看看你路由器防火墙和服务器的防火墙相应端口有没有打开,你添加的相应映射的 remote_port 端口,也要在防火墙打开,一定注意!

赞(1) 打赏
未经允许不得转载:GSWXY » 内网穿透系列:NPS和FRP技术

评论 抢沙发

评论前必须登录!

立即登录   注册

耳语海岸

WLK版本,定位于RP服务器,趣味养老,请注意:本服仅为技术交流和学习使用,欢迎广泛传播,不作为商业用途。

①群已满加入②群

觉得文章有用就打赏一下文章作者

非常感谢你的打赏,我们将继续提供更多优质内容,让我们一起创建更加美好的网络世界!

支付宝扫一扫

微信扫一扫