前言
从windows笔记本切换到macbook后,之前那个让我奔溃的Dell笔记本就闲置起来。一种Dell Inspiron 7590 键盘若干键位故障临时修复方案
最近琢磨着如何让这个笔记本恢复第二春。我安装了ubuntu 18.04系统,当作笔记本服务器
,在局域网内跑一些简单的服务。如:
1)Samba docker 容器。我将几个闲置的移动硬盘通过USB连接至这个笔记本服务器
,然后创建Samba容器, 使得这个移动硬盘在局域网内支持SMB共享。这样我就有了一个简易的NAS。又省钱了! ✌️
2)SSH 这个笔记本至少还有一张RTX 1660显卡,可以帮我在本地跑一些机器学习训练测试。
于是,我家的Apple TV可以通过局域网的SMB访问这个笔记本服务器
挂载的移动硬盘里的影片。当学校的集群被占满时,我也可以在家用Macbook连接到笔记本服务器
,临时跑一些模型。
但是,我不能从外网访问这些服务,我也不相信我可以安全地配置/使用ngrok,frp,和花生壳类工具。我需要安全、稳定、可控的内网穿透工具。
使用 Cloudflare Tunnel 内网穿透SSH
我将介绍我的家庭网络和配置,希望对读者有帮助。
假如你和我一样,在家有一台设备A(服务器、笔记本、NAS),它的ip是192.168.1.101
,你已经自行配置了SSH Key。 你现在可以在家里其他的电脑上使用如下的SSH 配置访问同一个局域网下你的设备A。
Host DellUbuntu
HostName 192.168.1.101
TCPKeepAlive yes
ServerAliveInterval 15
User tom
IdentityFile ~/.ssh/dell_ubuntu
Port 22
现在我们将搭建Cloudflare Tunnel,使得我们可以从外网访问A。
创建Tunnel
然后,你可以按照Cloudflare的文档配置:Connect to SSH server with cloudflared access
选择系统版本,在家庭服务器上安装cloudflared
设置需要Tunnel转发的服务协议与端口
其中example.com
应该是你在Cloudflare解析的一个域名。
使用Tunnel从外网访问
通过以上配置,我们期望通过访问home-ubuntu.example.com
来访问家里局域网内192.168.1.101
的服务器。
如官方文档Connect as a user所示,请首先在你的电脑上安装cloudflared。
然后配置SSH, 比如 ~/.ssh/config
Host home-ubuntu.example.com
HostName home-ubuntu.example.com
TCPKeepAlive yes
User dong
ServerAliveInterval 15
IdentityFile ~/.ssh/dell_ubuntu
Port 22
ProxyCommand /opt/homebrew/bin/cloudflared access ssh --hostname %h
注意,这里主要的区别是多了ProxyCommand /opt/homebrew/bin/cloudflared access ssh --hostname %h
, 以及Hostname 由192.168.1.101
变成了你在Cloudflare设置的home-ubuntu.example.com
。
配置 Zero Trust Access 保护
你可以在Cloudflare Zero Trust创建一个self-hosted application 用来保护对home-ubuntu.example.com
的访问。
使用 Cloudflare Tunnel 内网穿透SMB
请参考Connect to SMB server with cloudflared access,几乎没有什么区别。
为SMB创建Cloudflare Tunnel后,在客户端安装Cloudflared, 将目标Tunnel转发到本地。比如,
cloudflared access tcp --hostname smb.example.com --url localhost:8445
使用 Cloudflare Tunnel 内网穿透Web
你当然也可以使用Cloudflare Tunnel 内网穿透Web服务,只需要在创建Tunnel时设置转发http/https协议。
文章评论