はじめに
最近自宅サーバを立てました。そんでドメインを取得し、外部からアクセスできるようにしたのでDDNS作りました。 本当はプロバイダの固定IPが使えればいいのですが、あいにく個人向けに固定IPのサービスをしてないらしいです(あっても金払いたくないし) 検索した感じいろんな人がroute53のDDNSを実現しているのでためになるか分かりませんが、参考にどうぞ
また、この記事ではすでに手動でroute53のレコードを設定していて、ドメインでサーバにアクセスできている状態から始めます。 それ以外の設定は扱いません。
環境
- Ubuntu 24.04.2 LTS
- aws-cli/2.27.25
- jq-1.7
作り方
本当はライブラリとかサービスを使ってパパっと終わらせたかったのですが、いろいろうまくいかなかったので結局オンプレで
- IPアドレスを取得
- AWS CLIで書き換え
- cronで定期実行
という風に落ち着きました。
IPアドレスはcurl -s inet-ip.infoで取得できます。これが肝です。どうやらオープンソースのWebサービスらしいですな
余談、aws-r53という書き換えが簡単にできるよ~みたいなラッパースクリプトを試したのですが、僕の環境ではうまくいきませんでした。 little-forest/aws-r53
IAMユーザの設定
route53のレコードを書き換えるためのポリシーです。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "route53:ChangeResourceRecordSets" ], "Resource": "*" } ]}アタッチしたユーザをaws configureでCLIと紐づけます。
bashを置く
jqを事前にインストールしておきます。
そしたらbashとひな形のJSONを同じディレクトリにコピペなりクローンなりしてください
置いたらddns.shのHOSTED_ZONE_IDを該当のIDに置き換えてください
cronの設定
そんなに頻繁にグローバルIPは変わるものじゃないので5分間隔で実行します。1時間とかでもいいと思う
*/5 * * * * your/bash/path/ddns.sh >> /logging/path/ddns.log 2>&1ロギングはあってもなくてもいいよ~、物量少ないし
おわり
初回はcronのログ見れば正常に実行されているかどうかわかると思います!以上!
テスト勉強しないとな。。