web-dev-qa-db-ja.com

DNSの問題;ローカル(プライベートIP)ホストのクエリにdomain.tldを追加する

何らかの理由で、名前を使用してローカルホストにアクセスしようとすると、正しく解決されません。

# ping server.domain.tld
PING server.domain.tld.domain.tld (###.###.###.###) 56(84) bytes of data.

明らかに、これはsshとホスト名に依存するスクリプトを壊します。パブリックIPアドレスを持つそのドメイン上のものはすべて正しく解決されます。

これをトラブルシューティングするための次のステップは何ですか?グーグルは私が考えた検索用語に似たものを何も見つけていないので、どんな助けもありがたいです。

違いがあるかどうかはわかりませんが、サーバーだけにpingを実行しようとすると、次のようになります(これは当然のことですが、私は信じています)。

# ping server
ping: unknown Host server
1
alex

セットアップしたいようです スプリットホライズンDNS 。つまり、サーバーのプライベートIPアドレスと名前を「認識」するDNSサーバーが必要です。サーバーは、このDNSサーバーを使用して、公開DNSサーバーが解決するパブリックアドレスではなく、プライベートIPアドレスに名前を解決できます。

使用しているDNSサーバーソフトウェアについては言及していません(または、独自のDNSをホストしている場合でも)。 BINDには、必要なことを実行できる views 機能があります。他のDNSサーバーソフトウェアにも同様の機能がある可能性があります(私はLinuxでBINDのみを使用しているため、経験から話すことはできません)。

ドメインのDNSをホストしておらず、DNSプロバイダーにビューを使用させることができない場合は、NATデバイスの背後に独自のDNSサーバーをセットアップし、サーバーを次のように構成することを検討してください。これを使って。

ドメイン内にNATデバイスの外部にある名前のホストがある場合は、内部DNSサーバー(またはビュー)がこれらのホストのパブリックIPアドレスを正しく返すことを確認してください。

編集:

@BillThorが言うように、サーバーで修飾されていない名前をドメイン内のレコードに解決するには、サーバーのsearch domain.tld/etc/resolv.conf行を追加する必要があります。

3
Evan Anderson

domain.tldの検索リストに/etc/resolv.confを追加します。最初にチェックされるように、最初にドメインを用意する必要があります。ドメインがexample.comの場合、次の検索リストが適切な場合があります。

search example.com com net org

リゾルバーをテストするには、次のようなコマンドを使用します。

getent hosts server

これにより、リゾルバーがサーバーを解決できる場合、サーバーのIPとFQDNが返されます。

2
BillThor