先日、LambdaからIPv6でアクセスできるようにする で書いたとおり、IPv4アドレス課金を避けるためにLightsailをIPv6 Onlyのインスタンスにしていました。 LightsailをIPv6/IPv4デュアルスタックからIPv6 Onlyにするには、一度停止した上でスナップショットを作成し、スナップショットから新しいインスタンスを作るだけで簡単にできました。
が、数日後Let's Encryptで証明書が更新できていないことに気がつきます。
確認してみると、Let's Encrypt自体はIPv6で使えるものの、Route53のAPIの呼び出しに失敗していることがわかりました。(実際に route53.amazonaws.com
をnslookupで AAAA レコードを引くと No Answerになります)
対応としては、いくつか考えられます。
- どこかで証明書を別途発行してダウンロードしてくる
- 例えば Go言語製Let's Encryptクライアントlegoをライブラリとして使う のような方法でダウンロードしておく
- IPv6オンリーのLightsailから、IPv4に疎通できる仕組みを作る
うちは代々グローバルIPを持たない環境が続いていたため、リモートアクセスの中継拠点としてさくらのVPS上にVPNを構築していました。 LightsailからのIPv4トラフィックは、このVPNを経由してアクセスするように設定することでRoute53 APIを直接呼び出せるようにしました。
IPv6に進んでいくのは良いことなのですが、まだ課題が多そうです。