1
1

More than 5 years have passed since last update.

Debian系でnslookupでは名前解決できるのにブラウザ等では名前解決できない問題

Last updated at Posted at 2018-09-06

かなりハマったのでメモ

結論

nsswitch.confを修正しよう!

いきさつ

開発用に新しくサーバーを設置することになった。

  • VMware ESXi5.5上にDebian9をインストール
  • マシンには「192.168.1.28」のipを固定する

ローカルネットワーク上にDNSサーバー(192.168.1.25)が設置してあり、そちらのDNSを優先で参照するように設定したい。
なので/etc/network/interfacesにこのように記述した。

iface ens32 inet static
    address 192.168.1.28
    netmask 255.255.255.0
    gateway 192.168.1.10
    dns-nameservers 192.168.1.25

これでよし。networkingを再起動してnslookupで確認する。大丈夫みたい。
念のためブラウザでも確認をしてみる。ページ読み込みエラー。。。ぬっ

resolv.confも正しく設定されているし、digもnslookupも問題ないぞ。どういうことだdebian!

解決

/etc/hostsあたりが悪いんじゃないかなぁなどと調べていると
【Ubuntu】「sudo: ホストxxxの名前解決ができません」が治らない…
の記事内にて「nsswitch.conf」というキーワードを発見。

hostsとnsswitchについてはDNS系備忘録に分かりやすく書かれていた。

注意事項としては、nsswitch.confを変更しても、nslookupやhost、digの動作はかわらない(らしい)ということ。

まんまこの状況じゃないか。

nsswitch.conf

/etc/nsswitch.confのソースを見てみる。

/etc/nsswitch.conf
...
hosts:    files mdns4_minimal [NOTFOUND=return] dns myhostname
...

nsswitchでは右に記述されている要素を左から順に評価していくようだ。
この記述だと
files -> mDNS -> NOTFOUNDならreturn
というフローになる。これDNSまで届かないのでは・・・?

mDNSとは初めて聞いた単語だ。

mDNSを使えるノードはマルチキャストアドレス(224.0.0.251)のUDP, ポート5353にDNSのクエリをなげ、対応するマシンがいればそのノードが返事を返す

というものらしい。疲労困憊なのでこの辺は時間があったら詳しく調べよう。

mDNSは今回使用しないので以下のように書き換えた。

/etc/nsswitch.conf
...
hosts:    files myhostname dns 
...

networkingを再起動、ブラウザ上でちゃんと名前解決できた。
なんだかフラフラした解決方法だったが、動いたからまぁいいや。
色々と曖昧な内容になってしまったので、ここ間違ってるよ、みたいな箇所があればご指摘いただけると幸いです。

参考文献

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1