家里有台NAS,想在外面也能访问,但一出门就连不上,挺烦人。公司服务器没公网IP,远程调试全靠同事帮忙开机,效率低还麻烦。这些情况其实都能通过设置网络隧道来解决。
什么是网络隧道
简单说,网络隧道就是一条“虚拟通路”,把原本无法直接访问的内网设备,通过一台有公网IP的服务器“转接”出去。比如你在外地,想连家里的摄像头,数据先发到云服务器,再由服务器转发给摄像头,反过来也一样。
常见的隧道方式:SSH反向代理
如果你有一台能公网访问的VPS,用SSH反向隧道最方便。比如你在家的Linux主机想被外网访问,可以在家里机器上执行:
ssh -fNTR 2222:localhost:22 user@your-vps-ip
这行命令的意思是:登录到你的VPS,并在VPS的2222端口监听,所有发往这个端口的数据都会通过这条SSH连接,转发回你家主机的22端口(也就是SSH服务)。下次你在外面,只要ssh到VPS的2222端口,就能间接登录家里机器:
ssh -p 2222 localhost
图形化工具:frp内网穿透
命令行看着头疼?可以用frp,配置简单,支持多种协议。先在VPS(服务端)部署frps,配置文件frps.ini写上:
[common]bind_port = 7000 dashboard_port = 7500dashboard_user = admindashboard_pwd = 123456
然后在家里的设备(客户端)运行frpc,配置frpc.ini:
[common]server_addr = your-vps-ipserver_port = 7000
[ssh]local_ip = 127.0.0.1local_port = 22remote_port = 6000
启动后,VPS的6000端口就会映射到你家的SSH服务。在外面直接ssh -p 6000 your-vps-ip,就能连回家。
手机也能用:Tailscale一键组网
不想折腾服务器?Tailscale可能是最省心的选择。它基于WireGuard,安装后登录同一个账号,设备自动组成一个虚拟局域网。你家的NAS、手机、办公电脑就像在同一个Wi-Fi下,互相直接访问。
比如你在咖啡馆,打开手机Tailscale,连上后就能直接浏览器输入http://nas.local:5000访问家里的相册,和在客厅连是一样的体验。
企业级方案:ZeroTier虚拟局域网
适合多设备、多用户管理。注册ZeroTier账号,创建一个网络,记下Network ID。在各个设备安装客户端,执行加入命令:
sudo zerotier-cli join <network_id>
回到管理后台,看到设备在线后勾选“Allow Access”,设备就加入了同一个虚拟网络。每台设备会分配一个10.x.x.x的内网IP,直接ping通就行。
有个朋友做直播,用ZeroTier把老家的推流机、城市的备用服务器、自己笔记本全串起来,断网切换几乎无感,观众根本不知道中间换过线路。
注意事项
开隧道别忘了防火墙。比如VPS开了7000端口,但安全组没放行,外部依然连不上。还有,frp的dashboard如果开了,建议改掉默认密码,不然别人可能看到你的内网服务列表。
另外,家用宽带多数是动态IP,建议配合DDNS服务,域名自动更新IP,避免每次都要改配置。