住宅机器FRP内网穿透外网访问:住宅机器实现FRP内网穿透
很多朋友在家用旧电脑搭了个服务器,或者跑着NAS、开发环境,结果出门就访问不了——因为运营商分配的是内网IP,没有公网地址。
用FRP(Fast Reverse Proxy)做内网穿透是目前最轻量的方案之一。
本文从零开始,把每一步拆开讲清楚:你需要准备什么、怎么配置服务端和客户端、哪些坑最容易踩、以及如何确认外网已经可以访问。
准备一台云服务器和住宅机器的操作环境
FRP的原理是用一台有公网IP的云服务器做中转。
推荐配置最低1核2G、带宽1M以上的Linux服务器(CentOS 7+/Ubuntu 18.04+)。
住宅机器可以是任何能跑Linux或Windows的设备,只要支持frp客户端。
你需要提前准备:
- 云服务器的IP地址和一个非root用户(或直接用root,注意安全)
- SSH客户端(Windows用Putty/Xshell,Mac/Linux直接终端)
- 住宅机器上的本地服务已正常运行(例如你要穿透SSH,确认22端口可以本地连接)
- 浏览器能打开云服务器的防火墙控制台,放行FRP需要用到的端口
服务端配置:下载、编辑frps.ini并启动
先登录到你的云服务器。
操作步骤按顺序来:
# 下载FRP(以Linux amd64为例,其他架构请替换下载链接)
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(注意新版FRP使用.toml格式,旧版是.ini,本文以.v0.52为例)。
写入以下内容:
[common]
bind_port = 7000 # 与客户端通信的端口
dashboard_port = 7500 # 仪表盘端口(可选)
dashboard_user = admin
dashboard_pwd = admin123
token = mysecret123 # 与客户端一致的token
启动服务端:
./frps -c frps.toml &
检查是否启动成功:
netstat -tulpn | grep frps
若看到7000和7500端口在监听,
说明服务端没问题。记得去云服务器防火墙控制台放行7000和7500端口(如果你用了仪表盘),
同时放行之后要用来外网访问的端口(比如下面例子中的8080、
2222等)。
客户端配置:穿透你的本地服务到公网
回到住宅机器(同样下载FRP,架构可能不同,比如树莓派选arm64)。
解压后编辑 frpc.toml:
[common]
server_addr = <你的云服务器公网IP>
server_port = 7000
token = mysecret123
# 穿透SSH(22端口)
[ssh]
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = 2222 # 外网访问时的端口,云服务器上要放行
# 穿透一个Web服务(比如NAS管理页面)
[web]
type = tcp
local_ip = 192.168.1.100 # 内网NAS的IP
local_port = 5000
remote_port = 8080
启动客户端:
./frpc -c frpc.toml &
看到输出 start proxy success 就说明连接建立了。
避坑指南:防火墙、token一致性和端口冲突
- 防火墙放行端口:很多新手只配了frp,忘了放行云服务器的安全组端口(比如2222、8080),导致外网连接超时。务必在云厂商控制台的“安全组”或“防火墙”中添加入站规则,允许TCP端口范围。
- token必须一致:服务端的
token和客户端的token要一模一样,否则连接会报auth token invalid。 - local_ip不要写127.0.0.1时要注意:如果穿透的服务运行在其他设备上(比如NAS),
local_ip要写那个设备的内网IP,不要写127.0.0.1。 - frp版本匹配:服务端和客户端请使用相同的FRP主版本(比如都是0.52.x),避免协议不兼容。
- 住宅机器断电问题:如果住宅机器关机,穿透自然失效。可以配置为开机自启(systemd服务),具体方法可参考frp官方文档。
验证外网访问是否成功
在任意外网电脑或手机上操作:
- 测试SSH穿透:
ssh -p 2222 username@<云服务器公网IP>
如果能成功登录住宅机器,说明SSH穿透正常。
- 测试Web穿透:
浏览器访问 http://<云服务器公网IP>:8080
应该能打开你内网NAS的管理界面。
- 查看FRP仪表盘:
浏览器访问 http://<云服务器公网IP>:7500,用之前设置的用户名密码登录,可以看到当前所有代理的状态。
如果以上验证失败,请依次检查:防火墙端口、客户端日志(./frpc -c frpc.toml 前台运行看报错)、服务端日志(./frps -c frps.toml前台运行)。
总结
FRP内网穿透的核心就是服务端+客户端配置,搞定token一致和端口放行,基本就能用了。
对住宅机器这样的场景来说,它能让你在外网像在内网一样访问所有服务。
实际部署时建议配合systemd做开机自启,并定期检查frp版本更新。
如果你在配置过程中遇到其他问题,欢迎在评论区交流。