写在前面:

本文献给年少时对软路由无比向往的我
也献给生来就渴望探索世界的你...

这个世界奖励好奇者

软路由科普:

要想体验软路由,畅玩软路由,我们得先知道软路由是何方神圣?
为何令人如此痴迷?

那么接下来请随我的文字一起进入软路由的世界吧!

本文仅做软路由科普
因为设备种类,固件,版本繁多
所以并不会详尽的介绍不同设备的固件刷入,软件使用
具体设备问题请自行谷歌

阅读本文,您能得到:
“什么是软路由?”
“软路由可以用来做什么?”
“我如何选择我的第一款软路由?”
“frpc/s内网穿透的经验分享”
...

我的文章风格不喜欢混杂大量的专业术语
所以我会通过最简单的方式解释
尽可能让每个人都能看懂

软路由是什么?

所谓软路由(就是软软的路由), 是指通过各种各样的软件来实现路由功能,怎么理解呢?就像你买了台电脑,电脑上面下载了一个软件用来帮助你上网,这样的设备就是软路由

对的,你也可以理解成一台运行了路由系统的电脑,事实上,在大多数时候人们都是使用x86平台的微型电脑来当软路由使用,现在也有很多ARM架构的软路由选择,你可以简单的理解成x86是电脑,ARM是手机一样
这里不展开对架构讲解,以新手的角度来看,就是这样,也就足够了

笔者自己的软路由(美丽程度堪比电子色图)

与之相对,也存在硬路由

硬路由又是什么呢?
其实就是我们能直接买到的路由器,是经过专门设计的硬件组合,其硬件大都针对于路由功能进行优化,一般就是一个盒子,上面插几个天线,这家伙就是硬路由了
这样简单的理解就足够了

常见的硬路由

通常我们普通人家里在办宽带的时候都会给我们一个光猫,它可以直接发送wifi信号,你可以说光猫承担了硬路由的工作

而当光猫被改为桥接模式,且外接了一个路由器,这时外接的路由器会进行wifi的广播,我们说外接的路由器就是硬路由

你可以简单的理解为发射信号的那个家伙,他就是硬路由,因为他干了硬路由的工作!

软路由和硬路由的区别?

刚入门的小伙一定会很好奇,既然硬路由能让我正常上网,为什么还要折腾软路由?不是给自己找麻烦吗?

我们来看看软路由和硬路由的区别:
难道没有又软又硬的吗?

硬路由器:

优点:
  1. 高性能:硬路由器通常由专用硬件组件构成,因此具有较高的处理能力和数据传输速度。
  2. 稳定可靠:由于专门设计和优化,硬路由器在处理大量数据流量和连接时通常更加稳定可靠。
  3. 简单易用:硬路由器通常具有友好的用户界面,易于配置和管理。
缺点:
  1. 成本较高:硬路由器通常是专门设计的硬件设备,成本较高,特别是对于高端型号。
  2. 灵活性较差:硬路由器的功能通常固化在硬件中,不易根据特定需求进行定制和扩展。
  3. 更新维护相对困难:硬路由器的软件和固件更新通常需要依赖厂商发布,更新相对不够灵活

人话:

优点:
擅长处理网络传输

缺点:
性能好的硬路由贼,好是好,咱也买不起啊
而且功能太少了,很难满足个人的特殊需求(不能装一些很牛的第三方软件,像是挂载云盘,离线下载,科学上网,异地组网等等)

软路由器:

优点:
  1. 灵活定制:软路由器是通过在通用计算机上运行特定的路由软件实现的,可以根据需要灵活定制和配置,满足特定的网络需求。
  2. 低成本:相比硬路由器,软路由器通常运行在通用硬件上,成本更低,特别是在小型网络环境中,可以利用现有的计算机资源。
  3. 社区支持:许多软路由器解决方案是开源的,比如Openwrt,iStore,梅林等,这些开源方案拥有庞大的社区支持和无私贡献的开发者,可以获得丰富的技术支持和功能扩展。
  4. 容易更新:软路由器的软件更新相对较为灵活,可以根据需要随时更新和定制。
