vmware謹製のdockerホスト(photonOS)、ubuntu系では、名前解決時に直接DNSサーバへ問い合わせするのではなく、systemd-resolvedがきキャッシュしながら問い合わせをしている。
ハマったこと
前提
- homegw配下に複数の機器があるので、DHCPのMAC固定で固定IP化し、ローカルドメインなDNS登録している。(例:homegw.myhome, core-router.myhome, syslogsv.myhome)。
- DNSサーバはコアルータのDNS機能を利用。
- 内部でlinuxなサーバ(photonOS)が複数台あって、うち一台のログサーバにsyslog転送をしている。core-router, photonsv --> syslogsv
- photonsvではrsyslogdを使ってログ転送しているが、転送先はFQDN(syslogsv.myhome)を指定している。
遭遇した事象
photonsvからsyslogsvのIPアドレスが解決できない事象に遭遇。アドレス解決できなければ、当然ログ転送ができないので困った。
- photonsvで
dig syslogsv.myhome
すると、systemd-resolvedが応答しているが「アドレス解決できない」 - photonsvで
dig syslogsv.myhome @core-router.hrsk
として、systemd-resolvedを経由しないと「アドレス解決ができる」。
DNSのキャッシュをクリアしたら動いた
これが原因だったのかは不明だけど、systemd-resolvedのキャッシュをクリアしたらdig syslogsv.myhome
で名前解決ができた。
systemd-resolvedのメモ
たまにした遭遇しないそうなので、次回のために systemd-resolved周りのコマンドメモを残しておく。
用法 | コマンド |
---|---|
権威DNSの設定 | /etc/systemd/resolved.conf |
DNS=w.x.y.z | |
ステータス | resolvectl status |
問い合わせ | resolvectl query HOSTNAME or ADDRESS |
キャッシュクリア | resolvectl flush-caches |
キャッシュクリア mac-osの時 |
sudo killall -HUP mDNSResponder |