使用FRP轻松实现内网穿透

481 阅读10分钟

你是否也遇到过这样的困扰:在公司想要访问家里的NAS,或者出差时需要连接家中的监控系统,却因为网络限制而无法实现?

我相信很多朋友都有过类似的经历。最初,我也像大多数人一样选择了花生壳这类商业化的内网穿透服务,但随着使用时间的增长,我发现它的限制实在太多了。

花生壳的那些"坑",你踩过几个?

说起花生壳,我想很多人都有过爱恨交加的体验。

花生壳

刚开始用的时候,确实觉得很方便,注册个账号就能快速实现内网穿透。但用久了你就会发现,这免费的"香饽饽"其实有不少限制。

首先是带宽限制。免费版本的带宽少得可怜,传个文件慢得让人怀疑人生。我想在公司远程下载家里NAS上的一个视频文件,结果等了半天才下载了不到10%,最后只能放弃。

其次是连接数限制。如果你家里有多个设备需要远程访问,花生壳的免费版本根本不够用。每次还要在不同设备之间切换,体验相当糟糕。

最让人头疼的是稳定性问题。有时候正在紧急处理工作,突然发现连不上家里的服务器了,这种感觉真的很无奈。而且花生壳的服务器在国外,网络延迟也是个大问题。

FRP:内网穿透的"神器"

image.png

正是因为花生壳的这些限制,我开始寻找更好的解决方案。经过一番研究和实践,我发现了FRP这个开源工具。说真的,当我用上FRP后,我可再也不想用花生壳这些了。

FRP是什么?

简单来说,它是一个高性能的反向代理应用,专门用于内网穿透。与花生壳不同,FRP是完全开源的,这意味着你可以自由地使用、修改,而且不会有各种商业限制。

FRP的优势让我"路转粉"

1. 完全免费,无任何限制 使用FRP,你不需要担心带宽限制、连接数限制或者使用时长限制。只要你的服务器配置够用,理论上可以支持无限制的连接和数据传输。

2. 性能卓越,响应迅速 FRP采用Go语言编写,性能非常优秀。我在实际使用中发现,通过FRP访问家里的NAS,速度比花生壳快了好几倍,延迟也大幅降低。

3. 安全性更有保障 由于是自建服务,你可以完全控制数据的传输路径和安全策略。FRP支持多种加密方式,确保数据传输的安全性。

4. 支持多种协议 FRP不仅支持HTTP和HTTPS,还支持TCP、UDP等多种协议,可以满足各种不同的应用需求。

动手搭建FRP:其实比你想象的简单

看到这里,你可能会想:"这么好的工具,搭建起来一定很复杂吧?"其实不然,FRP的搭建过程相当简单,只要你有一台公网服务器,几个命令就能搞定。

准备工作

首先,你需要准备一台有公网IP的服务器。这里需要特别注意一个问题:如果你计划使用HTTP/HTTPS服务进行Web访问,国内的云服务器(如阿里云、腾讯云等)通常需要域名备案才能正常访问。

备案流程虽然不算太复杂,但需要审核并等待,对于很多朋友来说可能不太方便。如果你不想折腾备案的话,我建议选择海外的VPS服务商,具体可以参考无需备案的VPS推荐指南这篇文章。

服务器配置方面,FRP对硬件要求不高,1核1G内存就完全够用了。主要考虑因素是网络带宽和延迟,建议选择离你常用地点较近的服务器节点。

服务端配置

2025-06-08 171110.png 在服务器上下载FRP程序包,解压到/usr/local/frp后你会看到两个主要的执行文件:frps(服务端)和frpc(客户端)。

服务端的配置文件(frps.toml)非常简单:

# 客户端连接服务端配置
bindPort = 7100
auth.token = "xxxxxxxxx"

# 客户端面板配置
webServer.addr = "0.0.0.0"
webServer.port = 7102
webServer.user = "user"
webServer.password = "password"

这里设置了FRP服务的监听端口和管理界面。运行./frps -c ./frps.toml命令,服务端就启动了。

客户端配置

在家里的电脑或NAS上安装FRP客户端,配置文件(frpc.toml)示例:

serverAddr = "你的服务器IP"
serverPort = 7100
auth.token = "xxxxxxxxx"

[[proxies]]
name = "需要内网穿透的服务名"
type = "tcp"
localIP = "192.168.1.100"
localPort = 22
remotePort = 6000

这样配置后,你就可以通过服务器的6000端口SSH到家里的192.168.1.100电脑了。

配置Linux系统服务(推荐)

为了让FRP服务更稳定地运行,我强烈建议将其配置为Linux系统服务,这样可以实现开机自启动,并且方便日常管理。

服务端服务配置

在服务器上创建frps服务文件:

# 不同系统可能不一样,我以Centos 8为例,其他的略有不同
sudo nano /usr/lib/systemd/system/frps.service

输入以下内容:

[Unit]
Description=frps service
After=network.target syslog.target
# Wants 为"弱依赖"关系,即如果依赖服务启动失败或停止运行,不影响当前服务。
# Requires 为"强依赖"关系,即如果依赖服务启动失败或异常退出,那么当前服务也必须退出。
Wants=network.target

[Service]
Type=simple
# 启动服务的命令
ExecStart=/usr/local/frp/frps -c /usr/local/frp/frps.toml
# 设置启动失败后重试
Restart=on-failure
RestartSec=42s

[Install]
WantedBy=multi-user.target

然后启用并启动服务:

