在 macOS 上自动重解析 wireguard 中的域名

当我们使用wireguard-tools时,wg-quick配置文件中的Endpoint字段可以配置一个域名。但这个域名只会在wg-quick up的时候解析一次,如果域名指向的地址经常变化,那么我们需要一个机制来定期去重新解析配置中的域名。

Linux 上的解决方案

实际上wireguard-tools官方已经提供了一个在Linux上解决前述问题的样例,只需要借助crontab即可完成定期刷新,以配置wg0为例:

1
2
# crontab -l
*/2 * * * * /path/to/reresolve-dns.sh wg0

有几个配置就添加几个crontab任务即可。

macOS 方案

仿照官方的脚本,我制作了一个Homebrew formula来更方便地刷新所有本机正在运行的wireguard配置中的域名解析,以下步骤需要先安装Homebrewhttps://brew.sh/):

1
2
brew install icpz/collection/reresolve-wireguard-dns
sudo brew services start icpz/collection/reresolve-wireguard-dns

执行过后brew-services会自动添加launchd配置来定期检查并重新解析本机上所有正在运行的wireguard