缺点:
  1. 稳定性较低:由于软路由器运行在通用计算机上,其稳定性可能受到硬件配置和环境的影响,相对硬路由器来说稳定性可能较低。(取决于玩家技术)
  2. 管理复杂度较高:软路由器的配置和管理可能需要更多的技术知识和经验,相比硬路由器来说可能较为复杂

人话:

优点:
扩展性好,可玩性高,可以帮助你各种DIY,满足你的一切网络幻想,入门可以用旧电脑,手机等,利用现成资源就能玩!

缺点:
自从用了软路由,家里的网没有一天是好的
(大多数情况是因为买软路由的人都爱折腾,有各种自己的特殊需求,喜欢不断尝试新鲜事物,所以也经常出bug)

热知识:如果你的软路由系统又崩了哭是没用的 ( ´・・)ノ(._.)`

通常,我们在使用硬路由时并不需要一个软路由来处理数据,硬路由自己就可以很好的完成任务

而我们在使用软路由满足我们奇奇怪怪的需求时,通常会选择硬路由来发射信号,因为软路由毕竟是跑在通用硬件上的软件,通用硬件大多没有对wifi信号进行优化,而硬路由有专门的优化,所以我们选择强强联手!

简单记:

硬路由发射信号牛
软路由可以玩的爽

硬路由可以单独用
软路由通常辅助硬路由使用

软路由加硬路由强强联合可以说是大肠包小肠,弹嫩爽滑!!

现在,你大概对这两种不同的路由器有个初步的印象了

如果你提起了兴趣,恭喜你,你已经开起了新世界的大门!

软路由可以用来做什么:

在上文中,我们提到了软路由有很强的可玩性,扩展性

本章节我们将会深入聊一聊,软路由都可以做些什么?
这里简单提及几项功能,因为软路由的解决方案大多是开源的,拥有庞大的社区支持和无私贡献的开发者,所以功能也近乎无限,一文讲完是不可能的,这里讲述主要功能

科学上网:

难道还有不科学的?

什么是科学上网?

这里提到的科学上网往往是指对海外的一些互联网资源进行访问,在一些科研领域软件开发领域中,闭门造车是很可怕的事情,所以研究人员往往会涉及到科学上网的领域,扬帆起航,畅情海外的互联网,阅览全世界的科研进度和最新成果!

常见的科学上网后使用的网站:
github,google,youtube...

科学上网的实现方式?

通常,科学上网的实现方式是通过特定的代理软件,对于软路由的玩家而言,他们一般会为自己的通用设备刷入一个开源的系统,在里面安装开源开发者们提供的插件来代理他们的局域网流量,达到科学上网的目的,常用的有ClashV2ray等等

安装好插件之后,玩家们会导入他们购买的代理服务订阅地址,这个地址是他们找寻专业的提供商租用的,通常一个月在10元左右,也有高端的会贵一些,导入订阅地址后插件可以下载得到详细的网络代理配置文件,严格按照文件的内容进行代理。

这里因为一些敏感原因,我就不细讲啦

不过,要特别注意,不是科学上网就代表违反了网络使用法则,我们国家允许的正规的企业,机构,通过国家认可的途径浏览海外的世界,有需要的人群可以在获得相关资质与备案后浏览海外网站

“请注意遵守当地法律法规哦,网络非法外之地”

挂载网盘:

大概就是把你的各类网盘都放在你自己的裤兜子里,想用哪个直接拿着方便

什么是挂载网盘?

对于软路由玩家而言,挂载网盘也是很常见的操作
挂载网盘指的是把各类厂家的网盘服务集中在一个管理系统上
但是好端端的网盘,为什么要挂载到一个系统集中管理呢?

通常由以下几种好处:

节省本地存储空间:

挂载网盘可以帮助你释放本地计算机的存储空间,因为你可以选择仅在需要时下载文件,在不需要文件的时候直接放到网盘上,这样可以变相达到节省本地存储空间的效果

方便访问和管理文件:

通过将网盘挂载到计算机上,你可以直接在文件管理器中访问和管理云存储中的文件,就像访问本地文件夹一样。这简化了文件的查找、复制、移动和删除过程。

实时同步:

挂载网盘可以使云存储中的文件与本地计算机保持同步。当你在本地计算机上修改或添加文件时,这些更改会自动同步到云端,反之亦然。这有助于确保文件的实时更新,无论你在何处访问它们。

多设备访问:

通过挂载网盘,你可以轻松在多个设备上访问相同的文件,而不必手动复制或传输文件。这对于在工作、学习或生活中使用多个设备的用户而言非常方便。

当然,你也可以通过在软路由上挂载本地磁盘,通过内网穿透的方式将自己的磁盘暴露在公网上,让自己在世界上任何有网络的地方都能随时访问到自己的磁盘,听起来就蛮快乐的!

备份和安全性:

将文件存储在云端提供了一种备份的方式,以防止本地设备发生故障或数据丢失。大多数云存储服务都提供了数据加密和安全性功能,确保你的文件得到保护

总的来说,挂载网盘为用户提供了更便捷、灵活、安全的文件管理方式

特别是对于那些需要跨多个设备工作或访问文件的人来说

广告屏蔽:

屏蔽局域网内所有设备可能接收到的广告

软路由如何屏蔽广告?

一般来讲,软路由屏蔽广告需要安装对应的插件,比较常见的有DNS过滤器, AdGuard Home等等工具,下面屏蔽广告的部分原理:

DNS屏蔽:

许多广告服务器的域名是已知的,广告屏蔽软件通过使用特定的DNS(域名解析服务)来阻止与广告相关的域名解析。这样,当设备尝试连接到广告服务器时,DNS会返回一个无效的IP地址,从而阻止广告的加载。
DNS就是电话薄一样的东西,比如“可可”对应的电话号码是173 xxxx xxxx,而DNS就是域名和IP的对应关系查找册,比如输入“baidu.com”这个域名,服务器通过dns确认IP地址,返还给你的计算机,你就可以正确的访问到百度啦!

HTTP代理:

通过设置HTTP代理,广告屏蔽软件可以监控网络流量并识别和阻止广告。当设备尝试访问广告时,代理会拦截请求并返回一个空白页面,从而达到屏蔽广告的效果。很厉害吧!

正则表达式过滤:

一些软路由屏蔽广告的工具使用正则表达式来匹配广告相关的URL或内容,然后阻止这些请求。这种方法允许对广告请求进行更细粒度的控制。
定下规则,匹配到广告的关键部分是符合规则的,然后就选择屏蔽掉

这只是众多屏蔽广告方法中的几种特例,不过我们了解这些就足够了!

笔者寄语:

想必你读到这里的时候已经发现了,这篇文章想要读完,5分钟是不太现实的!
哈哈,我骗了你

但我也相信,这样的方式能让你快速对软路由激发兴趣,能让你有耐心看到这里

如果你好奇了解这些知识有什么用?自己又用不到

我希望你能明白,人的一生很长,不一定什么时候你学到的知识就会帮助你一把,帮你渡过难关,平稳上岸

所以,如果可以,就再给我“5分钟”吧,让我再给你好好讲讲,好吗?
笔者:“快啦快啦,快结束啦!”

屏幕前的你:

玩机前期的准备:

选择平台

我们刚刚讲过,软路由通常有x86ARM两种平台
作为新入门的小菜鸟,我们应该如何选择适合自己的平台呢?

简单来讲,x86和ARM软路由之间的区别大致是这样的:

兼容性:

ARM:

ARM软路由可能需要特定于ARM架构的软件和驱动程序,但ARM在移动设备和嵌入式领域的广泛应用也促使越来越多的软件支持ARM。

x86:

x86平台和电脑是类似的,所以一般支持虚拟化,对docker(一种在服务器上安装软件的容器)的支持要好于ARM架构,这意味着如果你不仅仅想要让软路由用来处理网络数据,还希望在软路由上面跑一些服务,甚至创建虚拟机,那么x86是最适合你的

反之,如果你希望让软路由安稳的做好自己的本职工作就好,那么选择ARM一定是最正确的

成本:

ARM

普遍性价比较高,可以用较为低廉的价格买到性能很好的硬件
其中比较出名的是友善R2S,R4S,R5S,电犀牛R68S

x86

普遍对虚拟化支持较好,可定制性强,但是价格也很多,其中较为有名的是搭载了J1900,J4125等芯片的工控机

当然,无论你选择了ARM平台还是x86平台,都可以刷入Openwrt系统后使用科学上网,挂载网盘,广告屏蔽等功能性插件,这些基础的功能,两个平台都有很好的支持

功耗:

ARM:

ARM处理器以低功耗著称,适用于需要高度节能和散热要求的场景,如嵌入式系统和移动设备。

x86:

x86架构处理器通常倾向于较高的功耗,这使得它们更适合于桌面和服务器环境,而不太适合需要低功耗的应用。

在选购软路由的时候请考虑自己是否要加装或挂载移动硬盘,考虑好大概需要的总功耗是多少,如果购买了功耗过低的设备有可能出现掉盘的风险,笔者购买的是友善R5S,店家有提供29w定制供电器的套餐,所以笔者不担心功耗过大导致掉盘。同时也要确定自己购买的设备是否支持快速充电,比如R2S不支持PD快充,而R5S支持

另一方面也要自行在网上查看测评,比如R2S软路由只适合家庭带宽 <= 500M的用户使用,如果你是千兆带宽,那么一定要考虑R4S和R5S

总的来说,看专业博主测评一定是最高效的

`

