我花了三个晚上,自己才把家里那台吃灰的搭建旧笔记本改造成内网穿透服务器。别急着买云服务器,内网也别去研究那些复杂的穿透商业方案——自己搭一个,成本不到一百块,服务而且完全可控。自己
先说最核心的搭建事实:内网穿透的本质,就是内网让外网设备能访问你家里或办公室局域网里的服务。比如你在家搭了个NAS,穿透或者跑了个博客,服务但运营商给的自己公网IP是动态的,甚至根本没有公网IP。搭建这时候就需要一台有公网IP的内网服务器做“跳板”,把流量转发给你内网的穿透机器。
我选的服务是FRP(Fast Reverse Proxy),比Ngrok轻量,配置也更直观。硬件就用一台退役的ThinkPad,装Ubuntu Server,功耗低,扔在路由器旁边不占地方。公网服务器我用的腾讯云轻量应用服务器,一年也就一百来块,选最便宜的套餐就够用。
具体怎么干?分三步。
第一步,在公网服务器上下载frps(服务端)。解压后改配置文件frps.toml,核心就两行:
bindPort = 7000 # 客户端连接的端口
auth.token = "你的随机字符串" # 安全验证,防止别人蹭你的通道
然后运行./frps -c frps.toml,服务端就起来了。注意防火墙放行7000端口,还有你打算暴露的端口,比如80或8080。
第二步,在内网那台旧笔记本上装frpc(客户端)。同样改配置,关键是指向公网服务器的IP和端口,再定义要穿透的本地服务。比如我想远程访问家里的路由器管理页面:
serverAddr = "你的公网IP"
serverPort = 7000
[[proxies]]
name = "router-web"
type = "tcp"
localIP = "192.168.1.1"
localPort = 80
remotePort = 8080
这样外网访问你的公网IP:8080,流量就直接被转发到家里路由器的80端口了。是不是有点魔法?其实原理就是客户端主动连上服务端,建立一条长连接,然后所有外部请求都通过这条隧道送进来。
第三步,让服务常驻。别傻乎乎开个终端窗口就跑,用systemd做成服务,开机自启,崩了自动重启。这一步花了我半小时,因为老笔记本的BIOS设置有点怪,但配置写对一次,后面就一劳永逸了。
有个坑我必须提醒你:运营商可能封了80和443端口。我一开始映射80端口,结果外网怎么都连不上,查了半天才发现是ISP干的。改成8080、8443这种非常规端口,立刻通了。
现在我这套系统已经稳定跑了两个月。出门在外,手机连回家里的监控摄像头,或者从公司电脑直接拉取家里的文件,都跟在内网操作一样流畅。延迟大概几十毫秒,看视频没问题,打游戏就算了——毕竟隧道带宽也就那样。
最爽的是,我甚至给朋友开了个临时端口,让他访问我搭的私人影音库。这种掌控感,是花钱买云服务给不了的。当然,安全性得注意,token一定设复杂点,而且别把敏感服务随便暴露出去。
如果你也受够了那些免费穿透服务三天两头关停,或者速度慢得像蜗牛,真心建议自己动手试试。折腾一晚上,换来的是长期稳定的远程访问,这笔账怎么算都划算。