简介

我的博客服务器其实在家里面,我使用了一台联想m73作为博客的服务器,但是家里面没有公网ip所以我使用了frp穿透

frp穿透需要有一个有公网IP的服务器来搭建服务端,然后客户端在连接服务端把数据穿透出去

这里可能有人会问,既然都有公网的云服务器了,为什么还要在家里面搭建一个服务器呢,我主要考虑了以下几点

第一点,云服务器配置高一点的价格都比较昂贵,单单说云服务器的硬盘价格吧,最便宜的服务器只有20G的硬盘

第二点,数据备份问题,我服务器在家里面我进行数据备份就很方便,和家里面都是一个局域网,我备份数据的时候下载数据之类的速度就很快

最后一点,我不喜欢我的数据存放在其他厂商的服务器里面

本文章只是记录了我自己的大概步骤,没有详细到一步一步的教学,如果有同学有疑问可以在文章下面留言,我将会一一解答

结构

我家里面的服务器是使用宝塔面板搭建的,然后通过frp穿透出去,云端的服务器也使用了宝塔面板,然后搭建了一个frp的服务器,使用宝塔面板来进行反向代理从而实现80和443端口复用。

家里面的网络最前面的肯定是光猫,光猫已经改桥接模式,就负责光电转换,光猫后面是一台软路由,使用的系统是自己编译的openwrt系统,软路由后面就是各种网络设备了,手机、wifi、电脑、服务器等

frp服务端搭建

frp服务端搭建很简单,按照官方的文档来搭建就可以了,如果和我一样比较懒的可以使用一键脚本进行搭建

脚本地址:https://github.com/MvsCode/frps-onekey

下载之后运行脚本,根据提示选择安装即可

注意的是因为我们待会要使用端口复用,所以frp的http端口不能使用80,https端口不能使用443,要把这两个端口空出来

云服务器宝塔面板设置

面板的安装直接去官网根据自己服务器系统选择对应的一键安装脚本,使用一键安装脚本安装即可

宝塔面板官网:https://www.bt.cn/new/download.html

1.png

安装完成后,进入宝塔面板会提示推荐我们按照整个网站的环境,这时候我们取消掉其他的,只需要安装一个nginx即可,其他的数据库之类的我们用不到

2.png

当云服务器的宝塔面板和frp服务器安装好了之后云服务器就准备好了,接下来就需要设置本地服务器了

软路由(Openwrt)设置

因为我使用了软路由,软路由里面有frp内网穿透的客户端,所以我不用在本地服务器上安装frp客户端,直接在软路由上设置好了就可以了

打开软路由的控制台,找到【服务】,找到【frp内网穿透】,点击进入

3.png

进入之后启用frp内网穿透服务,然后填写相关信息,这些信息都是在安装frp服务端的时候填写保存的

4.png

服务器信息填写完成后,点击下面的服务列表下的【添加】按钮开始添加穿透服务,开启状态为开启,frp协议类型选http,域名类型选自定义域名,自定义域名填写网站的域名,内网主机地址选择本地服务器的地址,端口选80,默认http协议端口都是80端口,服务备注随便填写,自己可以区分那个服务是干什么的就可以了,填写完成后点击【保存&应用】

5.png

本地服务器配置

本地服务器我也使用了宝塔面板,主要是方便操作简单,对我这种懒的人和刚接触网站搭建的小白来说很好用,按照方法也是和云端服务器一样,去官网复制对应系统的一键按照命令粘贴执行即可

本地服务器因为是要搭建网站的,所以进入宝塔面板之后需要安装完整的网站环境套件,就安装推荐的即可

6.png

安装完成后开始搭建网站,具体步骤这里不教学,如有疑问的同学可以文章下面留言

建站完成后,使用域名+端口的方式访问看看能不能正常访问到,看看穿透有没有问题,如果没有问题那么接下来就是开启端口复用和ssl了

80和443端口复用

进入云服务器的宝塔面板,点击【网站】,新建一个静态的网站,域名需要填写和刚刚穿透的那个域名一样的,本地服务器上的网站域名也是穿透那个域名,就是说静态网站的域名,frp内网穿透里面的穿透服务里面的域名和本地服务器上的网站域名是同一个域名

7.png

创建完成后点击右边的【设置】

8.png

点击【反向代理】,【添加代理】

9.png

代理名称随便填写一个,目标URL就填写http://127.0.0.1:frp的http穿透端口,填写完成后点击【保存】,这样端口复用就配置好了,可以使用域名不加端口的方式试试看能不能访问到网站,如果可以访问就成功了,接下来就是开启ssl了。

10.png

开启ssl

开启ssl服务很简单,只需要在云端服务器上操作即可

打开云端服务器的宝塔面板,点击【网站】,点击刚刚建的静态网站的【设置】

11.png

点击【SSL】,点击【Let's Encrypt】,选择需要申请的域名,我的网站是绑定了两个域名,所以两个都选择了,然后点击【申请】

12.png

申请成功后点击顶部的【强制启用https】开关即可

13.png

这时候清除浏览器缓存,从新访问网站就发现已经从http协议改成了https协议了

注意

如果你的网址使用的是和我一样的Typecho矿建搭建的,那么需要到网站根目录下编辑config.inc.php这个文件,在最下面添加一行

define('__TYPECHO_SECURE__',true);

如果不添加你会发现可以正常访问网站,但是进入不了网站后台

启用ipv6

nnds-go设置

这里我们需要用到ddns-go来进行动态解析

ddns-go地址:https://github.com/jeessy2/ddns-go

在本地服务器上下载对应自己系统的ddns-go,我使用的服务器系统是龙蜥,命令和Centos一样的,我使用的版本是ddns-go_6.1.2_linux_i386.tar.gz,下载命令是

wget https://github.com/jeessy2/ddns-go/releases/download/v6.1.2/ddns-go_6.1.2_linux_i386.tar.gz

下载完成后解压

tar -zxvf ddns-go_6.1.2_linux_i386.tar.gz

解压完成后运行安装

./ddns-go -s install

运行起来之后浏览器打开本地服务器ip地址:9876进入设置界面

14.png

去自己域名解析厂商获取令牌,填写到token里面去,然后到下面的ipv6那个地方填写需要解析的域名保存即可

15.png

16.png

软路由防火墙设置

域名解析完成后,需要到软路由openwrt上设置防火墙放行

打开软路由控制面板,点击【网络】,点击【防火墙】,点击【通信规则】

17.png

滑倒下面,打开路由器端口那个地方添加新规则

18.png

然后往上看,找到我们刚刚添加的规则,点击修改

19.png

地址限制改为仅IPV6,协议改成任何,匹配ICMP类型改成any,源区域改成任何区域,源MAC地址改成所有(清空即为所有),源地址改为所有,源端口改所有,目标区域改lan,目标地址改所有,目标端口所有,动作接受,其他的不变,点击【保存&应用】

20.png

如果以上操作都没问题的话这里就可以看到网站支持ipv6了

检测网址:https://ipw.cn/ipv6webcheck/?site=ipw.cn

21.png

开启ipv6的ssl

因为ipv6是直接访问的本地服务器,所以我们需要到本地服务器去开启ssl,开启方法和云端的一样,只是不用打开强制https

22.png


二维码

发表评论