笔者寄语:

请坚持下去,马上就要结束啦!

frpc/s内网穿透(经验分享):

本段落重要提示(warning):

因为软路由的硬件和固件可选项太多
不同网络环境也不能一概而论
所以这里以笔者自己的开发环境为准

什么是frpc/s内网穿透?

frp是一种内网穿透的技术方案
服务端是frps,frps的s代表了serve(服务),客户端是frpc,frpc的c代表了client(客户端),我们可以在具有公网IP地址的VPS上部署frps服务端,之后在我们内网的机器上部署frpc客户端,让frps和frpc运行,我们的内网机器就可以通过具有公网IP的VPS的公网IP + 端口进行访问了。

frp内网穿透有什么用?

当我们为内网的软路由挂载大容量硬盘,且安装了对应的磁盘管理工具时(例如笔者在5244端口安装了Alist),我们可以通过内网加端口进行访问(笔者的软路由内网地址是192.168.1.66,所以访问地址是192.168.1.66:5244)

实际访问效果如图

但是接下来笔者开始思考:
“如果我想要让自己在任何地点都可以访问到自己挂载到软路由的磁盘该多好啊”

这时我们就需要了解如何在外网访问了

一般来讲,我们需要一个公网IP地址

“啊?公网地址是啥东西?”

简单来说就是暴露在公共网络上面的地址
通过这个地址可以在互联网上找到我们的机器
在家里连上路由器时
路由器和光猫进行通讯
所有的设备在发送数据都经过路由器
路由器管辖的所有设备共同组成了内网

