Route 53を使ってDynamic DNS設定(ipv4, ipv6対応)

概要

  • 自宅サーバをIPv6対応するためにはDynamic DNSを設定しないといけないです。
  • zoneサーバはAWS Route 53で運用されているのでCLIで書き換えるスクリプトを書くのが面倒だったので長らく放置していました。
  • ちょっと探してみると、AWS APIをラップしているスクリプトがあったので設定してみました。
Route53の設定

理想の手順

こちらのドキュメントを参考にIAMユーザと、Policyを作成します。

設定ファイルをddns-route53.ymlという名前で作成します。

credentials:
  access_key_id: "YOUR ACCESS KEY"
  secret_access_key: "YOUR SECRET ACCESS KEY"

route53:
  hosted_zone_id: "YOUR ZONE ID XXXXXXXX"
  records_set:
    - name: "teraren.com."
      type: "A"
      ttl: 300
    - name: "teraren.com."
      type: "AAAA"
      ttl: 300

docker-composeのサンプルスクリプトがあるので、docker-compose.ymlというファイル名で作成します。

version: "3.2"

services:
  ddns-route53:
    image: crazymax/ddns-route53:latest
    container_name: ddns-route53
    volumes:
      - "./ddns-route53.yml:/ddns-route53.yml:ro"
    environment:
      - "TZ=Asia/Tokyo"
      - "SCHEDULE=*/30 * * * *"
      - "MAX_RETRIES=3"
      - "LOG_LEVEL=info"
      - "LOG_JSON=false"
      - "LOG_CALLER=false"
    restart: always

そのうえで、docker-compose upを叩けば動きます。

しかしながら、ipv6のアドレスを取得する際にエラーができます。DockerがIPv6に対応していない感じのエラーです。軽くトラブルシュートしてみましたが、ちょっと面倒そうなので諦めました。

> docker-compose up
Starting ddns-route53 ... done
Attaching to ddns-route53
ddns-route53    | Wed, 20 May 2020 09:00:12 JST INF Starting ddns-route53 1.9.1
ddns-route53    | Wed, 20 May 2020 09:00:13 JST INF Current WAN IPv4: 222.230.108.57
ddns-route53    | Wed, 20 May 2020 09:00:13 JST ERR Cannot retrieve WAN IPv6 address error="request failed: Get https://v6.ident.me/: dial tcp [2a01:7e00::f03c:91ff:fe70:xxxx]:443: connect: cannot assign requested address"
ddns-route53    | Wed, 20 May 2020 09:00:13 JST ERR No WAN IPv6 address available to update teraren.com. record
ddns-route53    | Wed, 20 May 2020 09:00:13 JST ERR No WAN IPv6 address available to update *.teraren.com. record
ddns-route53    | Wed, 20 May 2020 09:00:14 JST ERR Cannot update records set error="InvalidInput: Invalid XML ; cvc-complex-type.2.4.b: The content of element 'Change' is not complete. One of '{\"https://route53.amazonaws.com/doc/2013-04-01/\":Action, \"https://route53.amazonaws.com/doc/2013-04-01/\":ResourceRecordSet}' is expected.\n\tstatus code: 400, request id: 6a21c50f-4f3e-4a0b-b588-62ddb890ed66"
ddns-route53    | Wed, 20 May 2020 09:00:14 JST INF 6 records set updated changes={"ChangeInfo":null}
ddns-route53    | Wed, 20 May 2020 09:00:14 JST INF Cron initialized with schedule */30 * * * *
ddns-route53    | Wed, 20 May 2020 09:00:14 JST INF Next run in 29 minutes (2020-05-20 09:30:00 +0900 JST)

しかたがないので、ddns-route53をbinaryでインストールして、daemonとして設定しました。

Work From Homeのこのご時世、IPv6対応してないと遅くて辛いですね。

コメントを残す