少し前に自宅の作業環境をMacからArch linuxに変えたんですが、なぜかAWS Consoleにまともに接続できなくなって結構困っていたのですが、とりあえず解決したようなのでメモがてら残しておきます。
事象
ブラウザでAWS ConsoleにつなぐとすぐにDNSエラーになる(Chromeだと DNS PROBE FINISHED NXDOMAIN といわれる奴)
実際ターミナルでも
$ curl ap-northeast-1.console.aws.amazon.com
curl: (6) Could not resolve host: ap-northeast-1.console.aws.amazon.com
名前解決できてないようで。
ネットワーク関連で特別何かを導入しているわけでもなく、Arch Wikiのsystemd-networkd を参考に systemd-networkd と systemd-resolved を立ち上げてWikiに記載の通りに /etc/nsswitch.confのhostsにresolveを追加したくらいです。
hosts: files mymachines myhostname resolve [!UNAVAIL=return] dns
ちなみにsystemdのバージョンは239.300-2です。
結論
結構いろいろ調べた結果、結論としては /etc/systemd/resolved.conf の [Resolve]セクションのDNSSECを明示的に
DNSSEC=noとしてsystemd-resolvedを再起動したら解決しました。
これでとりあえず名前解決できるようにはなりましたがこのオプションの意味をちゃんと調べてないのでこの対応が良いのかは正直分かりません。
結論までの途中経過
一応、結論に至るまでの途中経過をざっくり記載しておくと
-
/etc/nsswitch.confのhostsからresolveを消すと問題が解消したのでsystemd-resolved関連で何か問題があるっぽいと推測。 -
systemd-resolveコマンド経由でap-northeast-1.console.aws.amazon.comの名前解決ができない。
# systemd-resolved ap-northeast-1.console.aws.amazon.com
ap-northeast-1.console.aws.amazon.com: resolve call failed: DNSSEC validation failed: no-signature
- 上記エラーを元にググって以下のissueを発見
https://github.com/systemd/systemd/issues/9771