# frp 内网穿透部署指南 > 2026-08-13 更新。目标:通过云服务器(公网 IP `58.87.87.208`)随时随地访问家里多台机器的 SSH 和 RDP,统一用域名 `hyonglin.top` + 端口区分。 --- ## 背景与方案 **需求**:家里机器在 NAT 内网、没有公网 IP,想在任意地点 SSH 进去、远程桌面操作。 **选型结论**:frp(Fast Reverse Proxy),成熟的内网穿透工具。 - 家里机器(内网)主动反向连到云服务器,云服务器监听公网端口转发进来 - 一个服务端(frps)对多个客户端(frpc),加机器只需加端口,服务端不用动 - Go 编写,单文件二进制,Linux/Windows 通用,systemd 管理开机自启 ### 架构 ``` 你(任意地点) 云服务器 frps 家里机器 frpc(可多台) │ │ │ ├─SSH hyonglin.top:2201──▶│─监听 2201───────────▶│─▶ pc01:22 ├─SSH hyonglin.top:2202──▶│─监听 2202───────────▶│─▶ pc02:22 ├─RDP hyonglin.top:3389──▶│─监听 3389───────────▶│─▶ pc01:3389 ├─RDP hyonglin.top:3390──▶│─监听 3390───────────▶│─▶ pc02:3389 │ └─frpc 主动连 bindPort 7000◀─┘ ``` > 域名只解析到 IP,**端口才是区分机器的关键**。RDP 不能共用 3389(TCP 层没有域名概念),但 frp 的 `remotePort` 独立于本机 `localPort`,本机 RDP 端口保持 3389 不用改。 --- ## 端口规划 | 机器 | SSH(remotePort) | RDP(remotePort) | 本机端口 | |---|---|---|---| | pc01 | 2201 | 3389 | 22 / 3389 | | pc02 | 2202 | 3390 | 22 / 3389 | | 新增机器 | 2203 | 3391 | … | 固定端口:frps 客户端连接 `7000`、管理面板 `7500`。 --- ## 一、服务端 frps 部署(云服务器) ### 下载与安装 ```bash # 下载(GitHub 慢时走镜像 ghfast.top) wget https://ghfast.top/https://github.com/fatedier/frp/releases/download/v0.65.0/frp_0.65.0_linux_amd64.tar.gz tar xzf frp_0.65.0_linux_amd64.tar.gz sudo cp frp_0.65.0_linux_amd64/frps /usr/local/bin/ sudo mkdir -p /etc/frp ``` ### 服务端配置 `/etc/frp/frps.toml` ```toml bindPort = 7000 # frpc 连接端口 auth.token = "0ae2664b411c41645e5c9ab6779724d4" # 客户端认证令牌(frpc 必须一致) # 管理面板 webServer.addr = "0.0.0.0" webServer.port = 7500 webServer.user = "admin" webServer.password = "Admin-0ae2664b" # 日志 log.to = "/var/log/frps.log" log.level = "info" log.maxDays = 7 ``` ### systemd 服务 `/etc/systemd/system/frps.service` ```ini [Unit] Description=frp server After=network.target [Service] Type=simple ExecStart=/usr/local/bin/frps -c /etc/frp/frps.toml Restart=on-failure RestartSec=5 [Install] WantedBy=multi-user.target ``` ```bash sudo systemctl daemon-reload sudo systemctl enable --now frps systemctl status frps # active (running) ``` --- ## 二、客户端 frpc 部署(家里机器) ### 客户端配置 `/etc/frp/frpc.toml` 以 pc01 为例: ```toml serverAddr = "hyonglin.top" serverPort = 7000 auth.token = "0ae2664b411c41645e5c9ab6779724d4" # SSH:服务器 2201 → 本机 22 [[proxies]] name = "pc01-ssh" type = "tcp" localIP = "127.0.0.1" localPort = 22 remotePort = 2201 # RDP:服务器 3389 → 本机 3389 [[proxies]] name = "pc01-rdp" type = "tcp" localIP = "127.0.0.1" localPort = 3389 remotePort = 3389 ``` > 加第二台(pc02):把 `name` 换成 `pc02-*`、`remotePort` 换成 `2202`/`3390`,`serverAddr`/`token` 不变即可。 ### 安装(frpc 二进制 + systemd) ```bash sudo install -m 755 ~/frpc /usr/local/bin/frpc sudo mkdir -p /etc/frp sudo cp ~/frpc.toml /etc/frp/frpc.toml sudo cp ~/frpc.service /etc/systemd/system/frpc.service sudo systemctl daemon-reload sudo systemctl enable --now frpc systemctl status frpc # active (running) ``` --- ## 三、家里开启 SSH 和 RDP 服务 ### SSH ```bash sudo apt update && sudo apt install -y openssh-server sudo systemctl enable --now ssh ``` ### RDP(Ubuntu 内置,无需装 xrdp) - 打开 **设置 → 系统 → 远程桌面** - 开启 **远程登录**(Remote Desktop / RDP)开关,记下用户名密码 - 端口默认 3389 > ⚠️ Ubuntu 内置 RDP 依赖**已登录的图形会话**。重启后停在登录界面、无人登录时 RDP 连不上。若要无人值守,需换 xrdp 方案。 --- ## 四、云安全组放行端口(关键坑) **最容易漏的一步**:云服务商控制台的「防火墙/安全组」默认只开 22/80/443,需手动放行 TCP: ``` 7000(frps 连接)、2201/2202(SSH 转发)、3389/3390(RDP 转发) ``` > 服务器内部 `ufw` 是 inactive,iptables 只黑名单了若干恶意 IP,不影响端口;问题出在**云控制台安全组**,与服务器内防火墙无关。 > 7500(frps 管理面板)走 `frp.hyonglin.top` HTTPS 后,建议在安全组**撤销 7500 的公网放行**,避免明文暴露。 --- ## 五、验证与使用 ```bash # 服务器端确认 frpc 已登录、代理已监听 ss -tlnp | grep -E '2201|2202|3389|3390' sudo tail -f /var/log/frps.log # 应看到 client login / new proxy success ``` 连接方式(统一 hyonglin.top + 端口): | 目标 | 命令 | |---|---| | pc01 SSH | `ssh 用户名@hyonglin.top -p 2201` | | pc01 RDP | 远程桌面连 `hyonglin.top:3389` | | pc02 SSH | `ssh 用户名@hyonglin.top -p 2202` | | pc02 RDP | 远程桌面连 `hyonglin.top:3390` | 管理面板:`https://frp.hyonglin.top`(admin / Admin-0ae2664b) --- ## 排错记录 | 症状 | 原因 | 解决 | |---|---|---| | frpc 状态 active 但 frps 日志无 login 记录 | 云安全组没放行 7000 | 控制台放行 7000 及转发端口 | | `login to server failed` | token 不一致 | 检查 frpc/frps 的 auth.token 是否相同 | | 2201 没监听 | frpc 没启动或代理注册失败 | `journalctl -u frpc -n 50` 看报错 | --- ## 相关链接 - [[主页与Caddy反向代理]] — 主页/面板的 HTTPS 入口 - [[sshwifty网页SSH终端]] — 浏览器里连 SSH - [[Silverbullet部署指南]] — 本服务器自建服务 - [frp官方文档](https://gofrp.org/zh-cn/) --- *最后更新:2026-08-13*