frp内网穿透
适用场景
远程访问家中的内网设备
设备准备
- 公网服务器
- 控制设备
- 被控设备
搭建过程
下载frp安装包
目前最新版:v0.61.0(github.com/fatedier/fr…
amd架构:
Linux:frp_0.61.0_linux_amd64.tar.gz
Macos(M1):frp_0.61.0_darwin_amd64.tar.gz
Windows:frp_0.61.0_windows_amd64.zip
服务端服务搭建
下载frp
# 1. 下载(scp传输或者wget下载)
wget https://github.com/fatedier/frp/releases/download/v0.61.0/frp_0.61.0_linux_amd64.tar.gz
# 2. 解压frp
tar -zxvf frp_0.61.0_linux_amd64.tar.gz
# 3. 重命名
mv frp_0.61.0_linux_amd64 frp
# 4. 移动到系统执行目录
mv frp /usr/bin/frp
# rp_0.61.0_linux_amd64文件夹内容解析 start
# frpc 客户端程序
# frpc.toml 客户端程序
# frps 服务端程序(服务端搭建使用)
# frps.toml 服务端配置文件
# License 许可证
# 文件夹内容解析 end
修改frps.toml配置文件
# 客户端需要访问的端口,可以随意修改
bindPort = 7000
# 授权方式
auth.method = "token"
# 授权码,请改成更复杂的
auth.token = "authToken"
# dashboard 服务配置,"0.0.0.0" 为本机所有 ip
webServer.addr = "0.0.0.0"
# dashboard 配置的端口,可以随意修改
webServer.port = 7500
# dashboard 配置的用户名和密码,修改成自己的
webServer.user = "user"
webServer.password = "password"
使用systemd管理frps
- 创建frps.service文件:
vim /etc/systemd/system/frps.service
[Unit]
# 服务名称,可自定义
Description = frp server
After = network.target syslog.target
Wants = network.target
[Service]
Type = simple
# 启动frps的命令,需修改为您的frps的安装路径
ExecStart = /usr/bin/frp/frps -c /usr/bin/frp/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进程方式
# 查找PID
ps -ef | grep frps
# 杀掉frps进程
kill -SIGTERM PID
访问管理段
被控设备、控制设备
下载frp
修改frpc.toml配置文件
被控设备
# 服务器 ip 与端口配置
serverAddr = "ServerIP"
serverPort = 7000
# 服务器 token 配置
auth.method = "token"
auth.token = "authToken"
## 配置本地的端口接听,name对于访问者来说就是serverName
## Windows桌面远程访问配置
[[proxies]]
name = "stcp-home"
type = "stcp"
secretKey = "secretKey"
# 本地需要访问的 ip 与端口
localIP = "127.0.0.1"
localPort = 3389
## 虚拟机远程ssh访问配置
[[proxies]]
name = "stcp-centos1"
type = "stcp"
secretKey = "secretKey"
# 本地需要访问的 ip 与端口
localIP = "127.0.0.1"
localPort = 22
控制设备
# 服务器 ip 与端口配置
serverAddr = "ServerIP"
serverPort = 7000
# 服务器 token 配置
auth.method = "token"
auth.token = "authToken"
## windows远程桌面访问者的配置,name不可一致
[[visitors]]
name = "stcp-mac"
type = "stcp"
serverName = "stcp-home"
secretKey = "secretKey"
bindAddr = "127.0.0.1"
bindPort = 6000
## 虚拟机ssh访问者的配置
[[visitors]]
name = "stcp-mac1"
type = "stcp"
serverName = "stcp-centos1"
secretKey = "secretKey"
bindAddr = "127.0.0.1"
bindPort = 6001
配置启停脚本
# 在frpc.exe同级目录下
@echo off
echo Starting frpc service...
:: 检查是否已有运行中的 frpc 进程
tasklist /FI "IMAGENAME eq frpc.exe" | find /I "frpc.exe" >nul
if %ERRORLEVEL% EQU 0 (
echo frpc is already running.
pause
exit
)
:: 启动 frpc 程序并让它以后台进程运行
start /b frpc -c frpc.toml
echo frpc service started and running in the background.
pause
@echo off
echo Stopping frpc service...
:: 查找运行中的 frpc 进程并关闭
tasklist /FI "IMAGENAME eq frpc.exe" | find /I "frpc.exe" >nul
if %ERRORLEVEL% EQU 0 (
echo Found frpc process. Stopping...
taskkill /IM frpc.exe /F
echo frpc service stopped.
) else (
echo No running frpc process found.
)
pause
Windows11设置
- 开启远程桌面:系统-远程桌面-开启
- 开启OpenSSH服务(SSH需要):系统-可选功能-添加可选功能(OpenSSH 服务器)-重启系统
远程连接
远程桌面
127.0.0.1:6000
远程SSH
127.0.0.1:6001