但由于IPv4地址本身的位数限制,导致数量有限
近两年已经没有空闲的公网IPv4地址免费分发给个人
所以我们现在使用的IPv4地址
是运营商提供的一个大水管里面细分的小水管

啥意思呢?

咱就是说,运营商给你整个大水管
这个大水管有独立的公网IPv4地址
这一个大水管负责一个小区或者一片区域

里面所有用户的IP地址都是这个大水管的内网IP
这样每个人都可以有自己的可以用来识别的地址
我们就可以正常和大水管沟通,来访问公网啦!

但总的来说,这样的方法让我们没有分到公网IP地址

也就无法在公网上找到我们的设备
更不要提连接到对应的端口访问Alist了
(我们在局域网访问的时候是通过内网ip加端口号)

而frp内网穿透为我们提供了解决方案:
购置一台有公网IP的VPS,也就是找云服务商买一台虚拟机,利用虚拟机带的公网IP作为窗口,来映射我们内网的数据
(因为一般vps都是用作云服务,是一定要能够远端开发的,所以都会有IPv4的地址)

通俗解释的话,就是内网的机器将数据给有公网IP的VPS,当我们访问对应IP和端口的时候,VPS把数据再传给我们

就是这样!

实战内网穿透:

笔者的自言自语:

笔者使用了友善R5S的软路由
在刷入了Openwrt后使用frpc进行内网穿透一直报错

