Featured image of post 使用SakuraFrp实现本地站点/SSH内网穿透

使用SakuraFrp实现本地站点/SSH内网穿透

这一切都怪罪于IPv4

老电脑

之前的腾讯云和白嫖的Azure都快要到期了,尽管现在腾讯和阿里对于轻量的服务器都有实惠的价格,想了想不是一个长久之计。
于是把目光转向了家里的老电脑,为啥不直接用他捏,安了个Ubuntu23准备大干一场🎉。安装-更新系统-在终端里执行宝塔安装脚本发现安装速度奇慢疯狂报错,这时才发觉宝塔有一个“主流系统环境兼容列表
可见宝塔根本就没有Ubuntu23.10系统的兼容,索性直接转向拓展更方便的CentOS8 Stream。
安装宝塔后的唯一问题就只剩内网穿透。

内网穿透

内网穿透这方面国内有大大小小的提供商,有只支持我的世界网络穿透的,也有不支持网站穿透的,为了靠谱索性直接用比较知名的Sakura FRP

什么是FRP

Frp 是一个专注于内网穿透的高性能的反向代理应用,支持 TCP、UDP、HTTP、HTTPS 等多种协议,且支持 P2P 通信。可以将内网服务以安全、便捷的方式通过具有公网 IP 节点的中转暴露到公网。
Sakura Frp则是对Frpc客户端进行二次修改,并在2024年初对frpc 远程管理frpc < v0.45.0-sakura-7 的 TUI (文本用户界面)停止使用,并停止对自家Frpc启动器的更新。目前网上有很多基于Frp的sakura内网穿透教程,但3.0的新版启动器的教程几乎找不到,于是写了这个文章。

SakuraFrp 启动器 安装

注意:此教程为基于带有GUI的Cent OS系统,如非Cent OS,在下文第八步骤请参考自己系统Systemd的目录,如不带有GUI或非Linux系统,请直接参阅SakuraFrp 帮助文档


1.安装zstd以解压即将下载的SakuraFrp 启动器:

1
sudo yum -y install zstd

2.在服务器中创建一个存放的文件夹:

1
mkdir -p ~/.config/natfrp/

3.切换到该文件夹

1
cd ~/.config/natfrp/

4.访问https://www.natfrp.com/tunnel/download选择Unix服务,选择Linux64 架构复制下载链接以执行以下命令:

1
curl -LO https://....

5.解压并删除压缩包:

1
2
tar -I zstd -xvf natfrp-service_*.tar.zst
rm natfrp-service_*.tar.zst

6.设置权限:

1
chmod +x frpc natfrp-service

7.在该文件夹内运行隧道管理的web页面:

1
./natfrp-service webui --init

此时浏览器应该会自动打开,但是我们还没配置好,暂时不予理会。

初始化natfrp-service

Systemd 是 Linux 系统工具,用来启动守护进程,不仅是负责启动操作系统,它还接管了后台服务、结束、状态查询,以及日志归档、设备管理、电源管理、定时任务等许多职责。

8.切换至Systemd的系统或第三方软件安装时添加的配置文件目录:

1
cd /usr/lib/systemd/system

9.新建一个natfrp.service文件:

1
nano natfrp.service

10.将以下内容写入到文件中,并保存退出:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
[Unit]
Description=SakuraFrp Launcher
After=network.target

[Service]
Type=simple
TimeoutStopSec=20

Restart=always
RestartSec=5s

ExecStart=%h/.config/natfrp/natfrp-service --daemon

[Install]
WantedBy=default.target

10.在该文件夹中初始化系统拉起启动器进程并确认启动器在运行:

1
2
systemctl --user enable --now natfrp.service
systemctl --user status natfrp.service

在输出内容里看到Activerunning中则代表服务运行成功。
11.回到浏览器,刷新之前自动打开的页面,此时没有意外会正常进入到控制面板中。 至此,服务器的隧道配置基本完成

创建隧道

12.访问:https://www.natfrp.com/tunnel/ ,在服务-隧道列表中单击右上角的创建隧道按钮
13.选择一个自己适合的节点,如需进行站点穿透需选择带有建站标签的节点。以下示例均为TCP隧道为例。 隧道类型:如使用远程SSH请选择TCP隧道
隧道名:可定义,仅为识别隧道所用
本地IP:默认使用127.0.0.1主机环回地址即可
本地端口:如使用远程SSH则填写为22,网站请设置为自定端口并填写,如有多个站点不建议设置为80443
自动HTTPS:如使用HTTPS选择自动
绑定域名:填写网站将要使用的域名
创建HTTP重定向:如果想强制HTTPS,选择第二个永久跳转即可。注意其他位置无需再开启强制https或进行跳转,会死循环。

14.单击创建后将光标移动至节点,则会出现CNAME地址,将网站域名解析到该CNAME地址即可。

启用隧道

15.回到服务器浏览器中的隧道管理的web页面: 双击下面的隧道即可启用,进入日志可查看隧道状态:

SSL配置

Sakura FRP在启用HTTPS隧道时会自动生成一个证书,用于HTTPS访问,但是浏览器会出现证书错误提示,这里进行一个简单粗暴的方法,直接用自己的证书替换生成的.crt.key内容即可。无需对.config内容进行修改等操作,弯道超车🥳
1.切换到/home/用户名/.config/natfrp-service/FrpcWorkingDirectory目录里:

1
cd /home/用户名/.config/natfrp-service/FrpcWorkingDirectory

2.查看该目录里的内容

1
ls

3.此时应该能看到自动生成的证书.pem.key文件,(如果你在创建HTTPS隧道时正确的输入了域名并进行解析)然后对里面的内容删除并替换正确的内容即可

1
nano 域名.pem
1
nano 域名.key

4.回到服务器浏览器中的隧道管理的web页面,双击正在启用的HTTPS隧道进行关闭,再次双击隧道重启即可,系统将会调用你换过的证书,这时访问站点就不会报错了👯

拓展

隧道管理的web页面只能在服务器内网网络中访问,如果人在外面就比较麻烦,但是Sakura可以进行远程管理,在管理页面的设置-高级设置-开启启用远程管理按钮,并设置密码即可。
以后就可以在sakura的用户页面-服务-远程管理 中选择服务器输入密码就可以使用啦~