请注意,实施这些功能涉及网络配置变更,可能会对您的网络安全性和隐私产生影响。建议仅在安全且受控的网络环境中进行上述设置。确保所有连接到该网络的设备都已安装最新的安全补丁和更新,并启用防火墙保护,以保障您设备信息与数据的安全。对于因遵循本指南而直接或间接导致的任何损失或损害,包括但不限于数据丢失、服务中断或其他经济损失,作者及发布平台概不负责。

前言

起因,将家里的闲置主机搬来学校当Nas用,后搭建了EMBY流媒体平台,于是想将服务搬到公网,可以实现异地访问看番,也可共享给好友。

尝试了zerotier来P2P连接,由于校园网的大内网环境,完全无法访问,也尝试了皎月连等软件,均无法连上,最后在某个视频的评论区看到了个软件:中国移动畅连试了下居然成功建立虚拟局域网了。

但是用软件需要客户端也下载软件,十分麻烦,只适合自己用,故最后根据司波图的视频搭建了Frp穿透。刚好赶上双十一,各家云服务都有折扣,阿里云有36一年,需要定时抢,没抢到,选了个除阿里外最便宜的腾讯云,2c2g3M带宽40g硬盘,一年68,并且带有固定公网IP,正好适合当穿透服务器(当时理解错了,以为Frp是通过云服务器将客户端与本地服务器建立连接后实现P2P连接,所以没有挑大带宽服务器)。

搭建完成后发现3M带宽根本不够远程访问EMBY内的视频,加上临近考试,故服务器搁置了大半个月。等考完试了,有空闲时间了,中间还抽空去了趟珠海航展,突然想起带宽虽然小但是拿来搭个博客还是绰绰有余的,于是搭建了博客(也就是此站)。为了图省事,直接将服务器重装为腾讯云自带的宝塔面板(OpenCloudOS 9),所以原本搭建的Frp服务也废了。然后因为需要挂Mower-NG(一个明日方舟的自动化脚本)的Web端,需要重新搭建Frp服务,所以这次算是从0.5重新开始搭建吧。

