web-dev-qa-db-ja.com

ローカルDNSリゾルバーにエントリを追加する方法

Linuxでいくつかのテストを行いたい。 IP:1.2.3.4(想定)のマシンに小さなWebサーバーを配置し、特定のURLに対してDNSクエリが作成された場合:kitty.myweb.comこのIPアドレスを返します。

シナリオ:

  1. ブラウザ(firefoxなど)を開くと、URL kitty.myweb.comを入力すると、ブラウザがDNSクエリを実行します
  2. Kitty.myweb.comのDNSクエリを実行するプログラムを書きたい

各コンピュータには、いくつかのエントリをキャッシュするローカルDNSリゾルバがあることを知っています。 URLを呼び出すと、最初にローカルDNSリゾルバーにクエリが送信されます。対応するエントリがない場合は、LANまたはインターネット上の外部DNSリゾルバーにクエリが送信されます。

私がやりたいのは、ローカルDNSリゾルバーにエントリ(kitty.myweb.com:1.2.3.4)を追加することです。これにより、上記の2つのシナリオでは、外部クエリを実行しなくてもDNS応答が1.2.3.4になります。

Linuxでこれを実行することは可能ですか?これを実行するCコードスニペットはありますか?

19
misteryes

/ etc/hostsを使用してエントリを追加できる場合があります。これは実際にはDNSを使用していませんが、ほとんどのアプリケーションで使用されているLinuxのリゾルバーライブラリに影響します。追加:

1.2.3.4 kitty.myweb.com

別のオプションは、システムに単純なDNSサーバーをインストールすることです。私がよく使うのはdnsmasqです。一部のディストリビューションでは、デフォルトでキャッシングリゾルバーとしてインストールされます。この場合、構成を変更するだけで、次のものが含まれます。

address =/kitty.myweb.com/1.2.3.4

独自のDNSサーバーを実行している場合は、Linuxリゾルバライブラリで使用される/etc/resolv.confを操作する必要があるでしょう。リゾルバーライブラリがローカルDNSサーバーを参照するようにするには、resolv.confにエントリが必要です。

ネームサーバー127.0.0.1

30
Gregor

ローカルホストに単一のDNSエントリを追加する最も簡単な方法は、それをhostsファイルに追加することです。そのファイルの場所はディストリビューションごとに異なる場合がありますが、従来の場所は/etc/hostsであり、おおよそ次のようになります。

 :: 1 localhost localhost.yourdomain.tld 
 127.0.0.1 localhost localhost.yourdomain.tld 
 1.2.3.4 kitty.myweb.com 

これは自分のコンピュータにのみ影響を及ぼし、適切にスケーリングされないことに注意してください。言い換えれば、単純なテストでは問題ありません。多くのコンピューターでホストファイルを編集しようとしないでください。そのためには、適切なDNSエントリが必要です。

9
Hennes