UNC(コンピュータ名/PC名)で名前解決できない対策

UNC記法を使ってPC名で名前解決をしているようなネットワークで、
たまにうまく名前解決出来ずに接続断となるケースがある。

サーバー(NAS):IZUNA-NIIHAMA が共有しているShareフォルダ に対して
\\IZUNA-NIIHAMA\Share って感じで接続しようとする
 ⇒\\IZUNA-NIIHAMA にアクセスできません
  名前のスペルを確認しても問題がない場合は~ といったエラーが出る

こんな感じ

原因

  1. 指定のPC名が間違っている
    あるあるパターン。綴りをよく確認しよう。上記だと「NIHAMA」になってるとか。
    今回は正しかった。
  2. サーバー(NAS)側の電源が入っていない
    これも怠慢な自分だとあるあるパターン。
    あとは電源設定の変更を忘れててスリープになったとか。
    今回はこれでもなかった。
  3. プライマリDNSの設定がGoogle(8.8.8.8)のみになっている
    「インターネッツ完全に理解した」状態で設定し、
    Google「IZUNA-NIIHAMAなんておらんでw」
    って怒られるやつ。
    今回の設定はプライマリにゲートウェイ、
    セカンダリにGoogle(8.8.8.8)を指定した状態なので
    問題なさそうに見える。
    …が、これが遠因だった。
  4. プライマリDNSの反応が遅すぎてセカンダリに飛ばされた
    今回の現象はこれっぽかった。

設定内容

優先DNSにゲートウェイ、代替DNSにGoogleを指定

名前解決を行う際、優先DNSサーバーから反応が一定時間返ってこないと
代替DNSサーバーも含めて再クエリを投げ、
先に応答が返ってきたやつの結果を使うらしく、
今回の場合はゲートウェイ側の名前解決がウスノロだったがために
代替DNSの「そんなやつおらんでw」の反応が採用された…
っぽい挙動に見える。
けど、前まではちゃんと解決してくれてた気もするんだけどなぁ…

参考文献

優先DNSサーバと代替DNSサーバの動作について(とはいってもXP時代のだから古そう)
https://www.atmarkit.co.jp/ait/articles/0209/18/news002.html

前と挙動が違う?って件については他にも体感してる人がいるっぽい

とりあえずの解決方法

タイムアウトやセカンダリの挙動を制御するようなものは見つけられなかったので、
とりあえずセカンダリDNSの設定を消すしか…?

「代替DNSサーバー」項の設定を消す

これでひとまず名前解決は出来るようになりました。
…推測が合っているのか、対策が正しいのかは微妙ですが…

まあ、プロバイダのDNSが遅い場合はGoogle使いたい、とかいう場合だと
ルータ側のDNSフォワーディングの設定をいじればいけそうな気もするし。
根本解決は後々やっていきたいと思います。