用阿里云域名远程连接 Mac

Posted by Ebin on November 4, 2026

用阿里云域名远程连接 Mac

想在外面访问家里的 Mac,不必每次都查找和输入一长串 IPv6 地址。准备一个阿里云域名,用 ddns-go 自动更新解析,再开启 Mac 自带的屏幕共享,就可以通过固定的域名发起远程连接。

下面按照“购买域名 → 配置 AccessKey → 安装 ddns-go 并开启屏幕共享 → 检测连接 → Finder 访问”的顺序操作。教程中的 example.com 是示例根域名,mac.example.com 是用于远程连接的子域名,请替换成你自己的域名。

开始前需要准备什么

  • 一台作为被控端的 Mac,保持开机、联网,并有可从外部访问的公网 IPv6 地址。
  • 另一台作为控制端的 Mac。按本文的 IPv6 直连方式连接时,控制端也需要可用的 IPv6 网络。
  • 一个阿里云账号,以及由阿里云 DNS 托管解析的域名。

这套方案不需要另外购买云服务器。阿里云负责域名和解析,ddns-go 运行在被控 Mac 上,屏幕共享负责远程桌面。

1
2
3
4
5
6
7
被控 Mac 的 IPv6 地址变化
          ↓
ddns-go 更新阿里云的 AAAA 解析记录
          ↓
控制端通过 mac.example.com 找到被控 Mac
          ↓
连接屏幕共享并完成账号认证

DDNS 只负责更新地址,不负责内网穿透或放行防火墙。长期使用远程桌面,建议通过 VPN 或 SSH 隧道接入;如果选择公网直连,应限制 TCP 5900 的访问来源,不要关闭防火墙或对全网长期开放。

下文配图展示操作入口和填写方式,敏感信息已遮挡。界面以 macOS 15.6.1、ddns-go 6.17.7 为例,不同版本的选项位置可能略有变化。

第一步 购买域名并确认解析位置

购买一个域名

登录阿里云,进入“域名与网站”,在“注册域名”中查询想要的名称。确认可注册后,选择注册年限和已实名的信息模板,核对订单并完成购买。除了首年价格,也要看清续费价格;已有域名可以跳过这一步。

阿里云域名注册入口

图 1 查询想要注册的域名。

购买后进入“域名列表”,确认域名状态正常。

阿里云域名列表

图 2 在域名列表中查看域名状态。

确认域名使用阿里云 DNS

打开“云解析 DNS → 公网权威解析”,找到准备使用的域名,进入解析设置。

云解析 DNS 域名列表

图 3 从“公网权威解析”进入目标域名的解析设置。

域名在阿里云购买,不等于解析一定由阿里云管理。 如果域名的 DNS 服务器已经改到其他平台,需要在实际托管解析的平台配置 DDNS,或先完整迁移已有记录,再切换回阿里云 DNS。

建议专门使用一个子域名,例如 mac.example.com,不要改动网站、邮箱正在使用的解析记录。

第二步 创建专用 RAM 用户并获取 AccessKey

AccessKey ID 和 AccessKey Secret 是阿里云的接口访问凭证。ddns-go 使用它们更新 DNS 记录,并不是用它们登录 Mac。

创建 RAM 用户

进入“RAM 访问控制 → 身份管理 → 用户”,点击“创建用户”。可以将用户命名为 ddns-mac,专门用于这台 Mac 的动态解析。

创建 RAM 用户入口

图 4 RAM 用户创建入口。

按页面提供的方式配置程序访问。只做 DDNS 时,不需要额外开启控制台登录;如果创建页面提供“使用永久 AccessKey 访问”,可在这里配置,也可创建用户后进入“凭证管理”。

RAM 用户创建表单

图 5 填写用户信息,选择需要的访问方式。

只授予需要的 DNS 权限

不要直接使用主账号密钥,也不要给 DDNS 用户授予整个云账号的管理权限。

在用户的“权限管理 → 新增授权”中,可以搜索 DNS 权限策略。AliyunDNSFullAccess 是管理云解析 DNS 的系统策略,范围较大;更合适的做法是创建只允许操作目标域名的自定义策略。

搜索 DNS 权限策略

图 6 DNS 策略搜索入口。图中的系统策略不是单个域名的最小权限策略。

进入“权限策略 → 创建权限策略”,在 JSON 编辑方式中参考以下配置。它对应 ddns-go 6.17.7 使用的查询、新增和更新记录操作。将 example.com 换成自己的根域名,不是 mac.example.com。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
{
  "Version": "1",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "alidns:DescribeSubDomainRecords",
        "alidns:AddDomainRecord",
        "alidns:UpdateDomainRecord"
      ],
      "Resource": "acs:alidns:*:*:domain/example.com"
    }
  ]
}