具体的问题我暂时没有搞懂
就像我说的

“软路由硬件和固件的版本都太多,很难有统一的方案”

所以笔者没有使用openwrt内部安装的frp插件
而是使用了frp在Github上官方的开源项目
下载官方组件自行写好配置文件
最后上传到服务器运行

这种方法是通用性比较强的一种方法
很适合分享出来

实际配置方案:

客户端(以下统称R5S端):

笔者在R5S端搭建了Frpc,也就是客户端

在R5S端上,笔者使用的方案是创建一个文件夹存放Frpc和其配置文件,通过cd命令切换到文件夹内部,使用官方的命令启动

在R5S端上使用Frpc时,因为是我们自己创建文件夹用命令运行,所以我们还需要再结束部署后写入系统开机自启动命令(非常简单,别害怕)

服务器端(以下统称AWS端):

(AWS是亚马逊云服务Amazon web service的缩写)

笔者在自己购买的亚马逊服务器上搭建了Frps,即服务端

在AWS端上,笔者安装了1panel管理面板,这个面板的功能和宝塔很类似,都可以通过图形化的页面来查看vps状态,且可以安装各种应用,非常的方便

安装1panel一方面是为了用应用市场里面自带的Frps客户端,用着方便,也不需要额外设置开机自启,深受笔者喜爱!

最重要的另一方面是
使用1panel面板在反向代理和申请域名证书开启https时超级便利,就像铜火锅下羊肉卷,真香!

整体架构:

在R5S端安装Frpc(客户端),在AWS端安装Frps(服务端),之后配置文件,R5S端使用命令启动,AWS端使用管理面板(也可以用命令的),最后配置开机自启动

完美解决!
这其实就是传说中的
C/S架构:Client/Server(客户机/服务器)架构

又学到一个奇奇怪怪的知识鸭

工作模式的选择:

这里要提醒一下屏幕前的读者
Frp内网穿透有多重工作模式
举个例子,加入你希望将ssh的22端口内网穿透
那么你要使用的工作模式是TCP端口穿透模式

本篇作者的目的是希望将安装在软路由的软件穿透
实际上就是http网页穿透模式
所以配置的教程是按照http穿透来的

但是TCP端口穿透和其他工作模式也都很简单
笔者会将有关的知识链接贴在文章最后面
可以自行查阅

AWS端(服务端)配置:

安装1panel面板:

首先我们需要用ssh登录服务器的后台
输入1panel官方的一键安装脚本
就可以安装我们的1panel管理面版啦!
超级简单有木有!!

点击 → 1panel官方安装脚本

`安装时请注意自己的系统选择对应的命令,比如笔者是ubuntu20`

安装之后记得开放防火墙端口
开放的端口取决于你安装1panel时设置了哪个端口

如果你在正规云服务器厂商购买
那么进入后台一般有防火墙的设置
这里是笔者的设置

``` 有一些小的云服务器厂商默认没有开启防火墙 这个你们可以自己谷歌一下 也可以用linux开放防火墙命令 网上有很多经验分享,这里不再赘述 ```

之后我们通过安装成功之后命令行中显示的地址和端口访问
第一次安装完成时,命令行会弹出访问地址
记得需要带上地址后面的安全码才可以

安装frps:

进入1panel就可以在应用商店中找到frps

frps配置:

在“已安装”的界面找到frps,点击小文件夹图标进入目录

进入data中

这个frps.toml就是我们的配置文件
可以在里面配置我们的服务端信息

来解读一下我目前的配置

