Alpine Linux 3.18でDNS over TCPに対応するようになっていた

5/9にリリースされたAlpine Linux 3.18ではmusl libc 1.2.4が含まれており、DNS over TCPに対応するようになった。

www.theregister.com

これにより、512バイトを超えるDNS応答でも問題なく利用できるようになり、Alpine Linuxを大規模な環境でも利用しやすくなった。

これまでの話

そもそもDNSの名前解決では昔からUDPを利用しており、サイズも512バイトが上限と決められていたが、その後通信サイズの増加に伴い512バイトを超える通信はTCPで再度通信し直すフォールバック(DNS over TCP)をしたり、UDPで512バイトより大きい結果を返せるような仕様としてEDNS0という拡張が生まれた。

しかしAlpine Linuxはそのどちらにも対応しておらず、結果として512バイトを超える応答を利用することができない状態になっていた。

このことはAWSのドキュメントにも書いてあり、20ノード近くある場合は繋がらなくなるのでその他のOSを使用することをお勧めしていた。

Alpine Linux limits DNS response size to 512 bytes. If you try to connect to your OpenSearch Service domain from Alpine Linux, DNS resolution can fail if the domain is in a VPC and has more than 20 nodes. If your domain is in a VPC, we recommend using other Linux distributions, such as Debian, Ubuntu, CentOS, Red Hat Enterprise Linux, or Amazon Linux 2, to connect to it.

おわり

Alpine Linux 3.18が出たものの、それをベースイメージとするDockerイメージでまだ新しいのが出ていないということはあるので注意が必要。 例えばAmazon Corretoのイメージはまだ対応しておらず、今のところは7/18リリース目標とのこと。

github.com