duckdnsについて
概要
- 動的なIPを特定の名前にマッピングさせるサービス
- APIで更新でき、シンプルなのでLinuxなどに組み込みやすい
- 無料で利用できる
- たまにDNSを解決できない時があるなど、ミッションクリティカルな運用には向いていなさそう
サイト
更新例
- tokenが発行されるので管理しておく(***で消してある箇所)
- domainsはduckdnsに登録したドメインの先頭部分
- systemd等に登録することで、自動更新が行える
ipv4 only
$ bash -c "curl \"https://www.duckdns.org/update?domains=gimpeik&token=*****&ip=&verbose=true\"; sleep 300"
ipv4 and ipv6
$ bash -c "v6=`curl -6 ifconfig.io` ; args=\"https://www.duckdns.org/update?domains=gimpeik6&token=*****&ip=&ipv6=\$v6&verbose=true\" && echo \$args; curl \$args; sleep 300"
txtレコードの設定
$ curl "https://www.duckdns.org/update?domains=gimpeik&token=*****&txt=*****&verbose=true"
user権限のサービスを追加する
~/.config/systemd/user/duckdns.service
を以下の内容で作成する
[Unit]
Description=DUCKDNS SERVICE
After=network.target
StartLimitIntervalSec=0
[Service]
Type=simple
Restart=always
RestartSec=5
ExecStart=bash -c "v6=`curl -6 ifconfig.io` ; args=\"https://www.duckdns.org/update?domains=gimpeik6&token=*****&ip=&ipv6=$v6&verbose=true\" && echo $args; curl $args; sleep 300"
[Install]
WantedBy=default.target
サービスを登録する
$ systemctl --user start duckdns
$ systemctl --user enable duckdns # サービスの登録
$ loginctl enable-linger $USER # 未ログインでも実行
$ journalctl --user -u duckdns.service # ログの確認