Mac mini 家庭网络设置内网穿透
Categories: 编程
前言
在拼多多上花 2899 块钱买了一个 M4 16G 256G 的 Mac Mini,因为手里本来有一个对外提供的 web 服务,还为此买了阿里云 ECS 和 云数据库,就想把这个当成一个服务器。
整体步骤
- 向运营商索要家庭宽带的公网 IP
- 光猫改成桥接模式
- 为 Mac mini 分配固定的局域网 IP
- Mac mini 设置、加固
- 路由器做端口映射
- 内网穿透
向运营商索要家庭宽带的公网IP
检查自己家的网络是否是 10.x.x.x、100.64.x.x、192.168.x.x 这类保留网段,说明被运营商 NAT 或 CG‑NAT,并不是真正的独享公网 IP——此时就算做端口映射也无法从外网直连,需要穿透方案(Tailscale / frp 等)。
检查自己是否是公网方案 1:命令行
最简单的方案,通过命令行获取:
curl -4 ifconfig.co
- 加 -4 强制获取 IPv4;想看 IPv6 则 curl -6 ifconfig.co。
- 还可以用 curl https://api.ipify.org 或 curl https://ipinfo.io/ip,效果相同。
动态公网 IP:运营商可能在断电、重新拨号、乃至定期轮换时给你新的 IP。若想域名永久指向家里,需要 DDNS 客户端 每隔几分钟检测并更新。
如果不是动态公网IP,需要拨打运营商电话让其开通。动态公网IP是免费的,静态公网IP是要花钱的,大概每个月100块钱。动态公网IP虽然会变,但是配合域名或免费的ddns等方案能够实现和静态公网IP一样的效果。
检查自己是否是公网方案 2:打开路由器设置
也可以打开路由器或光猫的设置界面,一般是 http://192.168.1.1,看互联网的 IPv4 地址。

光猫改成桥接模式
我的宽带光猫并不是桥接模式,在设置的过程中光猫和路由器都要进行nat。但是最终发现如果光猫不是桥接模式的话,双层nat非常麻烦,而且运营商会把端口阉割,导致无法进行内网穿透。需要打电话给联通客服,让其更改,肯定是会给改的。
- 确认宽带接入方式
- 如果 ISP 给的是 PPPoE 用户名 / 密码,把它填到小米路由器的 上网设置 → 拨号上网 (PPPoE)。
- 光猫改成 桥接 (Bridge) 模式,或者找运营商客服把光猫改桥接。
- 路由器重新拨号后,WAN IP 应变成
111.194.140.*这类公网地址。 - 之前做的 外 3333 → 内 22 映射立即生效,外网
ssh -p 3333 user@<新公网 IP>就能连。
优点:只有一层 NAT,最干净;端口映射、 DDNS 都在小米路由器里完成。
缺点:需要光猫支持桥接;部分运营商可能不提供拨号账号,需联系客服申请。
为 Mac mini 分配固定的局域网 IP
1 · 在 Mac mini 上开启 SSH 服务
| 操作 | 说明 |
|---|---|
| 系统设置界面 | > 系统设置 > 通用 > 共享 > 打开 远程登录 (Remote Login),勾选 仅允许下列用户 并添加自己的账号。 |
| 终端命令 | sudo systemsetup -setremotelogin on (和图形界面作用相同) |
检查端口:执行 sudo lsof -iTCP:22 -sTCP:LISTEN,若能看到 sshd 进程,说明 22 端口已监听。
2 · 给 Mac mini 分配固定的局域网 IP
- 进入路由器后台,找到 DHCP 静态绑定 / 地址保留。
- 记录 Mac mini 的 MAC address,将其绑定到如
192.168.1.100。 - 重新获取地址或重启以生效。
固定内网 IP 能确保端口映射永远指向同一台机器。
3 · 在路由器上做端口映射 (Port Forwarding)
| 选项 | 建议 |
|---|---|
| 外部端口 (WAN) | 若 ISP 不屏蔽 22,可直接用 22;否则可改成 2222 或其他高位端口。 |
| 内部 IP | 你的 Mac mini 内网地址,例如 192.168.1.100。 |
| 内部端口 (LAN) | 22 (Mac mini 上 sshd 默认端口)。 |
保存后,路由器会把来自公网 <家庭公网 IP>:外部端口 的流量转发到 Mac mini 的 22 端口。
Mac mini 设置、加固(必做)
-
只用密钥登录
bash 复制编辑 # 在本地电脑生成密钥 ssh-keygen -t ed25519 -C "your_email@example.com" # 把公钥拷到 Mac mini ssh-copy-id -p 22 user@ssh.example.com -
禁用密码登录、限制用户
编辑
/etc/ssh/sshd_config:conf 复制编辑 PermitRootLogin no PasswordAuthentication no AllowUsers your_user_name Port 22 # 如改用 2222,记得同步修改保存后
sudo launchctl stop com.openssh.sshd && sudo launchctl start com.openssh.sshd重载配置。 -
安装防暴力工具
bash 复制编辑 brew install sshguard # fail2ban 的 macOS 替代品 sudo brew services start sshguard -
定期打补丁
softwareupdate --all --install --restart
路由器做端口映射
在路由器里设置,如下图所示。我将 Mac mini 的内部 ip 地址固定设置成了 192.168.31.100,对外部的 2222 端口映射到内部的 ssh 22 端口;同时也设置了范围转发规则列表。
每个路由器页面可能有差距,但是这些功能基本都是有的。

内网穿透
说明:其实这里不是必须的,现在已经有了一个动态的公网 IP 地址,只是在路由器重启等情况下会自动分配新的地址。如果只是个人使用,直接拿公网 IP 地址或者免费的 DDNS 提供商即可。不过免费的 DDNS 国内好用的不多,我也没有实际使用过,走国外服务器代理的话速度太慢且不能自定义,就放弃了。
我是在阿里云官网购买了一个 .top 域名,180 块钱 10 年。之后就是在官网配置记录,比如申请的域名是 abc.top,配置一个主机记录 ai,即可访问 ai.abc.top。配置官方文档已经很详细了。

在配置好后,就可以使用域名访问了,还要解决最后一个问题:这里配置的记录值 IP 是固定的,但是我们是动态公网 IP,是会变化的。所以需要在 mac 上使用 aliyun-ddns 脚本,这个脚本会自动检测 mac 本机的 IP 地址是否变化,如果有变化就更新上面截图中的域名主机记录。
aliyun-ddns 的 github 链接:https://github.com/risfeng/aliyun-ddns-shell。官方 README.md 非常详细了,本文不再赘述。
说明
这样就能够通过域名在任意地点、任意网络访问家里的 mac 了,可以当成一个服务器来使用。