本文最后更新于 2025-04-15,文章内容距今已超过七天,可能已经过时。

由于我并没有公网IP地址又需要在外面远程运维局域网下的机器,于是决定使用FRP对内网的服务进行穿透,使得我可以通过部署在公网的云服务器访问到局域网下的机器,满足个人的运维需求。

我的云服务器已经有frp的服务在运行了。

本页内容未经允许禁止转载!

网络活动请务必遵守法律法规!!!

准备工作

  1. 一台具有公网访问能力的服务器,我的是一台云服务器,带宽不能太差;

  2. 最好有一个域名,没有也可以;

步骤一:下载frp包并上传到服务器

我的服务运行的虚拟机使用的是LinuxRocky 9.5,服务器的CPU为x64的架构。

第一步前往GitHub下载对应的安装包,下载链接:

https://github.com/fatedier/frp/releases

选择适合我虚拟机架构的release包进行下载,解压选中frpc和frpc.toml文件:

github下载.png

编辑frpc.toml,根据frp服务端配置需要的服务,以下是实示例:

serverAddr = "IP地址或域名"
serverPort = 7000
auth.token = "访问密钥"
vhostHTTPSPort = 8700  # 转发HTTPS流量到云服务器的8700端口
loginFailExit = false
 
[[proxies]]
name = "web"
type = "http"
localPort = 80
customDomains = ["域名"]
 
 
[[proxies]]
name = "samba"
type = "tcp"
localIP = "127.0.0.1"
localPort = 445
remotePort = 4450
 
[[proxies]]
name = "ssh"
type = "tcp"
localIP = "127.0.0.1"
localPort = 22
remotePort = 6000
 

SSH登录到需要内网穿透的服务器,进入/usr/local文件夹下,创建frp文件夹,并赋予其权限,随后进入文件夹:

cd /user/local
mkdir ./frp
chmod -R 777 ./frp
cd ./frp

将选中的frpc和编辑好的frpc.toml放入frp文件夹。

步骤二:启用frpc,判断是否正常运行,并配置开机自启动服务

进入frp目录下,开启frpc服务:

./frpc -c ./frpc.toml

判断是否穿透成功,可以通过尝试公网访问内网服务测试,也可以通过查看命令行判断,示例:

2025-04-15 20:28:17.256 [I] [sub/root.go:142] start frpc service for config file [./frpc.toml]
2025-04-15 20:28:17.257 [I] [client/service.go:295] try to connect to server...
2025-04-15 20:28:17.257 [I] [client/service.go:174] admin server listen on 0.0.0.0:7400
2025-04-15 20:28:17.371 [I] [client/service.go:287] [6dd4a64dee8359c6] login to server success, get run id [6dd4a64dee8359c6]
2025-04-15 20:28:17.371 [I] [proxy/proxy_manager.go:173] [6dd4a64dee8359c6] proxy added: [JumpServer]
2025-04-15 20:28:17.399 [I] [client/control.go:168] [6dd4a64dee8359c6] [JumpServer] start proxy success

现在关闭frpc服务,Ctrl+C

做提前准备,安装systemdnano方便后续布置

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

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

创建服务文件frpc.service

sudo nano /etc/systemd/system/frpc.service

进入nano后写入以下数据:

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

[Service]
Type = simple
# 启动frps的命令,需修改为您的frps的安装路径
ExecStart = /usr/local/frp/frpc -c /usr/local/frp/frpc.toml
#Restart=on-success
#RestartSec=180s

[Install]
WantedBy = multi-user.target

Ctrl+O保存,Ctrl+X退出,然后运行以下指令使系统支持服务:

sudo systemctl enable frpc

后续可以通过以下方式控制frpc服务的:

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

查看状态:

成功运行.png