个人主页艾莉丝努力练剑❄专栏传送门《C语言》《数据结构与算法》《C/C干货分享学习过程记录》《Linux操作系统编程详解》《笔试/面试常见算法从基础到进阶》《Python干货分享》⭐️为天地立心为生民立命为往圣继绝学为万世开太平 艾莉丝的简介文章目录1 ~ 核心架构与基本原理1.1 产品定位1.2 C/S 架构模型1.3 三类端口角色区分2 ~ 环境准备2.1 硬件与网络前提2.2 软件包获取与分发3 ~ 服务端frps部署与配置3.1 核心配置文件 frps.toml3.2 启动命令3.3 运行状态验证4 ~ 客户端frpc部署与配置4.1 配置文件 frpc.toml4.2 配置字段释义4.3 启动与状态5 ~ 实战场景验证5.1 SSH 远程登录穿透5.2 Nginx Web 服务穿透6 ~后台守护与持久化运行6.1 nohup 后台启动方案6.2 参数释义结尾1 ~ 核心架构与基本原理1.1 产品定位frp (fast reverse proxy) 是 Go 语言实现的开源反向代理工具核心能力为内网穿透可将无公网 IP 的内网主机服务暴露到公网环境。1.2 C/S 架构模型服务端 frps部署在具备公网 IP 的云服务器上负责接收公网用户请求、与内网客户端建立持久连接并完成流量转发客户端 frpc部署在内网主机上主动与公网服务端建立连接将收到的转发流量投递到本地目标服务1.3 三类端口角色区分控制端口bindPortfrps 监听用于 frpc 与 frps 建立控制通道、传递代理配置与保活心跳远程端口remotePortfrps 监听面向公网用户的服务入口每一条代理规则对应一个独立远程端口本地端口localPort内网实际业务服务监听的端口由 frpc 直接对接2 ~ 环境准备2.1 硬件与网络前提公网侧具备公网 IP 的 Linux 云服务器安全组 / 防火墙需放行所有用到的端口内网侧Linux 主机虚拟机 / 物理机均可可正常访问公网能与公网服务器建立 TCP 连接虚拟机网络建议使用 NAT 模式保证内网主机可通过宿主机访问公网2.2 软件包获取与分发官方仓库fatedier/frp版本匹配必须与主机 CPU 架构严格对应示例使用frp_0.58.1_linux_amd64.tar.gz部署方式将同版本安装包分别上传到公云服务器与内网客户端解压后包含可执行文件与配置模板3 ~ 服务端frps部署与配置3.1 核心配置文件 frps.toml仅需配置控制端口示例如下# 服务端控制通道监听端口bindPort8888程序默认值为 7000可自定义修改配置后必须显式指定配置文件启动才会生效。3.2 启动命令前台调试启动./frps -c ./frps.toml关键注意必须携带-c参数指定配置文件否则程序将加载内置默认参数仍使用 7000 端口3.3 运行状态验证使用netstat -nltp查看系统端口监听状态确认 bindPort 处于 LISTEN 状态对应进程名为 frps。4 ~ 客户端frpc部署与配置4.1 配置文件 frpc.toml由服务端连接配置 代理规则数组组成原生支持多代理并行配置# 公网服务端 IP 地址serverAddr8.137.19.140# 对应服务端 bindPort 端口serverPort8888# 代理规则 1SSH 远程登录[[proxies]]namessh-servicetypetcplocalIP127.0.0.1localPort22remotePort8081# 代理规则 2Nginx Web 服务[[proxies]]namehttp-servicetypetcplocalIP127.0.0.1localPort80remotePort80824.2 配置字段释义name代理唯一标识同客户端内不可重复type代理协议类型TCP 代理可覆盖 SSH、HTTP 等所有基于 TCP 的服务localIP localPort内网本地服务的监听地址与端口remotePort公网服务端暴露的访问端口公网用户访问该端口即可穿透到内网对应服务4.3 启动与状态前台调试启动./frpc -c ./frpc.toml连接成功后服务端会自动监听对应 remotePort单 frps 进程可承载多条代理、多个远程端口。5 ~ 实战场景验证5.1 SSH 远程登录穿透效果访问公网IP:8081等价于直接访问内网主机的 22 端口验证方式使用 SSH 客户端如 Xshell连接公网 IP 8081 端口可成功登录内网主机并执行命令5.2 Nginx Web 服务穿透前置条件内网主机安装并启动 Nginx默认监听 80 端口效果浏览器访问http://公网IP:8082可打开内网 Nginx 默认页面确认方式修改内网 Nginx 首页内容公网访问同步更新证明流量穿透链路生效6 ~后台守护与持久化运行6.1 nohup 后台启动方案服务端后台启动nohup./frps-c./frps.toml/dev/null客户端后台启动nohup./frpc-c./frpc.toml/dev/null6.2 参数释义nohup忽略终端挂断信号终端关闭后进程继续后台运行将进程放入后台执行释放终端交互/dev/null将标准输出与标准错误全部重定向到空设备丢弃所有日志输出生产环境建议重定向到日志文件便于排错结尾uu们本文的内容到这里就全部结束了艾莉丝在这里再次感谢您的阅读艾莉丝努力练剑C/C Linux 底层探索者 | 一个正在努力练剑的技术博主【关注】跟随我一起深耕技术领域见证每一次成长。❤️【点赞】让优质内容被更多人看见让知识传递更有力量。⭐【收藏】把核心知识点存好在需要时随时查、随时用。【评论】分享你的经验或疑问评论区一起交流避坑不要忘记给博主“一键四连”哦“今日练剑达成”“技术之路难免有困惑但同行的人会让前进更有方向。”结语希望对学习Linux相关内容的uu有所帮助不要忘记给博主“一键四连”哦往期回顾【Linux网络·加餐】HTTPS协议从密码学基础到安全机制博主在这里放了一只小狗大家看完了摸摸小狗放松一下吧૮₍ ˶ ˊ ᴥ ˋ˶₎ა