如果有空会把0-0.5写出来(大概吧

公网IP

互联网经过几十年的飞速发展,在2011年2月3日,IANA开始停止向地区互联网注册机构RIR分配IPv4地址,因为IPv4地址已经全部耗尽了。我国在2014年至2015年也开始逐步停止向新用户和应用分配IPv4地址。

IPv4 地址由 32 位(4 字节)组成,这意味着总的地址空间是 2 的 32 次方 (2^32),即4,294,967,296,所以IPv4地址总共大约有42.9亿个。

如今,因为IPv4地址资源有限,很多情况下我们获得的是位于私有网络中的IP地址(即内网IP),这些设备通过NAT(网络地址转换)共享一个或少数几个公共IP地址来访问互联网。

如果个人或企业想要获取独立的IPv4地址,通常需要向运营商提出申请,并且可能需要支付额外费用,甚至在某些地区即便加钱也无法保证获取到公网IP,这使得获取公网IP变得相当困难。

特别是在校园网等环境中,用户往往处于多层NAT结构中,网络拓扑更为复杂。因此,为了实现对外的服务或应用穿透,许多人选择使用拥有固定IP地址的云服务器或其他穿透技术作为解决方案。而Frp就是其中的一个极佳方案。

Frp介绍

frp 是一款高性能的反向代理应用,专注于内网穿透。它支持多种协议,包括 TCP、UDP、HTTP、HTTPS 等,并且具备 P2P 通信功能。使用 frp,您可以安全、便捷地将内网服务暴露到公网,通过拥有公网 IP 的节点进行中转。

FRP 可以将安装了 FRPC 客户端的本地主机上的指定端口通过位于公网的云服务器(运行 FRPS 服务端)暴露给外部网络。由于云服务器拥有固定的公网 IP 地址,因此外部用户可以通过访问该云服务器的 IP 地址加上指定的端口号来访问位于内网的本地服务器。在这个过程中,云服务器充当流量中转的角色。

Frp部署正文教程(勉强算教程吧)

服务端部署

本文以宝塔面板为例,如以其他方式,可以参考官方文档或者其他文章作者的文章(博客园和CSDN上有很多)(可查看司波图视频),由于本人未曾使用过Linux系统,故仅用宝塔面板做示例。

  • 司波图视频发布较早,配置文件为ini格式,现新版本Frp已更换为toml格式,请根据Frp官网toml格式示例填写,不能直接抄司波图的配置。

首先,打开宝塔管理面板,依次进入:Docker-应用商店-搜索frp-选择FRP服务端进行安装

frp

此处设置可以保持默认,也可更改为你想要的设置

image-20241129221956979

点击确定,宝塔面板会自动为你搭建服务,在Docker的应用商店面板选择已安装,可以见到你已经搭建好的frps服务,点击详情,可以查看刚才所设置的端口号与账号密码。我们可以通过在网页输入云服务器IP+web端口号(默认7500,如果你没改的话)进入Web管理页面来验证frps是否搭建成功(记得去服务器防火墙将对应端口打开)

如果在输入账号密码后出现如下图页面,则说明已经成功搭建frp服务端了
账号密码可在上图页面查看

image-20241129222703353

客户端部署

首先前往GitHub下载与服务端对应版本的压缩包,本文以x86的Windows客户端作演示,如果你不知道你是什么架构的电脑,那么默认与此相同。

如果无法打开GitHub,此处提供frp_0.61.0_windows_amd64.zip的蓝奏云下载链接

image-20241129224450025

将压缩包解压到客户端,解压完后有这样几个文件:

frpc.exe,
frpc.toml
frps.exe
frps.toml

其中,frps的两个文件是客户端用的,此处不用,可删除。frpc.exe为启动程序frpc.toml为配置文件此处需要先配置frpc.toml的内容

frpc

根据上图依次填入对应内容,frps的token可以在:宝塔面板-Docker-frps面板-进入安装目录-data-frps.toml中查看,若配置服务端时配配置token,可不填这两行内容。
2024-11-29T15:31:19.png

若如图中tcp模式,本地端口哦填入22,服务器端口填入6000,假设服务器IP为222.222.233.233(随意取的,无特殊含义),那么当访问222.222.233.233:6000时,即可访问本地端口为22的服务。

注意,在http类型中无需填写remotePort,会自动将http协议的Web页面映射到HTTP监听端口-40800(默认)
customDomains处填入解析到你云服务器的域名,如果用域名解析,可以用多个子域名解析到服务器上,然后本地服务分别填写不同的子域名,实现配置多个Web项目。如果填入IP地址,仅能解析一个Web项目

frp同ip配置多个 web 项目 该链接为使用同个IP解析多个web教程,未经实验,不确定是否可用。若自己有域名,推荐使用子域名填写。

完成frpc.toml的配置后,启动frpc服务:

1. 按win+r,输入cmd启动命令行窗口。
2. 输入cd /d 你的frpc.exe所在目录,进入所在目录。

例如我frpc.exe在E:\Frp\frp_0.61.0_windows_amd64,则输入cd /d E:\Frp\frp_0.61.0_windows_amd64

3. 输入 .\frpc.exe -c .\frpc.toml 启动frpc服务
2024-11-29T16:10:00.png
4. 如图中所示,表明Frpc已经启动成功。

由于每次都从命令行启动服务很麻烦,可以通过Windows操作系统中的批处理文件bat来实现快捷启动。
新建一个记事本输入内容

@echo off
cd /d "E:\Frp\frp_0.61.0_windows_amd64"  
start .\frpc.exe -c .\frpc.toml

此处E:\Frp\frp_0.61.0_windows_amd64为你frpc.exe所在目录
保存退出
将记事本后缀名.txe更改为.bat
运行bat文件即可启动frpc服务

此时,可以登录frps网页管理端查看是否成功连接
2024-11-29T16:29:22.png
在左处选择Proxies-选择你所填写的穿透服务类型,例如我图中为http,如果右侧出现你所填写的服务则说明穿透成功。

Mower-NG Web端穿透教程

在此,特别鸣谢以下各位所提供的协助@huh @zhbaor @明月清风

1.配置Mower-NG使其固定端口

1.打开mower_ng\conf.yml

2.在conf.yml文件中找到如下内容,将port改为你想固定的端口号,填入你要的token

2024-11-29T16:46:19.png

3.保存退出,重启Mower-NG。从局域网的其他设备浏览器内输入Mower-NG所在设备的IP地址+对应端口号+/?token=xxx

如我设备局域网IP为192.168.0.10,设置端口为114,token为514
则在浏览器输入192.168.0.10:114/?token=514

4.如果出现如下图所示界面,并且成功显示日志,则说明Mower-NG配置完成
2024-11-29T16:54:13.png

2.配置Frpc.toml

打开frpc.toml,输入以下内容配置Web服务

[[proxies]]
name = "ng1"
type = "http"
localIP = "127.0.0.1"
localPort = 端口1
customDomains = ["域名1"]

[[proxies]]
name = "ng1"
type = "http"
localIP = "127.0.0.1"
localPort = 端口2
customDomains = ["域名2"]

输入完成后保存并重启Frpc服务,可以进入网页端(7500端口)检查是否生效。
如果生效,则在浏览器输入服务器域名:40800(HTTP默认监听端口)/?token=xxx即可远程访问Mower-NG的Web服务。

参考文章

Frp Github官网
Frp官方文档-通过自定义域名访问内网的Web服务
frp 配置多个 web 项目,无需购买域名

再次特别鸣谢以下各位所提供的协助@huh @zhbaor @明月清风**