Skip to content

quansitech/headscale-derp-ipset

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 

Repository files navigation

headscale-derp-ipset

监控DNS记录并自动更新Headscale DERP配置的守护程序

功能特性

  • 实时监控指定域名的DNS解析记录
  • 自动检测IPv4/IPv6地址变更
  • 支持正则表达式匹配更新YAML配置文件
  • 自动重启Headscale服务生效变更
  • 本地缓存最后IP记录避免重复更新

安装要求

  • Rust 1.65+ 开发环境
  • systemd服务管理(Linux系统)
  • Headscale 0.22+ 版本

安装步骤

# 克隆项目
git clone https://github.com/your-repo/headscale-derp-ipset.git
cd headscale-derp-ipset

# 编译发布版本
cargo build --release

# 安装到系统路径
sudo cp target/release/headscale-derp-ipset /usr/local/bin/

使用方法

# 基本运行(需sudo权限修改配置)
sudo headscale-derp-ipset -d your-domain.com -c /etc/headscale/config.yaml

# 参数说明:
# -d/--domain   要监控的域名(必须)
# -c/--config   Headscale配置文件路径(默认/etc/headscale/config.yaml)

配置要求

在Headscale配置文件中需要包含以下模板字段:

derp:
  servers:
    your-region:
      ipv4: TEMPLATE_IPV4  # 程序会自动替换这个值
      ipv6: TEMPLATE_IPV6  # 程序会自动替换这个值

系统服务配置(可选)

创建systemd服务文件 /etc/systemd/system/headscale-derp-ipset.service

[Unit]
Description=Headscale DERP IP Monitor
After=network.target

[Service]
Type=simple
ExecStart=/usr/local/bin/headscale-derp-ipset -d your-domain.com
Restart=always
RestartSec=120

[Install]
WantedBy=multi-user.target

启用并启动服务:

sudo systemctl daemon-reload
sudo systemctl enable --now headscale-derp-ipset

依赖项

  • clap v4:命令行参数解析
  • hickory-resolver v0.25:DNS解析
  • tokio v1.0:异步运行时
  • notify v6.0:文件监控
  • serde v1.0:配置序列化

工作原理

  1. 每120秒通过阿里云DNS解析指定域名
  2. 对比当前IP与本地缓存记录(存储在/tmp/headscale-derp-last-ips.json
  3. 当检测到IP变更时:
    • 使用正则表达式更新配置文件
    • 调用systemctl restart headscale重启服务
    • 更新本地缓存记录

日志查看

journalctl -u headscale-derp-ipset -f

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages