Administrator
Published on 2025-07-07 / 12 Visits
0
0

FRP内网穿透

搭配云电脑使用,可以实现云电脑自己挂自己永不休眠。

移动云电脑(连续24小时未连接客户端后关机)、天翼云电脑(连续1小时未连接客户端后休眠)均测试通过。以下统一简称为云电脑。

云电脑,没有公网IP,一般为NAT4,个别的有NAT3。

因为云电脑官方客户端只允许一台设备连接,因此在云电脑内部登录客户端后,想从外面连接只能借助第三方远程工具,目前免费的网易UU远程可以使用,但是存在bug,有一定的几率导致其他远程连接无法控制鼠标。

Windows最好用的最轻量的远程工具还是自家的远程桌面连接(RDP)。

一、tailscale组内网连接

参考:https://huhuhu.app/archives/tailscalezu-jian-da-nei-wang

组完内网直接连接即可。

二、FRP直接公网连接

与tailscale相比,不需要安装软件,不需要加入内网,对于部分限制严格的场景更方便。

FRP官方文档:https://gofrp.org/zh-cn/

找一台有公网IP的服务器,省钱的话NAT也是可以的,目前的跨网环境建议使用BGP

服务端安装

以Linux系统为例,从 GitHub 的 Release 页面中下载最新版本的客户端和服务器二进制文件,根据你的机器选择合适的文件下载。

为了保持目录干净,先创建一个frp文件夹

mkdir frp

下载

wget https://github.com/fatedier/frp/releases/download/v0.63.0/frp_0.63.0_linux_amd64.tar.gz

如果机器访问GitHub比较慢也可以通过

解压

tar -zxvf frp_0.63.0_linux_amd64.tar.gz

编辑配置文件

cd frp_0.63.0_linux_amd64 && nano frps.toml

默认有一行bindPort = 7000,NAT机器自行更改端口。

此时虽然可以直接使用,但是被有心人扫到你的机器,“他”也可以随意使用你的IP作为FRP的服务端,因此,我们选择加个验证

目前 frpc 和 frps 之间支持两种身份验证方式,tokenoidc,默认为 token。这些认证方式允许您验证客户端与服务端之间的通信,并确保只有授权用户能够建立连接。

oidc相对复杂,需要的大佬按照 官方文档 部署即可,我们使用token 即可。abc 自行替换

# frps.toml
bindPort = 7000
auth.token = "abc"

使用 systemd 实现开机自启

systemd一般系统都默认带了,如果没有,可以通过以下命令安装

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

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

使用文本编辑器在 /etc/systemd/system 目录下创建一个 frps.service 文件,用于配置 frps 服务。

nano /etc/systemd/system/frps.service

写入内容

[Unit]
# 服务名称,可自定义
Description = frp server
After = network.target syslog.target
Wants = network.target

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

[Install]
WantedBy = multi-user.target

使用 systemd 命令管理 frps 服务

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

设置 frps 开机自启动

systemctl enable frps

客户端安装

Windows可以选择官方的,这里推荐一个第三方的:https://github.com/koho/frpmgr

附上客户端的配置文件

通过设置 transport.useEncryption = true,将 frpc 与 frps 之间的通信内容加密传输,将会有效防止传输内容被截取。

如果传输的报文长度较长,通过设置 transport.useCompression = true 对传输内容进行压缩,可以有效减小 frpc 与 frps 之间的网络流量,加快流量转发速度,但是会额外消耗一些 CPU 资源。

serverAddr = "x.x.x.x"
serverPort = 7000
auth.token = "abc"

[[proxies]]
name = "XX云电脑"
type = "tcp"
localIP = "127.0.0.1"
localPort = 3389
remotePort = 3389
transport.useEncryption = true
transport.useCompression = true


Comment