前段时间折腾了在 iOS 上用小火箭 + WireGuard 实现全局代理和内网穿透。由于 iOS 的限制,只能这么干——WireGuard 协议本身并不是 P2P 的,所以 iOS 上的方案通信时必须从中继服务器兜一圈,会稍微增加一些延迟。但 macOS 上没有这个限制,我没有选择原生 WireGuard,而是用了 Tailscale 这个免费工具。它基于 WireGuard 协议,做了自动打洞,打洞失败时会自动走中继节点,拿来做内网穿透再合适不过了。
Mac Tailscale + QuantumultX 实现全局代理和内网穿透
iOS小火箭(Shadowrocket)+ WireGuard 实现代理和内网穿透
iOS 上实现同时使用代理和内网穿透的需求其实很常见,尤其是当你需要在外访问家里设备(如 NAS)时。 但是很多的工具(例如:tailscale,WireGuard)基本上只能满足其中一个需求,要么是全局代理,要么是内网穿透,很难同时兼顾,它们基本上都是靠VPNExtension,iOS中只能开一个。 小火箭(Shadowrocket)是 iOS 平台上一款相当不错的代理工具,协议支持全面,价格也很合适。这里我记录一下使用它实现 代理 + 内网穿透 的完整部署步骤,最终实现 “出国”+“回家” 两个功能。 内网穿透,我这里选择的协议是WireGuard。
sandbox-exec Policy 编写指南:基本结构与规则
适用场景:sandbox-exec -f xxx.sb
一、Policy 基本结构
SBPL 基于 Scheme 语法(Lisp 变体),采用 S-Expression(S 表达式)。
1. 最小结构
一个最基础的策略文件通常包含版本声明和默认行为:
(version 1)
(allow default) ; 默认允许所有操作
(deny file-read* (subpath "/Users/lihu/.ssh")) ; 显式拒绝读取 .ssh 目录2. 语法组成
单条规则的基本格式如下:
OpenClaw 本地沙盒化运行(macOS)实施笔记
本文记录如何在 不创建新用户 的前提下,用
sandbox-exec(Seatbelt)对 OpenClaw(AI Agent)进行本地沙盒化运行。
一、背景与目标
运行 OpenClaw(AI Agent)存在潜在安全风险:
- 可能被 Prompt 注入执行危险命令
- 可能访问 SSH Key、Keychain 等私密数据
- 可能误删/篡改系统文件
- 可能污染 Homebrew 工具链
目标是在 不创建新用户 的前提下,把 OpenClaw 运行在一个 受限沙盒环境 中,实现:
macOS Tahoe 26.x SSH 安全加固笔记
最近 Claude Bot 比较火,搞了个 Mac mini 来玩玩。下面是把 Mac mini 当作服务器的一些安全设置,主要是 SSH 方面的配置。
适用版本:macOS Tahoe / Sonoma / Ventura 及以后
架构特点:launchd Socket Activation(不再由 sshd 直接监听端口)
加固目标:
- 仅允许 SSH 公钥登录
- 禁用密码/交互认证
- 使用自定义端口,关闭默认 22
- 最小化网络暴露面
- 可验证、可回滚
一、背景说明(重要)
从 Ventura 开始,macOS 的 SSH 端口由 launchd 监听:
WOL网络唤醒设置
BIOS/UEFI 层级配置
这是所有设置的前提。如果硬件层关闭,系统层做再多努力也无效。
- 进入 BIOS:通常是开机连续按
Del或F2。 - 电源管理设置 (Power Management):
- Wake On LAN 或 Resume By PCI-E Device:设为 Enabled。
- ErP Ready:设为 Disabled(这是关键!ErP 开启会将待机功耗降至 0.5W 以下,直接切断网卡电源)。
- Deep Sleep:设为 Disabled。
操作系统设置
、 Windows 操作系统配置
Windows 默认倾向于在关机时“彻底休眠”,这有时会干扰网卡状态。
Wake-on-LAN (WOL) 技术深度解析:从协议到驱动的完整实现
一、 核心原理:协议栈与硬件实现
WOL 是一种基于 OSI 模型第二层(数据链路层) 的硬件唤醒技术,由 AMD 和 HP 于 1997 年提出,并在 IEEE 802.3 标准中得到规范。
1. Magic Packet 数据结构
WOL 的核心载荷是一个 102 字节的特殊以太网帧,其结构定义如下:
+----------------+------------------+
| 6 bytes 0xFF | Synchronization |
+----------------+------------------+
| 96 bytes | Target MAC × 16 |
+----------------+------------------+- 同步流 (Sync Stream):6 个字节的
0xFF(FF:FF:FF:FF:FF:FF),作为魔术包识别标记。 - 目标载荷:目标 NIC 的 MAC 地址连续重复 16 次(16 × 6 = 96 字节)。
- 封装协议:
- 标准实现使用 UDP/7(Echo Protocol)或 UDP/9(Discard Protocol)
- 也可以使用 EtherType 0x0842 直接封装在以太网帧中
- 关键点:NIC 的物理层(PHY)芯片通过硬件模式匹配 MAC 序列,不依赖 IP 层解析
2. NIC 的待机监听机制
即使系统处于 ACPI S5 状态(Soft Off),主板的 ATX 电源仍会通过 +5V Standby(紫色线) 为 NIC 提供约 2-3W 的待机功耗。此时 NIC 进入 PCI Power State D3hot/D3cold,仅保留以下组件活跃:
Xcode 注释标签(Annotation Tags)与最佳实践指南
本指南适用于 Swift / SwiftUI / macOS/iOS 应用开发,帮助你在工程中正确、优雅、专业地使用 Xcode 支持的注释标签,提高代码可读性、可维护性和团队协作效率。
1. Xcode 支持的注解标签一览表
以下标签是 Xcode 原生支持 的,它们在导航栏、Issue Navigator 中具有特殊行为。
| 注解标签 | Xcode 行为 | 用途 | 官方支持 |
|---|---|---|---|
// MARK: |
在导航栏创建分组 Section | 组织代码结构 | ✔ 是 |
// MARK: - |
分组 + 分隔线 | 更强的视觉分割 | ✔ 是 |
// TODO: |
出现在 Issue Navigator → Todos | 待办事项 | ✔ 是 |
// FIXME: |
出现在 Issue Navigator → Todos | 待修复的问题 | ✔ 是 |
// WARNING: |
构建时出现黄色警告 ⚠️ | 强调重要问题 | ✔ 是 |
// ERROR: |
构建时报红色错误 ❌ | 阻止构建(调试用) | ✔ 是 |
// NOTE: |
普通注释,无特殊行为 | 补充说明 | ✔ 是 |
/// |
文档注释(Quick Help 支持) | 类型/方法/属性文档 | ✔ 是 |
/** ... */ |
多行文档注释 | 长段落说明 | ✔ 是 |
2. 注解标签详解
2.1 // MARK: —— 代码分区(最常用)
用于将大型 Swift 文件分块,让导航结构更清晰。