Fedora 20 での DNS 解決の問題

Fedora 20 での DNS 解決の問題

新しく構築した Fedora 20 サーバーをネットワークに接続しました。これは VirtualBox ホストで実行されている仮想サーバーです。すべて正常に動作しているようですが、名前解決に問題があります。

(この時点で、名前解決は、ネットワーク上の他のすべてのマシンで適切に機能する別のハードウェア上の Windows サーバーによって提供されることを述べておく必要があります。)

コマンドラインから、 のような外部ホストを解決できますunix.stackexchange.com。これまで試した他のすべての外部ホストと同様に、問題なく解決して ping を実行できます。

しかし、私のローカル ネットワーク ( と呼ぶことにしますxyz.local) は異なります。私の F20 マシンのネットワーク インターフェイスDOMAIN=xyx.localには、ネットワーク スクリプト (完全なスクリプトは下記) があります。コマンド ラインからは、たとえば は解決できますserver-01が、 は解決できませんserver-01.xyz.local

正規名が長い形式であっても、エイリアスを短い形式で解決できます。たとえば、 はping mysqlエイリアス に正常に解決されますlinux-04.xyz.localが、 も も解決できmysql.xyz.localませんlinux-04.xyz.local

明らかに何か見逃しています。何があるのか​​誰か教えてくれませんか?

/etc/hostsには127.0.0.1の標準のlocalhostエントリのみが含まれています。

/etc/resolv.conf は次のとおりです。

#Generated by Network Manager
search xyz.local
nameserver 192.168.xxx.xxx

私のインターフェーススクリプトは

TYPE=Ethernet
BOOTPROTO=none
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
NAME="Wired connection 1"
UUID=<uuid>
ONBOOT=yes
IPADDR0=192.168.xxx.xxx
PREFIX0=24
GATEWAY0=192.168.xxx.xxx
DNS1=192.168.xxx.xxx
HWADDR=<mac>
DOMAIN=xyz.local
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes

答え1

問題の一部は、NetworkManager によって検索パスが自動生成されることに起因している可能性があります。

search xyz.local

この行は実際には次のようになります:

search xyz.local.

最後のピリオドは、DNS リゾルバに停止を指示するため重要です。これにより、次のようなことは起こりません。

mysql.xyz.local.xyz.local

これを確認するには、一時的に手動でピリオドを追加してホスト名を解決してみてください。

$ nslookup mysql.xyz.local.

このドメイン全体を解決する

この問題を解決するには、DHCP サーバー上のドメインの定義を変更して、ドメインを として提供するようにする必要がありますxyz.local.

設定ファイル

ホスト名を解決するために使用される方法は、ファイルによって制御されます/etc/nsswitch.conf。NSS という表記は Name Service Switch の略で、詳細についてはマニュアル ページを参照してくださいman nss

以下は、ホスト名の解決方法を制御するファイルからの行です。

$ grep ^hosts /etc/nsswitch.conf
hosts:      files dns mdns4_minimal

まずローカル ファイル を参照し/etc/hosts、次に DNS を照会します。

答え2

この問題は、nsswitch.conf ファイル内のキーワード「mdns4_minimal」が原因で発生します。このキーワードは、local で終わるものはすべて mdns を使用してクエリする必要があることをリゾルバに指示します。このキーワード (および通常は角括弧で示される追加オプション) を削除するだけで十分です。

詳細は私の役職

nslookup がすべてを解決する理由は、nsswitch.conf を参照せず、/etc/resolv.conf を直接使用するためです。一方、ping は、最初に nsswitch.conf を参照し、そこに記述されている内容を使用して名前を解決するリゾルバに依存します。

関連情報