- 先说使用场景:最近通过国补+教育优惠入了一台m4的macbookair,这样就是随身带一个mac,同时宿舍里放了一台台式机,为了能够方便的跑一些基本的深度学习demo配置了wsl。另一方面,我的mac是256g的,这样用来开发很担心长期的内存占用问题,于是乎就想到了远程使用wsl来进行开发,但是使用一般的远程方案对电量消耗很大,显然不够合适,在朋友的建议下选择直接配一个ssh来使用mac操作wsl,具体步骤和遇到的问题如下,可供参考:
- 首先,我在网上找了一些方案,但是大多都是直接在局域网内进行配置,但是我的场景并不适配,实验室连校园网,但是宿舍区是连不到的,于是想到把需求丢给deepseek让他来筛选一些方案,给出了两种方案,一种是使用zerotier搭建虚拟局域网+虚拟机直连,另一种是使用windows进行端口转发。
- 考虑到便捷性,我选用了第一种方案,即使用zerotier搭建虚拟局域网,但是安装完zerotier后突然想起来以前为了配置远程云游戏方案使用了tailscale,那就找一个使用tailscale来搭建虚拟局域网的方案,这里主要介绍使用tailscale实现目标的过程以及遇到的问题:
使用 Tailscale 替代 ZeroTier 的配置方案
Tailscale 是基于 WireGuard 的零配置 VPN 工具,相比 ZeroTier 更轻量、穿透能力更强,且支持自动 NAT 打洞。以下是具体实现步骤:
方案优势
- 无需手动分配 IP:Tailscale 自动为设备分配 100.x.y.z 的私有 IP,且支持 MagicDNS(通过设备名直接访问,如
hostname.tailscale.net)。 - 更简单的子网路由:可直接将 Windows 主机和 WSL2 同时加入 Tailscale 网络,或通过子网路由暴露整个局域网。
- 开箱即用的密钥管理:自动轮换密钥,安全性更高。
配置步骤
1. 在 Windows 主机上安装 Tailscale
- 下载安装包:
Tailscale Windows 客户端 - 登录并激活:
-
- 安装后打开 Tailscale,点击登录,选择你的账号(支持 Google/Microsoft/GitHub 等第三方登录),我选择的google。
- 首次使用需访问 Tailscale 管理后台 授权新设备。
2. 在 WSL2 Ubuntu 中安装 Tailscale
- 安装 Tailscale 客户端:
# 进入 WSL2 终端
curl -fsSL https://tailscale.com/install.sh | sh
- 启动并登录 Tailscale:
sudo tailscale up
-
- 复制弹出的链接到浏览器完成登录授权(需同一 Tailscale 账号)。
- 在这一步中遇到了这样的问题:
failed to connect to local tailscaled; it doesn't appear to be running (sudo systemctl start tailscaled ?)
- 原因如下
-
- WSL2 默认禁用
systemd,无法通过systemctl管理服务(包括tailscaled)。 - 直接运行
sudo tailscale up时,可能因服务未启动而失败。
- WSL2 默认禁用
- 解决方案:启用 WSL2 的 systemd(长期有效)
启用 WSL2 的 systemd 支持:
- 编辑 WSL2 配置:
sudo nano /etc/wsl.conf
添加以下内容:
[boot]
systemd = true
- 重启 WSL2:
# 在 Windows PowerShell 中执行
wsl --shutdown
wsl -d Ubuntu # 替换为你的发行版名称
- 启动 tailscaled 并设置自启:
sudo systemctl start tailscaled
sudo systemctl enable tailscaled
- 验证 tailscaled 状态
- 检查服务是否运行:
ps aux | grep tailscaled
-
- 若有
tailscaled --state=/var/lib/tailscale/tailscaled.state进程,则表明成功。
- 若有
- 登录 Tailscale 并测试连接:
sudo tailscale up
-
- 根据提示完成浏览器认证,之后在 Tailscale 管理后台 确认设备在线。
- 故障排查
- 端口冲突:
检查是否有其他进程占用41641端口(Tailscale 默认端口):
sudo lsof -i :41641
- 防火墙拦截:
-
- 在 WSL2 中临时关闭防火墙测试:
sudo ufw disable
-
- 在 Windows 防火墙中放行 Tailscale 相关规则。
- 日志分析:
查看 Tailscale 日志定位具体错误:
journalctl -u tailscaled
3. 验证设备连接
- 查看设备列表:
登录 Tailscale 管理后台,确认 Windows 主机和 WSL2 Ubuntu 均已在线,并记录其 Tailscale IP(如100.x.y.z)。 - 测试连通性:
-
- 在 WSL2 中 ping Windows 主机的 Tailscale IP:
ping 100.x.y.z # Windows 的 Tailscale IP
-
- 在 Windows 中 ping WSL2 的 Tailscale IP:
ping 100.a.b.c # WSL2 的 Tailscale IP
4. 在 MacBook 安装 Tailscale
brew install tailscale
sudo tailscale up
-
- 遇到brew命令未安装问题,安装过程如下:
-
-
- 手动下载安装脚本
-
-
-
-
- 使用命令下载即使换用国内的镜像依旧无法访问,于是选择直接访问 install.sh 脚本,保存到本地。
- 在终端中运行:
-
-
#其中/path/to是你安装脚本的路径
/bin/bash /path/to/install.sh
-
-
- 如果脚本没有执行权限(需先赋予权限):
-
chmod +x /path/to/install.sh # 添加可执行权限
5.wsl开启ssh服务
按照以下步骤操作:
配置 WSL2 的 SSH 服务
- 安装 SSH 服务器
确保 WSL2 内已安装 OpenSSH Server:
sudo apt update && sudo apt install openssh-server
- 启动 SSH 服务
手动启动服务并设置开机自启(WSL2 需配置自动启动):
sudo service ssh start
-
- 开机自启配置(可选):
在 WSL2 的~/.bashrc末尾添加:
- 开机自启配置(可选):
if [ -z "$(ps -ef | grep sshd | grep -v grep)" ]; then
sudo service ssh start
fi
- 允许防火墙通过 SSH
WSL2 默认无防火墙限制,但若使用ufw,需放行端口:
sudo ufw allow 22
6. 在 MacBook 上连接 WSL2
- 获取 WSL2 的 Tailscale IP
在 WSL2 中运行tailscale ip查看其 Tailscale IP。 - 通过 SSH 连接
在 MacBook 终端使用 WSL2 的 Tailscale IP 连接:
ssh <WSL2用户名>@<WSL2-Tailscale-IP>
方案优势
- 直接访问:MacBook 通过 Tailscale IP 直达 WSL2,无需 Windows 端口转发。
- 安全性:Tailscale 自动加密流量,无需暴露公网 IP。
- 跨网络支持:无论宿舍和办公网络是否在同一个局域网,均可直接连接。
通过此方案,你可以无缝从 MacBook SSH 到宿舍的 WSL2 环境。
SSH 连接命令:
-
- 连接 Windows 主机:
ssh windows_username@100.x.y.z # Windows 的 Tailscale IP
-
- 直接连接 WSL2 Ubuntu:
ssh ubuntu_username@100.a.b.c # WSL2 的 Tailscale IP
-
- 使用 MagicDNS(更便捷):
ssh ubuntu_username@<wsl2-hostname>.tailscale.net
高级配置(可选)
配置 WSL2 服务开机自启(笔者未设置)
由于 WSL2 依赖 Windows 宿主机的启动,需配置自启动脚本:
- 在 Windows 中创建启动脚本(如
start_wsl_tailscale.ps1):
# 启动 WSL2 并自动运行 Tailscale
wsl -d Ubuntu -u root /usr/bin/tailscale up --accept-routes
- 将脚本加入计划任务:
-
- 按
Win+R输入taskschd.msc,创建新任务:
- 按
-
-
- 触发器:
At system startup - 操作:启动 PowerShell,参数
-File "C:\path\to\start_wsl_tailscale.ps1" - 勾选 Run with highest privileges
- 触发器:
-
方案对比:Tailscale vs ZeroTier
| 特性 | Tailscale | ZeroTier |
| 协议基础 | WireGuard(更高效) | 自研协议(兼容性广) |
| 配置复杂度 | 零配置,自动 NAT 穿透 | 需手动管理网络和 IP 分配 |
| DNS 支持 | 内置 MagicDNS(设备名直连) | 需手动配置 DNS 或 IP |
| 子网路由 | 一键式广告子网 | 需手动配置路由表 |
| 安全性 | 自动密钥轮换,ACL 策略 | 依赖手动管理 |
故障排查
- Tailscale 无法连接:
-
- 检查设备是否在线:
tailscale status - 重启服务:
sudo systemctl restart tailscaled(WSL2)或 Windows 服务中重启 Tailscale。
- 检查设备是否在线:
- SSH 连接超时:
-
- 确认防火墙放行 SSH 端口(WSL2 的
ufw或 Windows 防火墙)。 - 测试基础连通性:
ping 100.x.y.z。
- 确认防火墙放行 SSH 端口(WSL2 的
- WSL2 服务未自启:
-
- 检查计划任务是否配置正确,确保脚本路径无空格或特殊字符。
- 手动执行脚本验证:
powershell -File "C:\path\to\script.ps1"。
- 笔者所有配置皆是根据deepseek给出的参考进行配置,如果遇到其他问题,推荐通过详细描述相关问题给到大模型推理进行解决。
342

被折叠的 条评论
为什么被折叠?



