無.Flac's Blog

無.Flac

FRP内网穿透 | Ubuntu

154
2024-02-05

⭐️ 家里有笔记本长期闲置,配置为i5-8250U/CPU 4核@1.60GHz / 120SSD+1THDD,在WIN系统下轻度使用性能不足,平时大部分的使用场景均由MacBookPro完成,既然吃灰了,为何不利用起来呢?

⭐️ 手头有一台马上过期的腾讯云服务器,做FTPS中继只能通过IP+端口访问,白瞎了我手头的域名,刚好前几天刚入手的小内存香港服务器,用来FRP技术穿透刚刚好。

⭐️ 本篇文章以香港2C1G服务器实例,基于 Ubuntu Server 安装。



FRP简介

FRP(Fast Reverse Proxy)是一个开源的高性能反向代理工具,它可以帮助用户在内网中的计算机或服务通过 NAT 或防火墙向外部网络提供服务。FRP提供了TCP、UDP、HTTP和HTTPS等多种协议的反向代理功能,支持将外部流量转发到内部网络的指定服务上。

FRP的工作原理是在外网服务器和内网设备之间建立一条加密通道,外网服务器作为代理服务器,内网设备作为客户端,通过连接服务器建立通信,实现对内网设备的访问。FRP使用了类似SSH隧道的技术,通过建立一个可信的第三方服务器,来实现对内网设备的访问。

易于配置: FRP提供了简单易懂的配置文件,用户可以根据自己的需求进行配置。

安全性: FRP支持加密通信,可以保护数据的安全性。

高性能: FRP采用了高性能的反向代理引擎,可以实现快速的数据传输。

多协议支持: FRP支持TCP、UDP、HTTP和HTTPS等多种协议的反向代理功能,可以满足不同场景的需求。


1、安装系统

> 下载 Ubuntu Server

> 制作启动镜像

  • 启动镜像可用U盘制作,可使用老毛桃winpe ,深度U盘制作工具

> 安装系统

  • 网上能找到教程,我就不在这赘述咯~


2、更新服务器

> 可参见上一篇文章:<更新与安装 | Ubuntu>


3、安装FRP

> 下载FRP文件:<GitHub : FRP>

> 官方使用文档:<GoFRP : 中文>

> 解压FRP压缩包

  • 内含:FRPS / FPRC可执行文件

  • 内含:frps.toml / frpc.toml

  • S是服务器配置文件 / C是本地需穿透的主机配置文件

image-kscr.png▲图1 FPR文件解压目录

> 配置FRPS服务端文件

  • 打开frps.toml | 可用WIN/MAC记事本打开哦

  • 服务器Port端口及token可修改,dashboard除IP外都可修改

# frps.toml
bindPort = 5443 # 服务器监听端口
kcpBindPort = 5443 # 服务端监听KCP协议端口
auth.token = "abc" # 设置密码以验证端到端安全通信

# dashboard 管理页面
webServer.port = 9999 # 可以通过浏览器查看frp的状态信息
webServer.addr = "0.0.0.0" # 允许IP访问
# dashboard 用户名密码,可选,默认为空
webServer.user = "admin"
webServer.password = "admin" 

> 配置FPRC主机端文件

  • 打开frpc.toml | 可用WIN/MAC记事本打开哦

  • addr/port/token需与服务端保持一致

  • proxies设置格式可复制,除port端口外保持统一

# frpc.toml
serverAddr = "xx.xx.xx.xx" # 服务器IP地址
serverPort = 5443 # 服务器监听端口
auth.token = "abc" # 设置密码以验证端到端安全通信

[[proxies]]
name = "ssh" # 项目名称
type = "tcp" # 一般默认即可
localIP = "127.0.0.1" # 本地回源默认即可
localPort = 22 # 本地项目端口
remotePort = 99 # 服务器IP+端口访问

[[proxies]]
name = "status"
type = "tcp"
localIP = "127.0.0.1"
localPort = 6022
remotePort = 6022

[[proxies]]
name = "wflac"
type = "tcp"
localIP = "127.0.0.1"
localPort = 6023
remotePort = 6023

> 上传配置文件

  • 使用FinalShell 或 1Panel 上传配置文件 #一定要记住上传目录位置,后面要用

image-abao.png▲图2 FPRS服务器根文件目录

> 启动服务端frps.toml

sudo -i   #获取管理员权限

cd /root/frps  #进入frpc根目录

chmod +x ./frps #赋予权限以便执行 

./frps -c ./frps.toml  #启动frps可执行程序

▲图3 FPRS服务器启动成功

> 验证frps服务端

  • 输入密码登录图4,显示面板后,服务端已搭建完毕图5

  • 如果显示错误,请自行服务器放行端口

image-bghf.png▲图4 FPRS服务端启动成功

▲图5 FPRS服务面板登录成功

> 启动内网端frpc.toml

  • 使用FinalShell 或 1Panel 上传配置文件

sudo -i #获取管理员权限

cd /root/frpc  #进入frps根目录

chmod +x ./frpc #赋予权限以便执行 

./frpc -c ./frpc.toml  #启动frpc可执行程序

> 开始享用吧!


4、实例站点

> 無.Flac’s HK

  • 基于FRP技术的Halo2博客网站

> 無.Flac’s Status

  • 基于FRP技术的Uptime Kuma的网站状态页

image-nbyk.png▲图6 Uptime Kuma状态页


5、安装Systemd

> Systemd一键管理

# 使用 yum 安装 systemd(CentOS/RHEL)
yum install systemd

# 使用 apt 安装 systemd(Debian/Ubuntu)
apt install systemd

> 创建 frps.service 文件

  • 创建并写入 frps.service 文件,用于配置 frps 服务。

sudo vim /etc/systemd/system/frps.service
[Unit]
# 服务名称,可自定义
Description = frp server
After = network.target syslog.target
Wants = network.target

[Service]
Type = simple
# 启动frps的命令,需修改为您的frps的安装路径
ExecStart = /path/to/frps -c /path/to/frps.toml

[Install]
WantedBy = multi-user.target

> 使用命令管理 frps 服务

# 启动frp
sudo systemctl start frps
# 停止frp
sudo systemctl stop frps
# 重启frp
sudo systemctl restart frps
# 查看frp状态
sudo systemctl status frps

> 设置 frps 开机自启动

sudo systemctl enable frps

5、答疑解惑

> 安装的时候会出现很多状况,可参询Github官网问题解答页

> 也可留言问我,我将尽可能解答你的问题

  • 4