创建策略后,回到 ddns-mac 用户的“权限管理 → 新增授权”,选择并绑定该策略。这个范围覆盖指定域名下的解析记录,并非只允许修改 mac 这一条;使用其他版本时,请结合实际调用和阿里云权限文档核对。

保存 AccessKey

进入该用户的“凭证管理 → AccessKey”。如果创建用户时已经生成了一对密钥,直接使用,不要重复创建;尚未生成时,再点击“创建 AccessKey”。

AccessKey 管理入口

图 7 在专用 RAM 用户下管理 AccessKey。

保存好 AccessKey ID 和 AccessKey Secret。Secret 通常只在创建时展示,之后不能从列表中再次查看。稍后直接在本机 ddns-go 管理页填写它们,不要发给 AI,也不要放进公开截图、文章或 Git 仓库。

第三步 配置 ddns-go 和 Mac 屏幕共享

以下操作都在被控 Mac上完成。

下载 ddns-go

打开 ddns-go 官方仓库的 Releases,下载与 Mac 芯片匹配的安装包:

Mac 类型 安装包标识
Apple 芯片 darwin_arm64
Intel 芯片 darwin_x86_64

ddns-go 官方下载页

图 8 选择对应芯片的 Mac 发行包,并核对官方校验值。

不确定架构时,在终端执行:

1
uname -m

如果电脑上已经有 ddns-go,先检查现有进程、配置和启动项,不要重复安装或覆盖:

1
2
command -v ddns-go
lsof -nP -iTCP:9876 -sTCP:LISTEN

安装为开机启动服务

首次安装时,先解压经过校验的发行包。在包含 ddns-go 文件的目录打开终端,将程序安装到固定位置,并为配置创建受保护的目录:

1
2
3
sudo install -d -m 0755 /usr/local/lib/ddns-go
sudo install -m 0755 ./ddns-go /usr/local/lib/ddns-go/ddns-go
sudo install -d -m 0700 /usr/local/etc/ddns-go

然后安装服务:

1
2
3
sudo /usr/local/lib/ddns-go/ddns-go -s install \
  -l 127.0.0.1:9876 \
  -c /usr/local/etc/ddns-go/config.yaml

这些参数分别表示:

  • -s install:安装后台服务。
  • -l 127.0.0.1:9876:管理页面只监听本机,不对外提供访问。
  • -c:指定配置文件位置。配置包含密钥,不要放在共享目录中。

以上方式对应系统级启动服务。用户级 LaunchAgent 只在登录后运行,不能和“系统启动后运行”混为一谈。安装后应重启检查;开启 FileVault 的 Mac,冷启动还可能需要先解锁磁盘。

填写阿里云和 IPv6 配置

在被控 Mac 浏览器打开:

1
http://127.0.0.1:9876

设置管理用户名与强密码,选择 DNS 服务商“阿里云”,再填写专用 RAM 用户的 AccessKey ID 和 AccessKey Secret。

ddns-go 服务商与凭证配置

图 9 选择阿里云并填写凭证。截图里的 TTL 是已有设置,请按自己的 DNS 套餐选择。

按下面的说明配置解析:

配置项 填写方式
IPv4 本文只使用 IPv6,可不启用
IPv6 启用
获取 IP 方式 选择实际联网的网卡,或通过接口查询;核对结果确实属于被控 Mac
IPv6 Domains 填完整域名,例如 mac.example.com
TTL 使用阿里云 DNS 套餐支持的值,以云端实际记录为准

不要选择 fe80:: 开头的链路本地地址或以 fd 开头的唯一本地地址。使用代理或 VPN 时,也要检查查询到的是否是出口地址,而不是被控 Mac 的可达地址。

ddns-go 的 IPv6 配置

图 10 启用 IPv6,并填写完整的远程访问域名。

管理页面保持本机访问,并启用“禁止公网访问”作为额外保护。Webhook 不是远程连接的必填项,不需要通知时可以留空。

ddns-go 的管理安全与 Webhook 配置

图 11 管理访问设置入口。截图中的“禁止公网访问”尚未勾选;Webhook 地址若带令牌,不应公开。

保存配置,打开“日志”,查看是否成功更新解析。如果某个查 IP 接口报错,检查后续接口是否仍能获取正确地址;如果出现授权错误,先核对 AccessKey、策略和目标域名,不要直接扩大到全云权限。

ddns-go 的日志窗口

图 12 日志可用于排查接口访问和解析更新问题,图中包含接口异常示例。

确认 AAAA 记录正确

回到“云解析 DNS → 公网权威解析 → 目标域名”,核对记录:

字段 应有内容
主机记录 mac
记录类型 AAAA
记录值 被控 Mac 实际可达的 IPv6 地址
TTL 套餐支持的值

