• frp内网穿透
    # 内网穿透frp技术部署 ## 一、理解FRP ### 什么是内网穿透? FRP 是 Fast Reverse Proxy(快速反向代理)的缩写,是一个高性能的反向代理应用,主要用于实现内网穿透。 ### FRP 的工作原理 FRP 采用 客户端-服务端 (Client-Server) 模型,由两部分组成: - frps (Server): 部署在拥有公网 IP 的云服务器上(比如阿里云、腾讯云、AWS 等 VPS)。它负责在公网“占位”,接收来自外部的连接。 - frpc (Client): 部署在你想要暴露的内网机器上(比如你的树莓派、家用电脑、NAS)。它会主动向 frps 发起连接,保持一条加密的通道。 流程: 外部用户访问云服务器 (frps) -> frps 通过隧道将流量转发给内网机器 (frpc) -> 内网机器处理请求并原路返回数据。 ![流程图](/media/uploads/articles_image/202601/20260126_171231_屏幕截图_2026-01-26_165847.png) ## 二、文件结构分析 首先是frp官网地址:[点击跳转](https://gofrp.org/zh-cn/) ```url https://gofrp.org/zh-cn/ ``` ### 1.服务端frps.toml文件 **服务端**的核心配置文件,文件中定义了 bindPort(默认 7000)。服务端启动后,会占用服务器的这个端口,持续监听来自客户端(frpc)的连接请求。这是构建隧道的“地基”。 ```frps.toml bindPort = 7000 # 身份验证 (必须与 frps.toml 一致) auth.method = "token" auth.token = "这里填一个复杂的密码123456" ``` ### 2.客户端frpc.toml文件 frpc主要做的事情为,向服务器地址发起连接请求,提交认证,认证通过后建立长连接,然后注册服务例如把本地的22端口映射到服务器的8000端口. 如果客户端有多个端口需要映射,只需要增加一个 `` 就可以了 ```frpc.toml serverAddr = "8.8.8.001" serverPort = 7000 # 身份验证 (必须与 frps.toml 一致) auth.method = "token" auth.token = "这里填那个复杂的密码123456" name = "testhsm-wshsmtcp" type = "tcp" localIP = "127.0.0.1" 需要更改 localPort = 22 remotePort = 8000 ``` - serverAddr:服务器的地址 - serverPort:frp的管理端口,用来维持连接 - localIP:一般是本机回环地址(如果frpc不在本机的话,这个地址需要更改) - localPort:这是客户端上 SSH 服务实际监听的端口。 - remotePort:数据的入口,也是访问时对外开放的大门 ## 三、部署 ### 1.服务端 用tmux启用后台会话 ```bash tmux new -s frps # 在tmux窗口运行服务端程序 ./frps -c ./frps.toml ``` 将会话切到后台:`Ctrl + b` + `d` ### 2.客户端 客户端如果不需要长期运行可以直接和服务端一样一行命令启动,如果需要自启动配置的话可以看下面。 #### 自启动配置 如果需要在后台长期运行,建议结合其他工具,如 `systemd`。 ##### 1.配置systemd开机自启服务 创建文件: ```bash sudo vim /etc/systemd/system/frpc.service ``` 在文件中添加以下内容: ```bash [Unit] Description=Frp Client After=network.target [Service] User=orangepi ExecStart=/home/orangepi/.frp/frpc -c /home/orangepi/.frp/frpc.toml Restart=always RestartSec=5s [Install] WantedBy=multi-user.target ``` ##### 2.启动运行 1.刷新配置 ```bash sudo systemctl daemon-reload ``` 2.开启开机自启 ```bash sudo systemctl enable frpc ``` 3.立即测试启动 ```bash sudo systemctl start frpc ``` 4.重启测试 ```bash sudo reboot ``` ## 四、补充问题解决 如果遇到tmux没有启动,可以尝试产看日志,看服务是否报错 ```bash sudo systemctl status frpc ```
    9 666 1870 2026-01-26