分为两个部分
上半部分是笔者配置服务端信息
vhost是配置了http代理过程中使用到的端口信息
这个一定,一定要写在bindPort上面
不然会提示错误,显示没有绑定http端口!
笔者排查了好久才发现这个问题!

下半部分是开启网页管理页面
也就是可以直接通过服务器的IP + webserverport来访问后台
实际没什么用,只能用来看连接状态
没办法设置
这里笔者贴一张图上来,满足你们的好奇心

在开启网页管理页面之前请先安装openresty和mysql
这样可以支持网页的启动

接下来保存好配置,我们到应用商店页面重启一下Frps就可以啦

服务端配置完毕

R5S端(客户端)配置:

下载Frpc

因为笔者的R5S上面刷入了openwrt系统
1panel并没有对其进行适配
同时openwrt系统中安装的frp插件难用的一塌糊涂
所以这里我们选择自行部署frpc

点击 → frp官方插件下载地址
进入到frp官方插件下载地址

在这些文件中寻找到适合你的版本
点击并下载

Q:"我不知道该下载哪一个版本"
A:"可以把你的cpu丢到谷歌上查一下,立刻就能得到你需要的答案!"

笔者也不记得部署时具体用的哪个版本
这里为了讲解选择“frp_0.54.0_linux_arm.tar.gz”的版本

下载后得到.gz结尾的文件
将其解压到对应的文件夹中

进入之后可以看到有frpc和frps两部分文件

其中没有后缀的frpc和frps是可执行文件
而以toml为后缀的文件是配置文件

我们用ssh命令连接到Openwrt系统

在终端中我们可以使用这个命令:
./frpc -c ./frpc.toml

启动客户端

这里的启动客户端需要你在输入命令时
已经处于放置文件的目录
可以使用cd /path/来切换到你存放可执行文件和配置的目录

但是我们暂时先不进行启动客户端
我们需要先编辑我们的配置文件

frpc.toml(或frpc.ini)是其配置文件
可以使用文本编辑器打开

http穿透模式配置:
在本文的最后
笔者分享了一篇frp多模式的学习教程
十分受用

这里因为笔者需要让alist的网页穿透
所以是http穿透模式配置的教程
其他工作模式暂不赘述

使用记事本打开frpc.toml进行编辑
这里是我已经配置好的文件

vhostHTTPPort = 8080  
vhostHTTPSPort = 8443
#这里特别注意,vhost也就是虚拟端口设置
#一定要写在serverPort的上面
#不然会出现“端口没有设置”的错误提示

serverPort = 7000  
#这里是远程主机的通讯端口
#也就是我们刚刚在frps.toml配置的bindport

serverAddr = "xx.xxx.xx.xxx"  
#这里是远程主机的IP地址

[[proxies]]  
name = "Alist"
#这套代理规则的名称

type = "http"  
#工作模式-http模式

localPort = 5244 
#本地需要穿透的服务端口
#因为笔者安装alist时安装到了5244端口

customDomains = ["xx.xxx.com"]
#穿透以后使用什么域名访问
#域名在下面有解释

#下面的代码是开启服务器端控制面板(可选)
webServer.addr = "0.0.0.0"

webServer.port = 7500 
#网页端控制面板的端口

webServer.user = "admin"
#网页端控制面板的用户名

webServer.password = "admin"
#网页端控制面板的密码
运行frpc

将frpc.toml配置完之后上传到自己的服务器本地
在终端使用cd命令到对应的目录

对于刚入门linux系统的小朋友
我比较推荐在进行连接的时候使用finalshell
一款免费的ssh连接软件(部分高级功能收费)
连接后可以直接上传,移动,编辑文件

此处非广告
笔者自用免费版本finalshell
且功能足够使用

如果你是小白用户,使用一款图形化ssh软件是很有优势的

比如在上面这张图片中
笔者在根目录创建了一个frp文件夹用来放置frpc和配置
所以我们需要先切换到frp文件夹

使用cd /frp