如果 ddns-go 已自动创建记录,就不必再手动添加。需要手动填写时,可以参考下面的表单。DNS 记录值只填 IP,不填 vnc://,也不加 :5900。

AAAA 记录填写示例

图 13 AAAA 记录填写示例。2001:db8::1234 是文档示例地址,不能用于真实连接。

云端 AAAA 记录

图 14 检查云端记录。截图使用的是另一主机记录名,按本文操作时应核对自己的 mac 记录。

开启屏幕共享

打开“系统设置 → 通用 → 共享”,开启“屏幕共享”,点击右侧详情按钮,设置允许访问的用户。建议选择“仅这些用户”,不要默认允许所有人。

Mac 屏幕共享设置

图 15 屏幕共享入口。其他共享项目不需要跟着截图开启。

两端都是 Mac 时,使用被控 Mac 上被允许访问的账号登录即可,不必额外启用通用 VNC 密码。然后检查屏幕共享端口:

1
sudo lsof -nP -iTCP:5900 -sTCP:LISTEN

公网直连还需要 Mac 防火墙、路由器的 IPv6 入站规则和运营商网络允许连接。只为被控 Mac 的 TCP 5900 放行必要的可信来源,不要开放 ddns-go 的 9876 管理端口,也不要关闭整个防火墙。

第四步 检测域名和远程桌面端口

配置完成后,先确认域名解析,再检查网络和端口。Ping 通不等于远程桌面可以连接。

检查域名解析

在控制端 Mac 打开终端,将示例域名替换后执行:

1
dig +short AAAA mac.example.com

返回的 IPv6 地址应与被控 Mac 当前使用的地址一致。如果不同,先检查 ddns-go 日志、权威 DNS 和缓存,不要急着排查 VNC。

使用 ITDOG 测试 IPv6

打开 ITDOG 的 IPv6 Ping 页面,填写自己的域名。也可以替换下面地址中的示例域名后访问:

1
https://www.itdog.cn/ping_ipv6/mac.example.com

ITDOG IPv6 Ping 输入示例

图 16 输入域名后运行单次 IPv6 Ping 测试。配图为输入示例。

ITDOG 会获得待测域名及解析地址,只测试自己拥有或获授权的目标。不愿向第三方提交地址时,可用自己的外部设备测试。

单独检查 TCP 5900

在 ITDOG 的 IPv6 TCPing 页面明确输入:

1
mac.example.com:5900

ITDOG IPv6 TCP 5900 输入示例

图 17 指定 :5900。不填写端口时,该页面默认测试 80。

也可以直接在控制端 Mac 测试:

1
2
3
4
5
# 检查 IPv6 Ping
ping6 -c 4 mac.example.com

# 检查 TCP 5900,-G 5 表示 macOS 下连接超时为 5 秒
nc -6 -vz -G 5 mac.example.com 5900

如果防火墙只允许你的控制端,ITDOG 节点连接失败可能是正常的。此时从允许访问的控制端测试即可,不要为了让检测结果全绿而对全网开放端口。通过 VPN 或 SSH 隧道接入时,也不要求公网 5900 可达。

第五步 使用 Finder 连接 Mac

在控制端 Mac 打开 Finder,选择“前往 → 连接服务器…”,或按快捷键 Command + K。

输入自己的域名和端口:

1
vnc://mac.example.com:5900

Finder 连接服务器

图 18 Finder“连接服务器”中的地址填写示例。

点击“连接”,在屏幕共享的认证窗口中输入被控 Mac 上允许访问的账户。这里使用的不是阿里云密码,也不是 AccessKey。认证成功后,即可查看和操作目标桌面。

如果采用 VPN,使用 VPN 内可达的地址;采用 SSH 端口转发时,使用本地转发端口。vnc:// 本身不是加密保证,使用第三方 VNC 客户端时尤其要确认传输保护方式。

连接不上时先检查什么

现象 优先检查
查不到 AAAA 记录 域名是否由阿里云 DNS 托管,ddns-go 是否成功更新
解析地址不正确 IP 获取方式是否选错,是否取得了代理或 VPN 出口地址,DNS 是否仍有缓存
IPv6 Ping 不通 两端 IPv6 路径、路由器规则及运营商限制;也可能只是 ICMP 被限制
Ping 通但 5900 不通 屏幕共享是否开启,服务是否监听,Mac 和路由器是否允许 TCP 5900
5900 能连接但登录失败 是否使用被控 Mac 的账号,该用户是否被允许共享屏幕
合盖或重启后连接失败 Mac 是否睡眠或断网,ddns-go 是否启动,FileVault 是否等待解锁

最后用另一条已授权的外部网络完整测试一次:核对域名地址、连接屏幕共享、完成认证,并尝试操作桌面。重启被控 Mac 后再检查一次,才能确认日常使用时不需要手动启动 ddns-go。

参考资料