家里装了摄像头,想在公司手机上看看门口情况,结果发现外网打不开。这种情况太常见了。其实问题不在设备,而在网络结构。内网穿透的本质,是把藏在路由器后面的服务,安全稳定地暴露到公网。要做好这件事,得讲方法,不能瞎折腾。
原则一:最小暴露面
不是所有服务都要对外开通。比如你有个 NAS,里面存着全家照片和工作文档,没必要全放网上。正确做法是只开放需要的部分,比如仅映射文件共享的端口,其他一律关闭。就像你家大门开着,但卧室门还是关着更安全。
原则二:通信路径可追踪
每次请求从哪来、经过什么节点、到达哪里,都应该有记录。比如用 frp 做穿透时,配置日志级别为 info,能看到连接建立过程:
<plugin>
log_level = info
log_file = /var/log/frps.log
</plugin>
这样一旦出问题,翻日志就能定位是客户端断了还是服务器没响应。
原则三:身份验证不偷懒
很多人图省事,把 token 设成 123456 或者干脆空着。这等于把钥匙挂在门把手上。正确的做法是使用长随机字符串,比如用 openssl 生成:
openssl rand -hex 16
得到的结果作为 token 配置进去,别人猜都猜不到。
原则四:链路加密成标配
数据在公网上传输,谁都能截。所以 TLS 能开就开。frp 支持 HTTPS 穿透,配置时加上协议转换:
<route>
type = https
custom_domains = cam.yourhome.com
plugin = https2http
plugin_opts = addr=127.0.0.1:8080,host_header_rewrite=127.0.0.1
</route>
这样访问时浏览器显示小绿锁,心里也踏实。
原则五:故障要能自恢复
网络波动难免,断了就得自动重连。frpc 客户端默认会重试,但间隔太久影响体验。可以调参数加快恢复速度:
login_fail_exit = false
heartbeat_interval = 10
这样断线后十几秒内就能重新接上,监控视频不会卡太久。
这些原则看起来简单,但真正在部署时一条条落实,稳定性差不了。别想着一步到位,先保证能用,再按这几个点一步步优化,用起来才安心。