使用:
`./frpc -c ./frpc.toml #启动 frpc

特别注意:
这条命令的用法是输入后启动frpc
当关闭该ssh连接窗口后将会关闭frpc程序
如果希望在关闭ssh窗口后还能让我们的frp服务正常运行
可以使用:
./frpc -c ./frpc.toml >/dev/null 2>&1 & #frpc服务端后台运行

一般来说
我们就可以正常通过
http://xx.xxx.com:8080进行我们的访问了

Q:
	为什么是通过8080端口?我本地的应用端口不是5244吗?
A:
	请注意,我们在frpc.toml写过
	localPort = 5244
	
	这行文字是为了让frpc知道我们需要穿透的本地应用端口是什么
	
	同时我们在frps.toml中有一行配置:
	vhostHTTPPort = 8080
	
	这行配置指定了frps会使用aws的8080端口对外提供服务
	
	所以我们使用指定的域名加上8080端口访问时
	frp会先通过域名来判断你穿透的是哪一个内网服务
	
	最后通过aws的8080端口对你提供穿透后的服务

	所以我们需要通过
	`http://xx.xxx.com:8080`进行访问
域名问题:
可能有小伙伴不懂什么是域名

实际上,域名就是IP地址的昵称
这个你可以自己来决定

因为IP地址一般是一串很长的数字
所以我们需要给IP地址起一个好记的昵称

我们可以通过找域名注册商注册域名
同时讲域名解析到你需要的IP地址
就可以通过简单好记的域名来访问对应的IP地址啦

因为域名算是互联网的最基础知识
本文不进行过多赘述
进阶部署:

如果希望开机自启动
我们可以进行进一步的设置

我们可以通过ssh连接到OpenWrt上

使用vim命令设置开机启动时执行后台运行frpc的脚本

这是一般的步骤,具体操作可能因不同的OpenWrt版本而有所不同。

  1. 编辑启动脚本: 打开OpenWrt终端,编辑启动脚本。常见的启动脚本位置是/etc/rc.local。你可以使用编辑器如vimnano来编辑。

    vim /etc/rc.local
    
  2. 添加frpc启动命令: 在文件中添加frpc启动命令,确保它在exit 0之前。示例:

    # 添加下面这行
    /path/to/frpc -c /path/to/frpc.toml >/dev/null 2>&1 &
    
    # 在 exit 0 之前
    exit 0
    

    确保替换 /path/to/frpc/path/to/frpc.toml 为你实际的frpc程序路径和配置文件路径。

  3. 保存并退出:vim编辑器中,按Esc键,然后输入 :wq 并按回车保存并退出。在nano编辑器中,按Ctrl+X,然后按Y确认保存,最后按回车退出。

  4. 授予执行权限: 确保rc.local文件有执行权限:

    chmod +x /etc/rc.local
    
  5. 重启软路由: 重新启动你的OpenWrt路由器(可以使用reboot命令)

恭喜你,重启之后你的frp服务就可以自动后台运行啦!

反向代理

什么是反向代理?

目前我们访问我们的内网穿透服务需要使用
域名 + 端口号

那么能不能直接使用域名访问呢?

答案是可行的

我们平时使用谷歌在地址栏直接输入
google.com
就可以正常的访问

并不需要我们输入端口号

这个就叫做反向代理
也就是通过一个域名来表示服务器地址 + 端口号

还记得我们一开始说要在AWS端安装1panel吗?
对的,该他上场了!

部署反向代理:

在开始部署之前我们需要用1panel的应用商店
安装openresty和mysql

这两个软件是干什么的呢?

我们可以看到,openresty可以支持我们的服务器搭建网页
其主要功能之一也是我们正要进行的反向代理

而mysql则是数据库,可以支撑我们的软件数据

安装之后我们来到1panel的网站页面

点击创建网站-反向代理

主域名填写我们最开始在fprc里面填写的域名
xx.xxx.com

代理地址我们就选择http
因为目前还没有证书

代理地址填写xx.xxx.com:8080(地址 + 端口)

之后点击确定