sudo systemctl daemon-reload
sudo systemctl enable frps
sudo systemctl start frps
sudo systemctl status frps

客户端服务配置

在客户端(家里的设备)上同样创建服务文件:

# 不同系统可能不一样,我以Centos 8为例,其他的略有不同
sudo nano /usr/lib/systemd/system/frpc.service

内容如下:

[Unit]
Description=frpc service
After=network.target syslog.target
# Wants 为"弱依赖"关系,即如果依赖服务启动失败或停止运行,不影响当前服务。
# Requires 为"强依赖"关系,即如果依赖服务启动失败或异常退出,那么当前服务也必须退出。
Wants=network.target

[Service]
Type=simple
# 启动服务的命令
ExecStart=/usr/local/frp/frpc -c /usr/local/frp/frpc.toml
# 设置启动失败后重试
Restart=on-failure
RestartSec=42s

[Install]
WantedBy=multi-user.target

同样启用服务:

sudo systemctl daemon-reload
sudo systemctl enable frpc
sudo systemctl start frpc
sudo systemctl status frpc

配置成服务后,你可以轻松地使用以下命令管理FRP:

  • 查看服务状态:sudo systemctl status frps/frpc
  • 启动服务:sudo systemctl start frps/frpc
  • 停止服务:sudo systemctl stop frps/frpc
  • 重启服务:sudo systemctl restart frps/frpc
  • 查看日志:sudo journalctl -u frps/frpc -f

这种方式最大的好处是服务器重启后FRP会自动启动,不需要手动操作,真正做到了"一次配置,长期使用"。

实战应用:让工作与生活更便捷

Nas导航页

自从搭建了FRP内网穿透服务,我的工作效率提升了不少。给你分享几个实际的应用场景:

随时随地管理家庭NAS

我在家里搭建了一台群晖NAS,存储了大量的电影、音乐和工作文档。通过FRP,我可以在公司直接访问家里的NAS,下载需要的文件或者上传工作资料。速度稳定,体验流畅,再也不用担心花生壳的各种限制了。

远程办公更加便捷

今天,在家办公成了常态。通过FRP,我可以从家里直接访问公司内网的服务器,处理各种紧急事务。这种感觉就像坐在公司办公室一样,网络延迟几乎感觉不到。

智能家居远程控制

我家里安装了不少智能设备,包括摄像头、温度传感器等。通过FRP,我可以在外出时实时查看家里的情况,调节空调温度,非常方便。

安全注意事项:防范于未然

虽然FRP给我们带来了很大便利,但安全问题同样不能忽视。我建议你注意以下几点:

首先,一定要启用token认证。在上面的配置示例中,我已经展示了如何在服务端和客户端都配置相同的token。这个token就像一把钥匙,只有持有正确token的客户端才能连接到服务器,大大提升了安全性。

其次,务必修改默认的管理密码,使用复杂的密码组合。管理界面的密码是你管理FRP服务的最后一道防线,千万不能马虎。

第三,可以配置防火墙规则,只允许特定IP访问FRP服务。如果你的使用场景相对固定,这种方式能进一步提升安全性。

如果条件允许,还可以配置SSL证书,启用HTTPS加密传输。特别是当你需要传输敏感数据时,加密传输是必不可少的。

另外,定期更新FRP版本也很重要,新版本通常会修复已知的安全漏洞,提升系统安全性。建议关注FRP的GitHub仓库,及时获取最新版本信息。

性能优化小技巧

为了让FRP运行得更稳定,我总结了几个优化小技巧:

1. 选择合适的服务器位置 尽量选择离你常用地点较近的服务器,这样可以降低网络延迟,提升访问速度。

2. 合理配置带宽 根据实际需求选择合适的服务器带宽。如果经常需要传输大文件,建议选择带宽较高的套餐(建议使用国外的一些无限流量VPS获得高带宽和大流量高,缺点就是延迟稍高一点)。

3. 启用压缩传输 FRP支持数据压缩功能,在客户端配置文件中添加以下配置可以减少数据传输量,提升速度:

transport.useCompression = true

故障排查经验分享

在使用FRP的过程中,难免会遇到一些问题。我把常见的故障和解决方法分享给大家:

如果遇到连接失败,首先检查服务器防火墙设置,确保相关端口已经开放。其次检查客户端配置文件,确认服务器地址和端口设置正确

如果发现访问速度很慢,可以尝试调整FRP的并发连接数设置,或者检查服务器的带宽使用情况。

总结:拥抱开源,享受自由

回顾这段使用FRP的经历,我深深感受到了开源软件的魅力。相比花生壳等商业化产品,FRP不仅功能更强大,而且完全免费,没有各种限制。

当然,使用FRP需要一定的技术基础,搭建过程可能比直接使用花生壳稍微复杂一些。但一旦搭建完成,你会发现这点投入是完全值得的。稳定的连接、快速的传输、灵活的配置,这些都是花生壳无法比拟的。

如果你也经常需要进行内网穿透,我强烈建议你尝试一下FRP。相信我,一旦用上了,你就再也回不去了。毕竟,谁不想要一个完全属于自己、没有任何限制的内网穿透服务呢?

内网穿透虽然听起来很技术化,但实际上它已经成为我们数字生活中不可缺少的一部分。无论是远程办公、智能家居控制,还是个人文件管理,FRP都能为我们提供稳定可靠的解决方案。

希望这篇文章能帮助你更好地理解和使用FRP,让你的数字生活更加便捷高效。如果在搭建过程中遇到任何问题,不要气馁,多试几次,相信你一定能成功的!