少し前に自宅の作業環境を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