Linux怎么实现内网穿透_Linux安装Frp客户端与服务端配置【方法】
技术百科
裘德小鎮的故事
发布时间:2026-01-01
浏览: 次 Frp内网穿透有四种部署方式:一、手动部署官方二进制包;二、通过systemd管理服务实现开机自启;三、使用Docker容器化部署;四、借助APT/YUM脚本自动化安装。
如果您希望将本地运行的 Linux 服务(如 Web 服务、SSH 或数据库)暴露给公网访问,但又没有固定公网 IP 或无法配置路由器端口映射,则需借助内网穿透工具。Frp 是一款高性能、开源的反向代理应用,支持 TCP、UDP、HTTP、HTTPS 等协议转发。以下是实现该目标的多种方法:
一、使用 Frp 官方二进制包手动部署
此方法适用于所有主流 Linux 发行版(如 Ubuntu、CentOS、Debian),无需编译,直接下载预编译二进制文件并配置即可运行。服务端与客户端均以轻量级进程方式启动,资源占用低且稳定。
1、在服务端(具备公网 IP 或云服务器)执行:wget https://github.com/fatedier/frp/releases/download/v0.56.0/frp_0.56.0_linux_amd64.tar.gz。
2、解压并进入目录:tar -xzf frp_0.56.0_linux_amd64.tar.gz && cd frp_0.56.0_linux_amd64。
3、编辑服务端配置文件 frps.ini:nano frps.ini,填入监听端口与认证密钥,例如:
bind_port = 7000
token = my_secure_token
4、启动服务端:nohup ./frps -c frps.ini > frps.log 2>&1 &。
5、在内网 Linux 客户端重复下载解压步骤,编辑 frpc.ini,指定服务端地址、端口、token,并添加需穿透的服务,例如:
se
rver_addr = your_public_ip
server_port = 7000
token = my_secure_token
[ssh]
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = 6000
6、启动客户端:nohup ./frpc -c frpc.ini > frpc.log 2>&1 &。
二、通过 systemd 管理 Frp 服务(推荐长期运行)
此方法将 Frp 客户端或服务端注册为系统服务,支持开机自启、日志追踪与状态管理,避免因终端关闭或会话中断导致进程退出。
1、创建服务文件:sudo nano /etc/systemd/system/frpc.service(客户端)或 /etc/systemd/system/frps.service(服务端)。
2、填入标准 Unit 配置,以客户端为例:
[Unit]
Description=Frp Client Service
After=network.target
[Service]
Type=simple
User=root
WorkingDirectory=/opt/frp
ExecStart=/opt/frp/frpc -c /opt/frp/frpc.ini
Restart=on-failure
RestartSec=10
[Install]
WantedBy=multi-user.target
3、重载 systemd 配置:sudo systemctl daemon-reload。
4、启用并启动服务:sudo systemctl enable --now frpc。
5、查看运行状态:sudo systemctl status frpc。
三、使用 Docker 快速部署 Frp 服务端与客户端
此方法适合已部署 Docker 的环境,通过官方镜像或社区维护镜像一键拉起服务,隔离性好,配置与二进制方式一致,但无需手动处理依赖和路径。
1、拉取 Frp 官方镜像:docker pull snowdreamtech/frp。
2、运行服务端容器:docker run -d --name frps --restart=always -p 7000:7000 -p 6000:6000 -v $(pwd)/frps.ini:/etc/frp/frps.ini snowdreamtech/frp frps -c /etc/frp/frps.ini。
3、准备客户端配置 frpc.ini 并挂载运行:docker run -d --name frpc --restart=always -v $(pwd)/frpc.ini:/etc/frp/frpc.ini snowdreamtech/frp frpc -c /etc/frp/frpc.ini。
4、确认容器运行状态:docker ps | grep frp。
5、检查日志输出:docker logs frpc 或 docker logs frps。
四、使用 APT/YUM 包管理器配合脚本自动化安装(仅限部分发行版)
此方法适用于希望简化首次部署流程的用户,利用社区提供的安装脚本自动完成下载、解压、配置生成与服务注册,适合批量部署场景。
1、下载并执行一键安装脚本(以 Frp 官方推荐社区脚本为例):curl -L https://raw.githubusercontent.com/mojocn/frp-install/master/install.sh | sudo bash。
2、根据提示选择安装模式:输入 1 安装服务端,输入 2 安装客户端。
3、输入绑定端口(如 7000)、认证 token 及需映射的本地服务参数。
4、脚本自动创建配置文件、systemd 服务单元并启动服务。
5、验证安装结果:sudo systemctl is-active frpc 应返回 active。
# ai
# 工具
# linux
# centos
# 端口
# ubuntu
# docker
# curl
# 路由器
# git
# github
# bash
# 云服务
相关栏目:
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
AI推广<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
SEO优化<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
技术百科<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
谷歌推广<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
百度推广<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
网络营销<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
案例网站<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
精选文章<?muma echo $count; ?>
】
相关推荐
- windows系统如何安装cab更新补丁_wind
- mac怎么打开终端_MAC终端Terminal使用
- Windows 11如何开启文件夹加密(EFS)_
- Win11怎么设置虚拟桌面 Win11新建多桌面切
- 如何用正则表达式精确匹配“start”到“end”
- Python模块的__name__属性如何由导入方
- 如何使用Golang实现路由分组管理_Golang
- C#如何在一个XML文件中查找并替换文本内容
- Win11怎么开启专注模式_Windows11时钟
- 如何在 Go 中比较自定义的数组类型(如 [20]
- Win11怎么关闭搜索历史_Win11清除设备上的
- Win11如何更改用户账户文件夹名称 Win11修
- 如何用::实现单例模式_php静态方法与作用域操作
- 如何使用Golang管理跨项目依赖_Golang多
- 新手学PHP架构总混淆概念咋办_重点梳理【教程】
- 如何在 Python 测试中动态配置 @backo
- PHP主流架构如何处理会话管理_Session与C
- Windows10系统服务优化指南_Win10禁用
- 如何在Golang中实现并发消息队列消费者_Gol
- php增删改查在php8里有什么变化_新特性对cu
- Win10怎么设置开机密码_Windows10账户
- Windows10电脑怎么设置虚拟内存_Win10
- Django密码修改后会话失效的解决方案
- Python装饰器复用技巧_通用能力解析【教程】
- Mac怎么开启“任何来源”_Mac安装未签名应用的
- Windows系统时间服务错误_W32Time服务
- PythonPandas数据分析教程_数据清洗与处
- 如何在Golang中捕获结构体方法错误_Golan
- php能控制zigbee模块吗_php通过串口与c
- Win10怎么卸载迅雷_Win10彻底卸载迅雷方法
- Win11怎么关闭键盘按键音_Win11禁用打字声
- Go语言中slice追加操作的底层共享机制解析
- Mac如何查看电池健康百分比_Mac系统信息电源检
- Linux怎么禁止Root用户远程登录_Linux
- php本地部署后数据库连接报错_1045acces
- PHP的Workerman对架构扩展有啥帮助_应用
- Win11怎么关闭通知消息_屏蔽Windows 1
- Win10怎样清理C盘爱奇艺缓存_Win10清理爱
- 如何将文本文件中的竖排字符串转换为横排字符串
- Win11怎么关闭防火墙通知_屏蔽Win11安全中
- Win11怎么设置系统还原_Windows11系统
- 微信短链接怎么还原php_用浏览器开发者工具抓包获
- Win10系统字体模糊怎么办_Windows10高
- 手机php怎么转mp4_手机端php文件转mp4a
- Win10如何优化内存使用_Win10内存优化技巧
- Python对象比较排序规则_集合使用说明【指导】
- Mac怎么设置鼠标滚动速度_Mac鼠标设置详细参数
- php查询数据怎么分组_groupby分组查询配合
- php接口返回数据乱码怎么办_php接口调试编码问
- Win11 explorer.exe频繁崩溃_修复

QQ客服