frp内网穿透搭建图文教程
由于工作项目需要,搭建了Ngrok服务器来实现内网主机向外网用户端提供服务的内网穿透,偶然间遇到了FRP这个工具,感觉frp比ngrok更好用,直接用官网下载相应版本就好,而不用自己编译,特别方便。下面我将介绍如何通过frp,让局域网内的arm板对外网用户提供ssh服务。(居于网内主机如何向外网提供web服务之类的也是一样的道理)
(1)准备工作
有一个公网IP的服务器(VPS),根据服务器环境,和主机环境下载相应的frp服务器端和客户端。我这里服务器服务器环境是linux 64位,客户端环境是arm 端。所以到官网https://github.com/fatedier/frp/releases下载相应版本,如下图:
下载解压后有如下的七个文件:
(2)配置服务器端
服务器端只需要两个文件frps和frps.ini,其中frps为可执行文件,frps.ini为配置文件,是不是很方便?配置文件如下图(很简单):其中bind_addr为本机IP,bind_port为frp对客户端的端口号,auto_token是客户端连接服务器端的口令。
配置好后即可运行服务器端:./frps -c ./frps.ini
运行成功如上图,现在就可以配置客户端啦!
(3)配置客户端
同样将客户端解压后有七个文件,只需要frpc和frpc.ini,配置文件如下:
注意:server_addr是服务器端的公网IP地址,server_port是frp服务端口号,auto_token是连接服务器的口令,必须和服务器保持一致。[ssh_208]是客户端通过服务器与用户之间的通道名,每个客户端必须不一样,remote_port是服务器端对外提供本机服务的端口号,即用户连接60.12.220.16:10085,相当于连接127.0.0.1:22,即arm板上的ssh服务
运行客户端:./frpc -c ./frpc.ini
(4)测试
现在我们用外网主机来远程登陆到我们的arm板子,ssh 60.12.220.16 -p 10085
可以看到,完美成功!!
(5)补充后期遇到的问题!!!
注意:客户端的时钟不能和服务器端时钟相差太大!否则会出现认证超时的错误:authorization timeout
这个超时时间可以在配置文件中通过 authentication_timeout 这个参数来修改,单位为秒,默认值为 900,即 15 分钟。如果修改为 0,则 frps 将不对身份验证报文的时间戳进行超时校验。
使用命令:date 查看当前计算机时间
使用命令:date -s "YYYY-MM-DD HH-MM-SS" 设置时间
使用命令:hwclock -w 写入flash
下面是一个客户端的应用实例
本教程只是提供一个frpc配置模板,请按自己服务器实际参数修改配置。
步骤:1(打开 花生壳内网版)
步骤:2(打开 frp)
步骤:3(填写 frpc参数)
步骤:4(保存 参数设置)
步骤:5(启动 frp)
frpc参数
[common]
server_addr = www.domain.com
server_port = 7000
privilege_token = 12345678
user = 自定义用户名称
[自定义服务名称]
type = http
local_port = 80
local_ip = 192.168.123.1
custom_domains = 自定义域.domain.com
按以上步骤操作成功后,再通过 custom_domains = xxx.domain.com 所设置的域名访问,既可访问到你的路由器。
当然这个只是教你怎么内网穿透到自己的路由器,还有更多玩法,比如穿透到自己的电脑实现远程桌面访问。具体请看本站的教程。都有写的,自己灵活变通就行。
在路由器上运行的frp,可以实现局域网所有设备内网穿透,而不用再在局域网其他设备上运行frp,非常方便。
梅林路由教程
首次使用,先到【软件中心】下载安装【frp内网穿透】插件
先开启frp,再填写参数
步骤1填写默认模板
步骤2填写穿透参数
按以上步骤操作成功后,再通过所设置的域名访问,既可访问到你的路由器。
当然这个只是教你怎么内网穿透到自己的路由器,还有更多玩法,比如穿透到自己的电脑实现远程桌面访问。具体请看本站的教程。都有写的,自己灵活变通就行。
在路由器上运行的frp,可以实现局域网所有设备内网穿透,而不用再在局域网其他设备上运行frp,非常方便。
注意:
[自定义用户名称],请使用大小写字母和数字,不能填中文!因为是公共服务,也不能和使用本站服务的其他用户所配置的名称相同,请更改为更长更复杂的名称,否则相同不可用。
[自定义域名],因为是公共服务,可能有人已经使用你想设置的二级域名名称,请更换到可用的二级域名为止,或者更换为自己的顶级域名,需要解析到IP