我们可以看到状态是已启动
接下来我们就可以直接访问
http://xx.xxx.com
这样就可以直接跳转到我们需要的页面啦~

配置证书开启https:
为什么要开启https:

当我们使用http进行网站的访问时
浏览器往往提醒我们这是不安全的连接

那么怎么解决这个问题呢?

很简单,开启https!

申请证书前的准备工作:

接下来我们需要到1panel的证书页面

分别创建一个DNS和Acme账户
这两个账户和你的域名就是全部的开启https的条件

DNS账户信息填写处

这里需要你有一个dns账户
通常dns账户可以从一些提供dns服务的厂商得到
这里我使用的是cloudflare

优点:
完全免费
效率好,性能不错

缺点:
在国内访问有时抽风
不适合普通网络环境用户

特别提醒:
如果使用cloudflare
在填写API Token的时候请务必不要使用Global API
会出现无法验证的错误

可以创建一个API并赋予指定域名范围管理的能力
这样是完美实现目的且安全性更高的做法

接下来创建Acme账户
这一步仅仅需要你有一个可以用的邮箱就好了

申请证书:

当我们上面的步骤都完成了
就可以申请证书啦!

主域名填入我们刚刚反向代理使用的主域名

Acme账户选择刚刚注册的
密钥算法要和注册Acme账户时选择的一样

DNS账号选择刚刚注册好的

直接点击确认

大功告成!

成功之后的样子

开启https:

回到网页页面
点击配置

在HTTPS选项卡中开启即可
注意将需要填写的项目改成自己刚刚注册的就好啦!

现在,我们就可以直接访问
https://xx.xxx.com
来进入我们的服务啦!

反向代理部分完成!

内网穿透部分完成!!

本文核心内容到此完结!✨🌸完结撒花🌸✨

写在最后:

给读者的话:

首先,我必须要感谢你能读到这里

你能读到这里本身就已经证明了你是一名热爱这个世界的冒险家

一名热爱一切知识的船长!

所以我也要恭喜你!

你一定能在未来的人生中让知识点亮你的世界
做你指引方向的炬火!!

如果,你没有能坚持读完

也恭喜你

很多时候我们不可能掌握所有知识,学会取舍也是一门技术

恭喜你有这种勇气,这种果断!

这同样值得骄傲。

不管你阅读了多少,都很感谢你,这都值得赞扬!!

请务必记住

这个世界会奖励热爱探索的你

笔者自己的心里话:

其实一开始

笔者在写这篇文章的时候
是希望将自己从挑选到配置软路由的全部历程记录下来

方便后面入门的朋友参考

可随着折腾的技术多了,慢慢的发现写完变得不现实
至少在这一篇文章中完成,是不现实的

就好像单单是内网穿透部分,我们花了很大的篇章一起攻克它
这无疑是一项值得我们骄傲的壮举

但如果想要将更多的技术都写入这篇文章
一方面可能真的没有人会有耐心阅读了

另一方面我也很难保证写得内容成为一套良好的体系
不至于误导屏幕前的你

简单提一嘴
从最基本的家庭网络拓扑,软路由的不同工作模式(主路由,二级路由,旁路由等),软路由平台和硬件的选择,到固件的选择,EXT4和SQUASHFS固件的扩容方案,科学上网的配置等等

这中间都有很多东西可以拿出来好好讲,拆开了揉碎了讲

内容量之大让编写教程成为一个不简单的工程

所以笔者写到后面的时候,一开始的初心已经改变了

从希望总结一部软路由的使用指南
到希望能给到各位读者对软路由的一点点兴趣

我想,也许兴趣才是最重要的
只要有了兴趣,读者会自己探索
也不需要我在过多赘述

只希望有幸能给屏幕前的你一些帮助

也是给学生时代的自己的一份礼物

推荐教程:

点击下面的标题可以直接进入对应的网站

Openwrt默认空间过小解决方案

frp内网穿透不同工作模式
这个作为了解使用

frp工作模式文档 - 强推
这个可以实际配置上线

frp常用命令

只罗列了很少几篇可以用来看看,知识是没有边界的

Thank You!