3个版本
0.1.2 | 2023年5月7日 |
---|---|
0.1.1 | 2022年4月26日 |
0.1.0 | 2021年12月26日 |
#8 in #ddns
69KB
1.5K SLoC
ddns-rs
ddns-rs
是一款易于使用的程序,可帮助您更新DNS记录。
功能
- 同时支持 IPV4 和 IPV6
- 支持许多DNS提供商
- 支持自动创建DNS记录到提供商
- 支持多种获取IP的方法
- 支持多任务处理
快速启动
创建配置文件 config.toml
如下所示
[base]
task_startup_interval = 5
task_retry_timeout = 10
[tasks]
t1 = {provider = "p1", family = "ipv4", interval = 10, interface = "i1", notifiers = ["n1"]}
[providers]
p1 = {kind = "cloudflare", force = false, ttl = 600, token = "your_cloudflare_token", dns = "www.example.com"}
[interfaces]
i1 = {kind = "stock", name = "eth0"}
[notifiers]
n1 = {kind = "empty"}
在后台运行
.\ddns-rs -vvv -d
作为systemd服务运行
为 ddns-rs
运行创建账户
sudo adduser --system --gecos "DDNS-RS Service" --disabled-password --group --no-create-home ddns
将 ddns-rs
移动到 /usr/bin
然后chown
sudo chown ddns:ddns /usr/bin/ddns-rs
创建 ddns-rs 所需的目录
sudo mkdir /var/log/ddns-rs
sudo chown -R ddns:ddns /var/log/ddns-rs
将您的 config.toml
移动到 /etc/ddns-rs
sudo mkdir /etc/ddns-rs
sudo chown -R ddns:ddns /etc/ddns-rs
创建systemd服务
sudo tee /etc/systemd/system/ddns-rs.service > /dev/null <<EOF
[Unit]
Description=ddns-rs service
Wants=network-online.target
After=local-fs.target network-online.target nss-lookup.target
[Service]
Type=exec
User=ddns
Group=ddns
UMask=007
PrivateTmp=false
ExecStart=/usr/bin/ddns-rs -vvv -C /etc/ddns-rs -L /var/log/ddns-rs
TimeoutStopSec=60
Restart=on-failure
SyslogIdentifier=ddns-rs
[Install]
WantedBy=multi-user.target
EOF
启动 ddns-rs
sudo systemctl daemon-reload
sudo systemctl start ddns-rs.service
启用 ddns-rs
sudo systemctl enable ddns-rs.service
文档
基础
[base]
task_startup_interval = 10
task_retry_timeout = 10
task_startup_interval
字段指定任务启动间隔。
task_retry_timeout
字段指定任务失败时的重试超时。
提供商
ttl
字段支持所有接口,用于自动创建DNS记录。
force
字段支持所有接口,意味着即使目标IP地址已经是我们要更新的值,也会强制更新记录。
kind
字段指示将使用哪个提供商。
目前,我们支持以下提供商
Cloudflare
kind = "cloudflare"
force = false
ttl = 600
token = "your_cloudflare_token"
Godaddy
kind = "godaddy"
force = false
ttl = 600
api_key = "your_cloudflare_api_key"
secret = "your_cloudflare_secret"
Fake
force = false
ttl = 600
kind = "fake"
一个占位符提供商,通常与通知器一起使用。因此,force
字段的含义略有不同,当 force
为 true
时,即使当前值与假提供商缓存的先前值相同,也会发送通知。
这里的 ttl
有不同的含义,它表示存储在 Fake Provider
中的记录将被删除的时间。
接口
目前,我们支持以下接口
Stock
kind = "stock"
name = "you_interface_name"
Peer
kind = "peer"
url_v4 = "url_of_return_ipv4_address"
url_v6 = "url_of_return_ipv6_address"
ipv4_field_path = "regex:<capture_group_number:expression>"
ipv6_field_path = "json:</path_of_ip_field>"
Notifier
目前,我们支持以下通知器:
空
一个占位符通知器,无操作。
kind = "empty"
电子邮件
当IP地址变更时发送电子邮件。
kind = "email"
smtp_host = ""
smtp_port = ""
smtp_starttls = true
smtp_username = ""
smtp_password = ""
subject = ""
from = ""
to = ""
参数from
是可选的,默认与smtp_username相同。
参数subject
是可选的,默认为DDNS-RS 通知
。
Webhook
当IP地址变更时调用您的webhook。
kind = "webhook"
url = ""
authorization_header = ""
local_address = ""
参数local_address
可以是0.0.0.0
或::
以强制使用IP族。
任务
provider = "name_of_provider_in_the_config_file"
family = "ipv4" # ipv4, ipv6, all
interval = 10 # in second
autostart = true # default true
interface = "name_of_interface_in_the_config_file"
notifiers = ["name_of_notifier_in_the_config_file"]
许可证
依赖项
~21–37MB
~682K SLoC