繁华依在的小站

🌉 家里的服务器如何上外网?FRP 内网穿透实战指南

技术 作者:admin | 发布时间:2026-02-03 16:14 | 更新时间:2026-02-07 16:20 | 阅读:3 |
标签: FRP 内网穿透 服务器 网络 家庭服务器

🌉 家里的服务器如何上外网?FRP 内网穿透实战指南

你有一台旧电脑放在家里跑着博客,很自豪对吧?但是... 只有你能访问 😢

今天我们来解决这个问题,让你的家庭服务器"重见天日"!🌍


🏠 场景说明

你有

  • ✅ 一台 24 小时开着的电脑/服务器
  • ✅ 上面跑了很棒的服务(博客、网站等)
  • ✅ 本地访问正常 http://localhost:5000

但是

  • ❌ 没有公网 IP(家庭宽带)
  • ❌ 路由器不能做端口映射
  • ❌ 外面的朋友访问不了

怎么办?

答案:内网穿透! 🚇


🎯 什么是内网穿透?

想象一下:

text
1
2
3
4
你家(内网)
    ↓ 有围墙
外面的世界(互联网)
    ↓ 进不去

内网穿透就像打隧道

text
1
2
3
4
5
外面的世界 🌍
    ↓
[云服务器 - 有公网 IP] 🏢
    ↓ 🚇 隧道
你的电脑(内网)🏠

🛠️ 方案对比

方案 难度 成本 速度 推荐度
FRP ⭐⭐ 💰💰 🚀🚀🚀 ⭐⭐⭐⭐⭐
Ngrok 💰💰💰 🚀🚀 ⭐⭐⭐⭐
Cloudflare Tunnel ⭐⭐ 🆓 🚀🚀🚀 ⭐⭐⭐⭐⭐
花生壳 💰💰💰💰 🚀 ⭐⭐

本文重点:FRP(Fast Reverse Proxy)


📦 准备工作

需要

  1. 一台云服务器(VPS)

    • 阿里云、腾讯云、搬瓦工等
    • 最便宜的配置就够(1 核 1G)
    • 必须有公网 IP
  2. 一个域名(可选但推荐)

    • 可以不要,用 IP 也能访问
    • 有域名更专业
  3. 家庭服务器

    • 你的博客运行在这里

🚀 第一步:配置 FRP 服务器

下载 FRP

GitHub Releases 下载:

bash
1
2
3
4
5
6
# 服务器端(云服务器)
wget https://github.com/fatedier/frp/releases/download/v0.52.3/frp_0.52.3_linux_amd64.tar.gz

# 解压
tar xzf frp_0.52.3_linux_amd64.tar.gz
cd frp_0.52.3_linux_amd64

配置服务器

frps.toml

toml
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
[common]
# 监听端口
bindPort = 7000

# Dashboard(可选,管理界面)
webServer.addr = "0.0.0.0"
webServer.port = 7500
webServer.user = "admin"
webServer.password = "设置强密码"

# 认证 Token
auth.token = "生成一个随机字符串"

生成 Token

bash
1
openssl rand -hex 32

启动服务器

bash
1
2
3
4
# 测试启动
./frps -c frps.toml

# 看到 "start frps success" 就成功了

配置 Systemd 服务

/etc/systemd/system/frps.service

ini
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
[Unit]
Description=FRP Server
After=network.target

[Service]
Type=simple
User=root
ExecStart=/opt/frp/frps -c /opt/frp/frps.toml
Restart=always

[Install]
WantedBy=multi-user.target
bash
1
2
3
4
# 启动服务
sudo systemctl enable frps
sudo systemctl start frps
sudo systemctl status frps

🏠 第二步:配置 FRP 客户端

在家庭服务器上操作

bash
1
2
3
4
# 下载同样的 FRP 程序
wget https://github.com/fatedier/frp/releases/download/v0.52.3/frp_0.52.3_linux_amd64.tar.gz
tar xzf frp_0.52.3_linux_amd64.tar.gz
cd frp_0.52.3_linux_amd64

配置客户端

frpc.toml

toml
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
[common]
# 服务器地址
serverAddr = "你的云服务器IP"
serverPort = 7000

# 认证 Token(和服务器一样)
auth.token = "和服务器相同的token"

[[proxies]]
# 隧道名称
name = "blog"

# 类型:http
type = "http"

# 本地服务地址
localIP = "127.0.0.1"
localPort = 5000

# 域名(如果有)
customDomains = ["blog.yourdomain.com"]

启动客户端

bash
1
2
3
4
# 测试启动
./frpc -c frpc.toml

# 看到 "start proxy success" 就成功了

配置 Systemd 服务

/etc/systemd/system/frpc.service

ini
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
[Unit]
Description=FRP Client
After=network.target

[Service]
Type=simple
User=你的用户名
ExecStart=/opt/frp/frpc -c /opt/frp/frpc.toml
Restart=always
RestartSec=5

[Install]
WantedBy=multi-user.target
bash
1
2
3
4
5
# 启动服务
sudo systemctl daemon-reload
sudo systemctl enable frpc
sudo systemctl start frpc
sudo systemctl status frpc

