Files
note_sync/自建服务/frp内网穿透部署指南.md
T

6.2 KiB
Raw Blame History

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 部署(云服务器)

下载与安装

# 下载(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

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

[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
sudo systemctl daemon-reload
sudo systemctl enable --now frps
systemctl status frps   # active (running)

二、客户端 frpc 部署(家里机器)

客户端配置 /etc/frp/frpc.toml

以 pc01 为例:

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)

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

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 的公网放行,避免明文暴露。


五、验证与使用

# 服务器端确认 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 看报错

相关链接


最后更新:2026-08-13