看到经常有人会在我网站搜索 Frp内网穿透,就想着出一期关于 OpenWrt 软路由 Frp内网穿透 使用教程,很多时候人们都只会想到 DDNS动态解析 和 申请公网IP 的方法(使用方法比较复杂),从而忽略了 Frp内网穿透,有人会问 Frp内网穿透 能做什么,打个比方,你在酒店访问家里的NAS存储、软路由、下载家里的视频等等

Frp 介绍说明

Frp 分为客户端和服务端俩个方面,客户端称为 Frpc,服务端称为 Frps

Frp 是一个高性能的反向代理应用,可以帮助您轻松地进行内网穿透,对外网提供服务,支持 tcp, http, https 等协议类型,并且 web 服务支持根据域名进行路由转发

Frp 的原理就是通过远程服务器转发的形式来进行通信映射,所以流量都需要走公网的服务器流量,这里一定要注意下,本教程只适合小流量访问,大流量不推荐使用

优点:方便可以随时随地的访问家里的设备

缺点:需要服务器做中转,流量费用比较高

搭建所需准备

购买公网IP的 轻量服务器 或 VPS,国内建议使用阿里云、腾讯云,海外使用搬瓦工或其他稳定服务商,服务器需要为纯净系统,系统推荐如下:

CentOS 32bit/64bit
Debian 32bit/64bit
Ubuntu 32bit/64bit
Fedora 32bit/64bit

购买任意域名,国内服务器访问需要备案域名,国外无需,建议使用国内,主要是快、稳定,然后将域名解析到公网IP服务器上,需要解析如下:

domain.com A 公网ip
或 二级域名
frp.domain.com A 公网ip
必须解析的通配
*.domain.com A 公网ip

下载 OpenWrt 所需的 Frp内网穿透 插件(本站提供给 arm64 A53 架构使用,其他自行插件库查找),本站提供的插件版本为 0.38.0,如 frpc 依赖老旧,可以通过以下插件库进行查找替换,下载地址:

# frpc.ipk 查找地址
https://mirrors.cloud.tencent.com/openwrt/releases/packages-22.03/aarch64_cortex-a53/packages/

# 本站提供的 0.38.0 插件包
https://cloud.opssh.cn/chajian/frp内网穿透.rar

安装内网穿透插件

下载好 Frp内网穿透 插件包,并将插件包解压出来,打开 OpenWrt 管理界面,进入系统列表页找到文件传输,通过文件传输依次将 frpc_0.38.0-1_aarch64_cortex-a53.ipkluci-app-frpc_1.2-1_all.ipkluci-i18n-frpc-zh-cn_1.2-1_all.ipk 插件上传并进行安装,如下图:

安装frp内网穿透插件

搭建内网穿透服务端

这里我们演示用的系统是 CentOS 8.2 版本(注意一定要是什么环境都没搭建的纯净系统),腾讯云轻量服务器,域名已备案,当然你也可以选择腾讯轻量服务器海外的,比如:香港轻量服务器。

服务端也就是 Frps,下面我们使用 Putty 连接 SSH 服务端,执行 Frps服务端一键配置脚本,Frp 最新版本:0.38.0,依次执行即可,代码如下:

wget https://code.aliyun.com/MvsCode/frps-onekey/raw/master/install-frps.sh -O ./install-frps.sh
chmod 700 ./install-frps.sh
./install-frps.sh install

执行后会提醒从哪里下载,这里给出了俩个选择,aliyun 和 Github,国内服务器使用 aliyun,国外服务器使用 Github,因为国内屏蔽 Github,如下图:

安装拉取选择

选择下载节点后,提示服务端选择绑定端口,默认 5443,这里我们直接默认回车即可,如下图:

端口选择默认5443

提示 vhost_http_port,vhost_https_port,dashboard_port 端口选择,全部都是默认,80、443、6443,如下图:

访问的端口设置默认

选择完端口后,提示设置用户名 dashboard_user,默认 admin,也可以自行设置,设置用户密码 dashboard_user,默认随机,建议手动填写,如下图:

用户名账号密码设置

设置完用户名和用户密码,就会进入设置 token 生成,这里直接默认即可,不用手动填写,接着就是设置 frps 访问域名了,subdomain_host 填写域名,最好是顶级域名(这里演示我用的二级域名),如果不设置访问就会通过IP访问,如下图:

设置token和访问域名

剩下的全部回车默认即可,执行完就会如下,保存 Congratulations, frps install completed 下面所有文本内容,方便一会填写使用,如下图:

剩下设置全部默认

然后我们通过 frps Dashboard 给出的地址访问一下,是否可以访问,如果不能访问请设置服务器防火墙,放行所有端口访问,成功后提示输入账号密码,然后登录,如下图:

访问frps管理界面

Frps 一键脚本内设置参数的说明

bind_port 是绑定的端口,可以自定义
token 是跟frpc通讯验证密钥
vhost_http_port 为http访问的端口,如果你这台服务器只用来做端口映射完全可以改成80
vhost_https_port 是https的端口同上。
dashboard_port 是控制frp控制面板的端口可以自定义。
dashboard_user 这个是管理面板的用户名
dashboard_pwd 管理面板的密码

Frps 一键脚本内其他执行命令

# Uninstall 卸载
./install-frps.sh uninstall
# Update 更新
./install-frps.sh update
# Server management 服务管理器
Usage: /etc/init.d/frps {start|stop|restart|status|config|version}

Frpc 插件设置

1、在 OpenWRT 内进入 Frp 内网穿透 页面,在全局设置内,勾选 启用,填写 服务器(就是你绑定的那个域名),端口为 bind_port 设置的 5443,令牌 为 token,HTTP穿透服务端口 为 80,HTTPS穿透服务端口 443,然后保存&应用,如下图:

设置Frp内网穿透插件

2、在 服务列表 点击添加,进行 配置 Frp 协议参数,选择 开启状态,Frp 协议类型 选择 HTTP,域名类型 选择 自定义 或 子域名,自定义域名 手动填写 如:luyou.domain.com,内网主机地址 选择需要穿透的设备,这里我们演示用 OpenWRT,内网主机端口 为 80,服务备注名 设配名字,比如:ruanluyou,如下图:

配置Frp协议参数

3、然后我们进入 Frps 服务端网页后台查看是否连接服务端,连接成功如下图:

成功链接服务端

4、然后就可以通过 domains 自定义域名来访问你的 OpenWRT 了,方法很简单,如下图:

通过域名访问openwrt

最后总结

其他设备或行为也都大致是一样的,举一反三,按照这个套路继续添加你想要的端口和协议即可,不过要分清楚,比如 WEB 需要 HTTP、HTTPS,SSH 这种是 TCP协议,这个终极区分即可,

还有特别要注意的是,如果你的 Frpc 也就是 OpenWRT 上的 Frp内网穿透 插件版本为 0.38.0,那么你的 Frps 也就是 一键安装Frp服务器端脚本 的版本号必须也要在 0.370 - 0.38.0 之间,

客户端和服务端版本相差太大,就会出现:frp服务启动失败,请检查服务端 “TCP多路复用(tcp_mux)”设置,确保与客户端完全一致!