🌐 第三步:配置域名(可选)

如果有域名

在域名 DNS 设置中添加:

text
1
2
3
类型: CNAME
名称: blog
值: 你的云服务器IP

或者 A 记录直接指向 IP。

如果没有域名

直接用 IP 访问:http://云服务器IP


✅ 第四步:测试访问

1. 检查 FRP 状态

服务器端

bash
1
2
3
4
5
# 查看 FRP 日志
sudo journalctl -u frps -f

# 或查看 Dashboard
http://云服务器IP:7500

客户端

bash
1
2
3
4
# 查看 FRP 日志
sudo journalctl -u frpc -f

# 应该看到 "login to server success"

2. 测试访问

bash
1
2
3
4
5
# 从外网测试
curl http://blog.yourdomain.com

# 或
curl http://云服务器IP

3. 浏览器访问

text
1
http://blog.yourdomain.com

成功的话,你的博客就能从外网访问了! 🎉


🔒 安全加固

1. 修改端口

toml
1
2
# 不要用默认端口
serverPort = 7000  # 改成其他端口

2. 启用加密

toml
1
2
3
4
5
6
[common]
# 传输加密
use_encryption = true

# 压缩传输
use_compression = true

3. 访问控制

toml
1
2
3
4
5
6
7
8
[[proxies]]
name = "blog"
type = "http"
# 只允许特定域名访问
customDomains = ["blog.yourdomain.com"]
# HTTP 用户验证
httpUser = "username"
httpPassword = "password"

📊 监控和管理

FRP Dashboard

访问:http://云服务器IP:7500

可以查看: - 连接状态 - 流量统计 - 代理信息 - 客户端列表

命令行查看

bash
1
2
3
4
5
6
7
8
# 查看连接
sudo netstat -anp | grep frp

# 查看进程
ps aux | grep frp

# 查看日志
tail -f /var/log/frp.log

🚨 常见问题

问题 1:无法连接到服务器

检查

bash
1
2
3
4
5
6
7
8
# 1. 服务器防火墙
sudo ufw allow 7000/tcp

# 2. 云服务器安全组
# 在云控制台添加 7000 端口规则

# 3. 测试连通性
telnet 服务器IP 7000

问题 2:连接成功但访问不了

检查

bash
1
2
3
4
5
6
7
8
# 1. 本地服务是否运行
curl http://localhost:5000

# 2. 客户端日志
sudo journalctl -u frpc -n 50

# 3. 代理配置
# 确认 localIP 和 localPort 正确

问题 3:连接经常断开

原因:网络不稳定

解决

toml
1
2
3
4
5
6
[common]
# 心跳间隔
heartbeatInterval = 10

# 超时时间
heartbeatTimeout = 90

💡 进阶用法

1. 多个服务

toml
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
# 博客
[[proxies]]
name = "blog"
type = "http"
localPort = 5000
customDomains = ["blog.yourdomain.com"]

# 另一个服务
[[proxies]]
name = "app"
type = "http"
localPort = 8000
customDomains = ["app.yourdomain.com"]

2. TCP 隧道(SSH)

toml
1
2
3
4
5
6
[[proxies]]
name = "ssh"
type = "tcp"
localIP = "127.0.0.1"
localPort = 22
remotePort = 6000

然后可以从外网 SSH:

bash
1
ssh -p 6000 用户@云服务器IP

3. HTTPS

如果你有 SSL 证书,可以在 FRP 层面启用:

toml
1
2
3
4
5
6
[[proxies]]
name = "blog"
type = "https"
localIP = "127.0.0.1"
localPort = 5000
customDomains = ["blog.yourdomain.com"]

🎉 成功案例

我的配置

text
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
云服务器:阿里云 1 核 1G
  - IP:X.X.X.X
  - 带宽:1 Mbps
  - 成本:60 元/年

家庭服务器:
  - 旧电脑(i3-4130,8G 内存)
  - 运行:Flask 博客 + 其他服务
  - 成本:0 元(本来就闲置)

域名:
  - .top 域名
  - 成本:10 元/年

总成本:70 元/年 ≈ 6 元/月 ☕

性能表现

指标 数值
访问速度 1-2 秒
并发能力 10+ 并发
可用性 99%+
流量限制 取决于云服务器带宽

📚 总结

优点

✅ 成本低(云服务器便宜) ✅ 配置简单(一条命令搞定) ✅ 性能稳定(速度快) ✅ 功能强大(支持多种协议)

缺点

❌ 需要云服务器 ❌ 依赖服务器稳定性 ❌ 安全需要注意

适用场景

  • 家庭服务器对外提供服务
  • 开发环境临时测试
  • 小型个人项目
  • 学习网络知识

🔗 相关资源


💬 互动

你有什么内网穿透的经验吗?

  • 用过哪些工具?
  • 遇到过什么坑?
  • 有什么心得体会?

欢迎在评论区分享!🎤


下一篇预告:如何用 Cloudflare Tunnel 免费(0 元)做内网穿透!💰

评论 (0)

暂无评论,快来抢沙发吧~

发表评论